矩阵按键实验

矩阵按键实验

一.实验目的

熟悉和掌握矩阵式键盘的工作原理、电路设计和软件编程的方法。

熟悉和掌握矩阵式键盘的行扫描法和行反转法两种键盘扫描识别方法。

掌握键盘延时消抖的软件方法。

掌握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.扫描法要进行逐行扫描查询,当被按下的键处于最后一行时,要经过多次扫描才能最后获得该键的行列值,程序也因此过于复杂,相比

均经过两步便能获得该键的行列值。

相关文档
最新文档