结合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 |
电阻 |
点击菜单栏下的“源代码”-“设置代码生成工具”,设置代码生成规则,完成代码编写,编译成功后通过菜单栏下“源代码”-“添加/删除源代码文件”将代码文件所生成的.HEX文件添加加到8086中,实现电路仿真。
对于8255A的三个并行端口,选用端口C的低4位和高4位分别接4*4键盘的行列信号线,选用端口B接LED,选用端口A驱动数码管,数码管采用静态共阴极接法。实现当有一个按键按下时,LED和数码管均能够显示其按键值。仿真效果如下图: