一、设计基本原理说明及系统资源分配
1. 工作原理说明
本次设计采用8255A工作方式0,其A口充当打印机数据线,C口的PC0接打印机选通信号线,C口的PC4接打印机“忙”线BUSY,B口不用,8255A的初始化可以通过74LS138译码器来实现。
为了用键盘来设定打印容,可以先定义一个数据段,然后调用DOS的1号功能完成数据存储。
在满足一定的条件下,CPU现将打印容依次送到8255A,然后再送到打印机打印,数据全部传送并打印完毕后退出程序。
2. 资源分配
⑴A端口作为传输字符的通道,工作于方式0,输出方式。
⑵B端口不用。
⑶C口的PC0接打印机选通信号线,PC4接打印机“忙”线BUSY。
⑷设CPU为8086,8255A的端口地址为:
A端口: 00D0H C端口: 00D4H
B端口: 00D2H 控制口:00D6H
二、程序流程图
三、设计方案
采用查询方式传输数据实现对打印机控制:(自定义打印字符串)参考程序:
PRT_DATA EQU 5FFFH
PRT_STRO EQU P1.5
PRT_BUSY EQU P1.7
ORG 0000H
LJMP START
ORG 0040H
START: MOV SP,#60H
SETB PRT_STRO
SETB PRT_BUSY
MOV DPTR,#PRT_TAB
MOV R0, #00H
PR_STR: MOV A, R0
MOVC A,A+DPTR
CJNE A,#0FFH,PRINT
SJMP $
PRINT:
LCALL PRT_CHAR
INC R0
AJMP PR_STR
PRT_CHAR:
PUSH PSW
PUSH DPH
PUSH DPL
SETB PRT_BUSY
NOP
JB PRT_BUSY,$
MOV DPTR,#PRT_DATA
MOVX DPTR,A
SETB PRT_STRO
CLR PRT_STRO
NOP
NOP
SETB PRT_STRO
POP DPL
POP DPH
POP PSW
RET
PRT_TA DB 0AH,27,1BH,38H,1,0AH,0AH, 0DH,0FFH
PRT_TAB DB 0DH,31H,32H,33H,34H,35H,36H,37H,38H,39H,0AH,0FFH END
四、硬件电路总体设计
硬件电路总体设计见附录A
五、软件程序设计
1. 软件设计思路
应用系统中的应用软件是根据系统功能要求设计的,应该可靠地
实现系统的各种功能。
一个优秀的应用系统的软件应具有下列特点:(1)根据软件功能要求,将系统软件分成若干个相对独立的部分。
设计出软件的总体结构,使其结构清晰、简捷、流程合理。
(2)要树立结构化程序设计风格,各功能程序实现模块化、子程序化。
既便于调试、,又便于移植、修正。
(3)建立正确的数学模型。
即根据功能要求,描绘出各个输入和输出变量之间的数学关系,它是关系到系统性能好坏的重要因素。
(4)为提高软件设计的总体效率,以简明、直观的方法对任务进行描述,在编写应用软件之前,应绘制出程序流程图。
(5)要合理分配系统资源,包括ROM、RAM、定时器/计数器、中断资源等。
(6)注意在程序的有关位置处写上功能注释,提高程序的可读性。
2. 软件设计流程图
打印机程序控制流程图如图3所示
图3 软件设计流程图3. 软件设计源程序
软件设计源程序见附录B
参考文献
[1] 朝青. 单片机原理及接口技术. :航空航天大学,2006
[2] 华光,大钦. 电子技术基础(模拟部分). :高等教育,1999
[3] 康华光,邹寿彬. 电子技术基础(数字部分). :高等教育,2000
[4] 何立民. 单片机应用技术选编. :航空航天大学,2000
[5] 何立民.单片机应用系统设计系统配置与接口技术. :航空航天大学,1990
[6] 广弟. 单片机基础. :航空航天大学,1994
[7] 伟,杰. 单片机原理及应用. :机械工业,2005
[8] 汉才. 单片机原理与接口技术. :清华大学,1996
附录A:硬件原理图
附录B:8255控制微型打印机的软件源程序CODE_K1 EQU 01H
CODE_K2 EQU 02H CODE_K3 EQU 03H CODE_K4 EQU 04H IRCOM EQU 30H
COM EQU 32H
IRIN EQU P3.2
WLED EQU P1.2
ORG 0000H
JMP BEGIN
ORG 0030H
BEGIN: ACALL BZ SETB IRIN
ACALL LED_BL
LOOP : MOV R0,#IRCOM; ACALL IR_IN
ACALL OP
JMP LOOP
DELAY: MOV R6,#50
D1: MOV R7,#100
DJNZ R7,$
DJNZ R6,D1
DJNZ R5,DELAY
RET
LED_BL: MOV R4,#4
LE1: CPL WLED
MOV R5,#10
ACALL DELAY
DJNZ R4,LE1
RET
BZ: MOV R6,#0
B1: ACALL DE
DJNZ R6,B1
MOV R5,#5
ACALL DELAY
RET
DE: MOV R7,#180
DE1: NOP
DJNZ R7,DE1
RET
DEL: MOV R5,#1;0.1 MS 延时
DELAY1: MOV R6,#1
E1: MOV R7,#17
E2: DJNZ R7,E2;(17*2*2+2*2+1*2+2*2)*2 DJNZ R6,E1
DJNZ R5,DELAY1;( RET
OP: MOV A,COM CJNE A,#CODE_K1,A1 ACALL MAIN
RET
A1: MOV A,COM CJNE A,#CODE_K2,A2 ACALL MAIN
ACALL MAIN
RET
A2: MOV A,COM CJNE A,#CODE_K3,A3 ACALL MAIN
ACALL MAIN
ACALL MAIN
RET
A3: MOV A,COM CJNE A,#CODE_K4,A4 ACALL MAIN
ACALL MAIN
ACALL MAIN
RET
A4: RET
IR_IN:
I1: JNB IRIN,I2 JMP I1
I2: MOV R4,#6 I20: ACALL DEL DJNZ R4,I20
JB IRIN,I1 CLR WLED
I21: JB IRIN,I3 ACALL DEL
JMP I21
I3: MOV R3,#0 LL: JNB IRIN,I4 ACALL DEL
JMP LL
I4: JB IRIN,I5 ACALL DEL
JMP I4
I5: MOV R2,#0
JB IRIN,N1
MOV A,#08
CLR C
SUBB A,R2
MOV A,R0
RRC A
MOV R0,A
INC R3
CJNE R3,#8,LL
MOV R3,#0
INC R0
CJNE R0,#34H,LL
JMP OK
N1: INC R2
CJNE R2,#30,L1
OK: SETB WLED
RET
MAIN: CLR P1.3
MOV DPTR,#0ff7fh;
MOV A,#83H;
MOVX DPTR,A
MOV R6 ,#0EH;
MOV R0,#0BH; AA:
MOV A,R6
MOVC A,A+PC;
LCALL AEE
INC R6
DJNZ R0,AA;
LCALL HWH
LCALL CR; CC: RET
TAB: DB 2AH,54H,45H,43H,48H,53H,48H,49H,4EH,45H,2AH AEE: JB P1.0,AEE
MOV DPTR, #0ff7cH
MOVX DPTR,A
CLR P1.1
LCALL YS
SETB P1.1
RET
HWH: MOV A,#0AH
LCALL AEE
RET
YS: MOV R7,#1eH
MOV R5,#00H
MY1: DJNZ R5,MY1 DJNZ R7,MY1 RET
CR: MOV A,#0DH LCALL AEE RET
DELL: MOV R5,#00H DELAYY: MOV R6,#00 E11: MOV R7,#01H
E22: DJNZ R7,E22 DJNZ R6,E11
DJNZ R5,DELAYY RET
END
END。