矩阵按键实验
矩阵按键实验
一.实验目的
熟悉和掌握矩阵式键盘的工作原理、电路设计和软件编程的方法。
熟悉和掌握矩阵式键盘的行扫描法和行反转法两种键盘扫描识别方法。
掌握键盘延时消抖的软件方法。
掌握LED静态扫描显示方式。
二.实验内容
4*4键盘矩阵的行线连接单片机的P1.0—P1.3端口,列线连接P1.4—P1.7端口;1位LED数码管连接单片机的P0口。编程实现:当按下任意一个按键时,LED数码管显示它在4*4矩阵键盘上的序号0—F。
注:行扫描法是在判定有键按下后逐行置低电平,其余各行置高电平,同时读入列状态。若列状态出现非全1状态,这是0状态的行、列交点的键就是所按下的键。行扫描的特点是逐行(逐列)扫描查询。
三.实验流程图
四.源程序设计
单片机P1口接4*4矩阵键盘,低4位P1.0--P1.3用于行控制,作为输入线,高4位P1.4—P1.7用于列控制,作为输出线,通过软件中的逻辑运算控制使同一个并行口的不同引脚工作在不同的输入输出方式下,来实现反转法的键盘识别工作。P0口接一个数码管,用以显示每个按键的“0--F”序号。
ORG 0000H
LJMP START
ORG 0100H
START:MOV SP,#60H
KEY0:MOV P1,#0EFH
JNB P1.0,K0
JNB P1.1,K4
JNB P1.2,K8
JNB P1.3,K12
MOV P1,#0DFH
JNB P1.0,K1
JNB P1.1,K5
JNB P1.3,K13
MOV P1,#0BFH
JNB P1.0,K2
JNB P1.1,K6
JNB P1.2,K10
JNB P1.3,K14
MOV P1,#07FH
JNB P1.0,K3
JNB P1.1,K7
JNB P1.2,K11
JNB P1.3,K15
LJMP KEY0
K0:MOV P0,#0C0H
LCALL DELAY
JMP KEY0
K4:MOV P0,#99H
LCALL DELAY
JMP KEY0
K8:MOV P0,#80H
LCALL DELAY
JMP KEY0
K12:MOV P0,#0C6H LCALL DELAY
JMP KEY0
K1:MOV P0,#0F9H
LCALL DELAY
JMP KEY0
K5:MOV P0,#92H
LCALL DELAY
JMP KEY0
K9:MOV P0,#90H
LCALL DELAY
JMP KEY0
K13:MOV P0,#0A1H LCALL DELAY
JMP KEY0
K2:MOV P0,#0A4H
LCALL DELAY
JMP KEY0
K6:MOV P0,#82H
LCALL DELAY
JMP KEY0
K10:MOV P0,#88H
JMP KEY0
K14:MOV P0,#86H
LCALL DELAY
JMP KEY0
K3:MOV P0,#0B0H
LCALL DELAY
JMP KEY0
K7:MOV P0,#0F8H
LCALL DELAY
JMP KEY0
K11:MOV P0,#83H
LCALL DELAY
JMP KEY0
K15:MOV P0,#8EH
LCALL DELAY
JMP KEY0
DELAY:MOV R3,#06H
LP:MOV R4,#0A8H
LP1:MOV R5,#0A8H
LP2:DJNZ R5,LP2
DJNZ R4,LP1
DJNZ R3,LP
RET
END
五.程序调试过程及结果
1.在proteus中搭建电路图,并烧入hex文件
2.进行仿真,按动不同按键,观察数码管显示情况如下:
六.实验总结
1.通过本次实验,我们熟悉和掌握矩阵式键盘的工作原理、电路设计和软件编程的方法,熟悉和掌握矩阵式键盘的行扫描法和行反转法两种键盘扫描识别方法,掌握键盘延时消抖的软件方法,掌握LED静态扫描显示方式。
2.扫描法要进行逐行扫描查询,当被按下的键处于最后一行时,要经过多次扫描才能最后获得该键的行列值,程序也因此过于复杂,相比
均经过两步便能获得该键的行列值。