资源描述
实验十二 阵列式键盘实验
一、实验目的
1.掌握键盘和显示器的接口方法和编程方法
2.掌握阵列式键盘的硬件组成和软件编程方法
二、实验说明
本实验提供了一个4X4 小建盘,向P1 口的高四位逐个输出低电平,如果有键盘按下,则相
应输出为低,如果没有键按下,则输出为高。通过输出的列码和读取的行码来判断按下什么键。
在有键按下后,要有一定的延时,防止由于键盘抖动而引起误操作。
三、实验电路图
本实验需要用到80C51 MCU 模块(C 区),阵列式键盘模块(G5 区),静态数码显示模块(A6
区)。80C51 MCU 模块电路原理参考附录三,静态数码显示电路参考实验十图10.1,阵列式键盘
电路原理参考图12.1。
四、实验步骤
1.用8P 数据线连接80C51 MCU 模块的JD1C(P1 口)到阵列式键盘模块的JD1G5;用二号导线
分别连接80C51 MCU 模块的RXD(P3.0)、TXD(P3.1)到静态数码显示模块的DIN、CLK。
2.用串行数据通信线连接计算机与仿真器,将仿真器插到80C51 MCU 模块的40P 锁紧插座中,
请注意仿真器的方向:缺口朝上。
3.将80C51MCU 模块的电源扭子开关S1C 拨到上端,将静态数码显示模块的电源短路帽J1A6
打在上端。将直流稳压电源模块的直流控制开关S1G1 打到ON,本实验所用到的相关模块的电源
指示灯VCC 亮。
4.打开Keil uVision2 仿真软件,首先建立本实验的项目文件,接着添加“TH12_阵列式键
盘.ASM”源程序,进行编译,编译无误后,全速运行程序。
KEY2G5
2
KEY6G5
6
KEYAG5
A
KEYEG5
E
KEY3G5
3
KEY7G5
7
KEYBG5
B
KEYFG5
F
12345678
JD1G5
KEY
SEGA0
SEGB0
SEGC0
SEGH0
SEGA0
SEGB0
SEGD0
SEGC0
SEGE0
SEGF0
SEGG0
SEGH0
KEY0G5
0
KEY4G5
4
KEY8G5
8
KEYCG5
C
KEY1G5
1
KEY5G5
5
KEY9G5
9
KEYDG5
D
SEGD0
SEGE0
SEGF0
SEGG0
R1G5
10K
R2G5
10K
R3G5
10K
R4G5
10K
VCC
THDPJ-1/2 型单片机开发综合实验箱
天煌科技 3 4 天煌教仪
5.实验现象:静态数码显示模块显示“C51 X”,在键盘上按下某个键,观察“X”的值是否
与按键值一致。
6.也可以把源程序编译成可执行文件,把可执行文件用ISP 烧录器烧录到89S52 芯片中运行
(注意:芯片缺口朝上)。(ISP 烧录器的使用查看附录二)
五、实验源程序
ORG 0000H
LJMP START
ORG 00100H
DBUF EQU 30H
TEMP EQU 40H
DIN BIT P3.0
CLK BIT P3.1
START: MOV A,#16H
MAIN: ACALL DISP
MOV 30H, A
ACALL KEY1
AJMP MAIN
KEY1: MOV P1,#0F0H;对输入应锁存写1
MOV A,P1
CJNE A,#0F0H, K11 ;有键按下
K10: AJMP KEY1 ;无键按下
K11: ACALL DELAY ;延时去抖动
MOV P1,#0F0H
MOV A,P1 ;再读取键盘状况
CJNE A,#0F0H, K12 ;确有键按下
SJMP K10 ;误动作
K12: MOV B,A ;存列值
MOV P1,#0FEH ;检测第一列
MOV A,P1
CJNE A,#0FEH,K13
MOV P1,#0FDH ;检测第二列
MOV A,P1
CJNE A,#0FDH,K13
MOV P1,#0FBH ;检测第三列
MOV A,P1
CJNE A,#0FBH,K13
MOV P1,#0F7H ;检测第四列
THDPJ-1/2 型单片机开发综合实验箱
天煌科技 3 5 天煌教仪
MOV A,P1
CJNE A,#0F7H, K13
AJMP K10 ;多键同时按下
K13: ANL A,#0FH ;得行值
ORL A,B ;得按下的行列值
MOV B,A ;暂存键值
MOV R1,#16 ;16 个键
MOV R2,#0 ;键码初值
MOV DPTR,#K1TAB ;键码表首址
K14: MOV A,R2
MOVC A,@A+DPTR ;从键值表取键值
CJNE A,B, K16 ;与按下键的键比较
MOV P1,#0F0H
K15: MOV A,P1
CJNE A,#0F0H, K15
ACALL DELAY ;延时去抖动
MOV A,R2 ;得键码
RET
K16: INC R2
DJNZ R1,K14
AJMP K10
K1TAB: DB 0EEH,0EDH,0EBH,0E7H
DB 0DEH,0DDH,0DBH,0D7H
DB 0BEH,0BDH,0BBH,0B7H
DB 07EH,07DH,07BH,077H
DISP: MOV DBUF,#0CH
MOV DBUF+1,#5
MOV DBUF+2,#1
MOV DBUF+3,#16
MOV DBUF+4,A
MOV R0,#DBUF
MOV R1,#TEMP
MOV R2,#8
DP10:MOV DPTR,#SEGTAB
MOV A,@R0
MOVC A,@A+DPTR
MOV @R1,A
THDPJ-1/2 型单片机开发综合实验箱
天煌科技 3 6 天煌教仪
INC R0
INC R1
DJNZ R2,DP10
MOV R0,#TEMP
MOV R1,#5
DP12:MOV R2,#8
MOV A,@R0
DP13:RLC A
MOV DIN,C
CLR CLK
SETB CLK
DJNZ R2,DP13
INC R0
DJNZ R1,DP12
RET
SEGTAB:DB 3FH,06H,5BH,4FH,66H,6DH
DB 7DH,07H,7FH,6FH,77H,7CH
DB 58H,5EH,79H,71H,00H,40H
DELAY: MOV R4,#02H
AA1: MOV R5,#0F8H
AA: NOP
NOP
DJNZ R5,AA
DJNZ R4,AA1
RET
END
展开阅读全文