51单片机汇编语言实验(六)-----8255键盘与显示设计
2022-01-19 来源:eefocus
一、实验目的:
掌握8255外接键盘与数码管显示的设计
二、实验设备:
PC计算机一台,Dais-52PRO+实验系统一套。
三、实验内容:
8255键盘与显示设计
四、 8255键盘与显示设计
1、实验原理:
本实验使用8255的PA7到PA0控制数码管字形口、PB5到PB0控制数码管字位口,同时PB4到PB0作为键盘扫描口、PC3~PC0作为键盘读入口。利用CPU控制8255,对4×5键盘进行扫描和键值读取,将键值显示到6位数码管上。本文介绍的是简化版的实验,不控制最后一列键盘,数码管位选端不接线,直接点亮。
2、实验步骤:
① 按下图拆除14芯扁平电缆;
②将8255区的PA0到PA7与数码管区的a~h按下图连接;
③将8255区的PB1到PB4与按键区的列0~4按下图连接;
④将8255区的PC0到PC3与按键区的行0~3按下图连接;
⑤将8255区的/CS与端口地址区的300按下图连接;
⑥编写实验程序,经编译、链接无语法错误后装载到实验系统;
⑦全速运行程序,按实验系统键盘上的0~F数字键,数码管显示对应数字
⑧实验完毕后,应使用暂停命令中止程序的运行;
⑨本实验完毕,应及时将步骤1中拆除的扁平电缆重新连接,以便其它实验的顺利进行。
3、参考代码:
//实验六
ORG 0000H
AJMP KD1
ORG 0100H
KD1: MOV A, #81H ;8255初始化,PA,PB基本输出
;方式, PC低四位输入方式
MOV DPTR, #0303H ;地址需要修改成控制口地址
MOVX @DPTR, A
KEY1: ACALL KS1 ;调用判断是否有键闭合子程序
JNZ LK1 ;有键闭合转LK1
ACALL DSP8255 ;调用8255动态显示子程序,延时6 ms
AJMP KEY1
LK1: ACALL DSP8255
ACALL DSP8255 ;调用两次显示,延时12 ms
ACALL KS1
JNZ LK2
ACALL DSP8255 ;调用8255动态显示子程序,延时6 ms
AJMP KEY1
LK2: MOV R2, #0EFH ;11101111
MOV R4, #00H
LK3: MOV DPTR, #0301H ;需要改成B口地址
MOV A, R2
MOVX @DPTR, A
INC DPTR
MOVX A, @DPTR
JB ACC.0, LONE
MOV A, #00H
AJMP LKP
LONE: JB ACC.1, LTWO
MOV A, #04H
AJMP LKP
LTWO:JB ACC.2, LTHR
MOV A, #08H
AJMP LKP
LTHR: JB ACC.3, NEXT
MOV A, #0CH
LKP: ADD A, R4
PUSH ACC
MOV R5,A
LK4: ACALL DSP8255
ACALL KS1
JZ LK4
POP ACC
AJMP LK1
NEXT: INC R4
MOV A, R2
JNB ACC.1, KND
RR A
MOV R2, A
AJMP LK3
KND: AJMP KEY1
KS1: MOV DPTR, #0301H ;地址需要改成B口地址
MOV A, #00H
MOVX @DPTR, A
INC DPTR
MOVX A, @DPTR ;默认在按键按下前c口为高电平
CPL A
ANL A, #0FH
RET
DSP8255: MOV A,R5
MOV DPTR, #PTRN ;指向段数据表首地址
MOVC A, @A+DPTR ;查表,得段数据
MOV DPTR, #0300H ;地址需要修改为A口地址
MOVX @DPTR, A ;输出段数据
CALL D1MS ;延时1 ms
PASS: RET ;返回
D1MS: MOV R7, #02H ;延时1 ms子程序
DMS: MOV R6, #0FFH
DJNZ R6, $
DJNZ R7, DMS
RET
PTRN:DB 0c0H, 8eH, 86H, 0a1H ;段数据表 0 F E D
DB 0f9H, 0a4H, 0b0H, 0c6H ; 1 2 3 C
DB 99H, 92H, 82H, 83H ; 4 5 6 B
DB 0f8H, 80H, 90H, 88H ; 7 8 9 A
END
五、 实验效果视频演示
博文51单片机汇编语言实验8255键盘显示设计效果视频演示.