实验五 矩阵键盘
一、实验目的
1、掌握矩阵键盘的硬件电路原理和软件编程方法;
2、掌握利用数码管显示矩阵键盘键值的编程方法。
二、实验说明
本实验提供了一个4X4小键盘,开始先将4行置一,4列置零,判断是否有键按下,如果有键按下,则逐列判断。键值判断方法:行*4+列,在有键按下后,要有一定的延时,防止键盘抖动。
三、实验内容及步骤
内容:
程序功能按下矩阵键盘单元键盘,静态显示单元数码管显示对应数字。
步骤:
1、根据硬件连接电路,编写程序并编译生成*.hex文件;
2、打开实验箱电源;
3、参照STC12C5A60S2下载说明中STC_ISP软件使用说明,向单片机中下载程序;
4、通过排线,将单片机最小系统单元的P2口的0-7与矩阵键盘单元的J0701的0-7一一对应相,通过信号线将单片机最小系统单元的P1.0、P1.1、P1.2分别与静态显示单元的SER、SRCLK、RCLK相连;
5、打开静态显示单元开关;
6、观察静态显示单元的LED1106数码管显示情况,若显示结果不正确,请修改该程序,重复以上操作。
1 DAT BIT P1.0 2 SRCLK BIT P1.1 3 RCLK BIT P1.2 4 ORG 00H 5 LJMP MAIN 6 ORG 0080H 7 MAIN: 8 MOV SP,#50H 9 MOV 30H,#10H ;键值存放在30H单元中 10 SLOOP: 11 ACALL JTXS 12 ACALL DELAY 13 ACALL KEYSCAN 14 SJMP SLOOP 15 KEYSCAN: 16 MOV R0,#00H 17 LOOP: 18 MOV P2,#0F0H ;将列清零 19 MOV A,P2 20 CJNE A,#0F0H,KEY1 ;判断是否有键按下 21 LJMP LOOP 22 KEY1: 23 ACALL DELAY ;延时去抖动 24 MOV P2,#0F0H 25 NOP 26 NOP 27 MOV A,P2 28 CJNE A,#0F0H,KEY2 ;判断键值 29 LJMP LOOP 30 KEY2: 31 MOV 31H,#0FEH ;将第一列置一 32 MOV A,31H 33 HANG: 34 MOV P2,A 35 MOV 31H,A 36 MOV B,R0 ;代表第几行 37 ACALL LIE 38 INC R0 39 MOV A,31H 40 RL A 41 CJNE R0,#04H,HANG 42 RET 43 LIE: ;判断列值 44 MOV A,P2 45 ANL A,#0F0H 46 CJNE A,#0E0H,K2 47 MOV 32H,#00 ;第一列 48 SJMP JIE 49 K2: 50 CJNE A,#0D0H,K3 51 MOV 32H,#01 ;第二列 52 SJMP JIE 53 K3: 54 CJNE A,#0B0H,K4 55 MOV 32H,#02 ;第三列 56 SJMP JIE 57 K4: 58 CJNE A,#70H,LEND 59 MOV 32H,#03 60 SJMP JIE ;第四列 61 JIE: 62 MOV A,#04H ;行*4+列 63 MUL AB 64 MOV B,32H 65 ADD A,B 66 MOV 30H,A 67 LEND: 68 RET 69