一、目的
结合8255A的使用,说明翻转法行列式键盘的运用及七段数码管的工作原理,学习8255A并行接口芯片的工作原理,了解8255A的工作方式,掌握8255A在各种工作方式下的编程方法。
二、原理
对于8255A的三个并行端口,选用端口C的低4位和高4位分别接4*4键盘的行列信号线,选用端口B接LED,选用端口A驱动数码管,数码管采用静态共阴极接法。实现当有一个按键按下时,LED和数码管均能够显示其按键值。
相应程序代码如下:
IO3 EQU 30H
CODE SEGMENT 'CODE';
ASSUME CS:CODE,DS:CODE
MAIN PROC FAR
START: MOV AX,CODE
MOV DS,AX
L: MOV AL,10000001B;
MOV DX,IO3+6
OUT DX,AL
MOV DX,IO3+4
MOV AL,00 ;高4位送0
OUT DX,AL
NOKEY: IN AL,DX
AND AL,0FH
CMP AL,0FH
JZ NOKEY
CALL DELAY10
IN AL,DX
MOV BL,0
MOV CX,4
LP1: SHR AL,1
JNC LP2
INC BL
LOOP LP1
LP2: MOV AL,10001000B
MOV DX,IO3+6
OUT DX,AL
MOV DX,IO3+4
MOV AL,00 ;低4位送0
OUT DX,AL
IN AL,DX
AND AL,0F0H
CMP AL,0F0H
JZ L ;出错重来
MOV BH,0
MOV CX,4
LP3: SHL AL,1
JNC LP4
INC BH
LOOP LP3
LP4: MOV AX,4
MUL BH
ADD AL,BL
MOV DX,IO3+2
OUT DX,AL
MOV BX,OFFSET SEGDATA
XLAT
MOV DX,IO3
OUT DX,AL
MOV CX,0
J1: LOOP J1
JMP L
RET
MAIN ENDP
DELAY10 PROC
MOV CX,882
LOOP $
RET
DELAY10 ENDP
SEGDATA DB 4FH,5BH,06H,3FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H
CODE ENDS;代码段结束
END START
三、元件清单
元件名称 | 所属类 | 所属子类 | 功能说明 |
8086 | Microprocessor ICs | I86 Family | 微处理器 |
74LS02 | TTL 74LS series | Gate & Inverters | 与非门 |
74LS373 | TTL 74LS series | Flip-Flops & Latches | 三态输出的八D型透明锁存器 |
74154 | TTL 74 series | Decoders | 4-16译码器 |
74273 | TTL 74 series | Flip-Flops & Latches | 八D型触发器(带清除端) |
4078 | CMOS 4000 series | Gate&Inverts | 8输入与非门 |
8255A | Microprocessor ICs | Peripherals | 可编程24位接口 |
BUTTON | Switch&Relays | Switch | 按钮 |
LED-GREEN | Optoelectrics | LEDS | 绿色LED发光管 |
NOT | Simulator Primitives | Gates | 非门 |
7SEG-COM-CATHOD | OPtoelectronics | 7-Segment Displays | 红色共阴极七段数码管 |
RES | Resistors | 电阻 |
四、仿真
1.电路原理图
2.编写程序并编译
点击菜单栏下的“源代码”-“设置代码生成工具”,设置代码生成规则,完成代码编写,编译成功后通过菜单栏下“源代码”-“添加/删除源代码文件”将代码文件所生成的.HEX文件添加加到8086中,实现电路仿真。
3.仿真结果及分析
对于8255A的三个并行端口,选用端口C的低4位和高4位分别接4*4键盘的行列信号线,选用端口B接LED,选用端口A驱动数码管,数码管采用静态共阴极接法。实现当有一个按键按下时,LED和数码管均能够显示其按键值。仿真效果如下图: