贵州大学实验报告纸
实验九8255控制键盘与显示实验
一、实验目的
1.掌握8255输入、输出的编程方法。
2.掌握阵列键盘和数码管动态扫描显示的控制方法。
二、实验内容
1、用8255可编程并行口会、做一个键盘、显示扫描实验,把按键输入的键值,显示
在8255控制的七段数码管上。
8255PB口做键盘输入线,PC口做显示扫描线,PA
口做显示数据线。
2、键入值后在数码管显示按键的ASCII.
3、并且要求字母键可以实现大小写转换(用F键做切换)
三、实验要求
根据实验内容编写一个程序,并在实验仪上调试和验证。
四、实验说明和电路原理图
本实验需要用到CPU模块(F3区)、8255模块(C6区)、8279键盘与显示模块(E7区)。
8255键盘与显示电路原理图参见图9-1A、图9-1B,及实验四的图4-1。
CS_8255接200H,则8255 状态/命令口地址为203H,PA口地址为8000H,PB口地址为201H、PC口地址为202H。
图9-1A 键盘显示电路1 图9-1B 键盘显示电路2
五、实验程序
;//********************************************************* ;文件名: 55KeyD for 8088
;功能: 8255控制键盘显示实验
;接线: 连接8279键盘显示模块的JD3E到8255模块的JD3C(PA口);
; JD2E到8255模块的JD4C(PB口);
; JD4E到8255模块的JD5C(PC口);
; 用导线连接CPU模块的200H到8255模块的CS_8255。
;//********************************************************* D8255A EQU 200H ;8255 PA 口地址
D8255B EQU 201H ;8255 PB 口地址
D8255C EQU 202H ;8255 PC 口地址
D8255 EQU 203H ;8255 状态/命令口地址
DATA SEGMENT
COUNT DB ?
DATA ENDS
CODE SEGMENT
MAIN PROC FAR
ASSUME CS:CODE,DS:DATA
start:
push cs
pop ds
MOV AL,90H ;方式0,PB,PC口输出,PA口输入
MOV DX,D8255
OUT DX,AL ;点亮对应的LED
MOV AH,0FFH
MOV BH,7DH
KB_DIS:
CALL KEY ;读键盘
CALL DISPLAY
JMP KB_DIS
MAIN ENDP
KEY proc near
MOV AL,02H ;扫描第一行
MOV DX,D8255C
OUT DX,AL
MOV DX,D8255A
IN AL,DX
MOV AH,0
CMP AL,0FFH
JNZ KEYCALL ;判键是否按下
MOV AL,01H ;扫描第二行
MOV DX,D8255C
OUT DX,AL
MOV DX,D8255A
IN AL,DX
MOV AH,8
CMP AL,0FFH
JNZ KEYCALL ;判键是否按下
JMP FABH ;无键按下KEYCALL:MOV CX,08H ;计算键码
SHIFT: SAR AL,1
JNC TORET
INC AH
LOOP SHIFT
JMP FABH
TORET: MOV BL,AH
FABH: RET
KEY ENDP
DISPLAY PROC NEAR
CMP AH,0FFH
JE ABG
MOV AL,11010011B ;显示位置第2个数码管 MOV DX,D8255C
OUT DX,AL
CMP AH,0AH
JB ABC
SUB AH,09H
CMP AH,06H
JNE ABF
ADD CL,1
MOV AL,CL
SHR AL,1
JC ABD
MOV AL,66H ;显示4
MOV BH,AL
JMP ABE
ABD: MOV AL,7DH ;显示6
MOV BH,AL
JMP ABE
ABC: MOV AL,4FH ;显示3
MOV BH,AL
ABF: MOV BL,AH
MOV AL,BH
ABE: MOV DX,D8255B
OUT DX,AL
CALL SOFTDLY
PUSH BX
MOV AL,11001011B ;显示位置第1个数码管
MOV DX,D8255C
OUT DX,AL ;点亮对应的LED
MOV AL,AH ;取键值
LEA BX,LED
XLAT ;取显示段码
MOV DX,D8255B ;将AL中内容写到数码管上 OUT DX,AL
CALL SOFTDLY
POP BX
ABG: MOV AL,11000011B ;显示位置第0个数码管 MOV DX,D8255C
OUT DX,AL
MOV AL,76H
MOV DX,D8255B
OUT DX,AL
CALL SOFTDLY
RET
LED DB 3FH,06H,5BH,4FH,66H,6DH;0,1,2,3,4,5 DB 7DH,07H,7FH,6FH,77H,7CH;6,7,8,9,A,B DB 39H,5EH,79H,71H,00H,40H;C,D,E,F, ,- Display endp
SOFTDLY PROC NEAR
PUSH CX
PUSH BX
MOV BX,2
DELAY: MOV CX,2801
WAIT:
LOOP WAIT
DEC BX
JNZ DELAY
POP BX
POP CX
RET
SOFTDLY ENDP
code ends
end start
六、实验步骤
1)系统各跳线器处在初始设置状态,S11E和S12E红开关全部打到下方(OFF)。
2)用8位数据线对应连接8255模块的JD3C(PA口)、JD4C(PB口)、JD5C(PC口)到8279模块的JD3E、JD2E、JD4E;
用导线连接CPU模块的200H到8255模块的CS_8255。
3)启动PC机,打开THGMW-88软件,输入源程序,并编译源程序。
编译无误后,下载程序运行。
4)在键盘上按任一单键,观察数码管的显示,数码管低位显示按键值。
七、实验现象与分析
运行程序后,在键盘上按任意键,可以看到数码管上显示了按键的ASIIC码,对于小于10的数,显示30-39,而对于字母,小写时为60-63,大写时为40-43,而在按下F时,不显示数字,在按下下一个字母时系一位的显示在4和6之间变化,实现大小写的转换。
程序通过对输入量的识别,跳转到不同的程序段执行来实现不同按键输出。
并且通过查表发来实现不同字符的显示。
实验通过8255芯片来对键盘的输入和显示,并采用行扫描法对键盘输入进行识别,并采用动态显示结果。
通过程序的编写和电路的连接基本上实现的实验的要求。
八、实验总结
通过实验基本上掌握了键盘输入和显示的方法,键盘显示可以用8255来实现,也可以用专门的键盘输入显示芯片来实现。
实验中采用8255的方法来实现,通过实验掌握了8255的使用方法,并且掌握了键盘按键识别的方法,在实验中采用行扫描法,我们还可以采用反转法实现。
实验还掌握了数码管的动态显示方法,和他的编程过程。
实验的中掌握了键盘输入和显示的方法,这为以后的电路设计提供了方法,我们可以在以后的电路设计中应用这个方法来实现输入输出。