实验八 矩阵键盘应用实验
实验八 矩阵键盘应用实验.doc
一、实验目的
- 掌握矩阵式键盘识别技术
- 进一步掌握数码管显示原理
二、实验主要仪器和环境
- Keil5
- 普中A2开发板
- stc-isp
三、实验内容
用单片机的并行口P1接矩阵键盘,在数码管上显示每个按键的“0—F”序号。对应的按键的序号排列如图所示:
四、流程框图
五、实验程序
KEY_VALUE EQU R0 ;R0 存储键值
ORG 0000H
AJMP INIT
INIT: ;系统初始化
MOV DPTR, #TAB1 ;指向字形码表首地址
LOOP: ;循环
ACALL KEYSCAN ;
ACALL DTSEG ;
AJMP LOOP ;
DTSEG: ;数码管显示
MOV A , KEY_VALUE ;
MOVC A , @A+DPTR ;
MOV P0 , A ;
RET
KEYSCAN: ;矩阵按键扫描
MOV P1 , #0FH ;进行列检测
MOV A , P1 ;读取P1的值
CJNE A , #0FH ,XD ;判断按键是否按下
RET
XD: ACALL DELAY10MS ;延时10ms进行消抖
MOV A , P1 ;再次读取按键的值
CJNE A , #0FH ,CSLIE ;再次检测键盘是否按下
RET
CSLIE: ;测试列
MOV P1 , #0FH ;
MOV A , P1 ;
LIE1: ;第一列
MOV C , P1.3 ;
JC LIE2 ;
MOV KEY_VALUE , #0 ;第一列按键按下
LJMP CEHANG ;跳转到测试行
LIE2:
MOV C , P1.2 ;
JC LIE3 ;
MOV KEY_VALUE , #1 ;第二列按键按下
LJMP CEHANG ;
LIE3:
MOV C , P1.1 ;
JC LIE4 ;
MOV KEY_VALUE , #2 ;第三列按键按下
LJMP CEHANG ;
LIE4:
MOV C , P1.0 ;
JC CEHANG ;
MOV KEY_VALUE , #3 ;第四列按键按下
LJMP CEHANG ;
CEHANG: ;测试行
MOV P1 , #0F0H ;
MOV A , P1 ;
HANG1:
MOV C , P1.7 ;第一行
JC HANG2
MOV A , #0 ;
ADD A , KEY_VALUE ;第一行按键按下
MOV KEY_VALUE , A ;
LOOP1:
MOV C , P1.7 ;
JNC LOOP1 ;检测按键松开
LJMP RETURN
HANG2:
MOV C , P1.6 ;
JC HANG3 ;
MOV A , #4
ADD A , KEY_VALUE ;
MOV KEY_VALUE , A ;第二行按键按下
LOOP2:
MOV C , P1.6 ;
JNC LOOP2 ;检测按键松开
LJMP RETURN
HANG3:
MOV C , P1.5 ;
JC HANG4
MOV A , #8
ADD A , KEY_VALUE ;
MOV KEY_VALUE , A ;第三行按键按下
LOOP3:
MOV C , P1.5 ;
JNC LOOP3 ;检测按键松开
LJMP RETURN
HANG4:
MOV C , P1.4 ;
JC RETURN
MOV A , #12 ;
ADD A , KEY_VALUE ;
MOV KEY_VALUE , A ;第四行按键按下
LOOP4:
MOV C , P1.4 ;
JNC LOOP4 ;检测按键松开
RETURN:
RET
DELAY10MS: ;@11.0592MHz
PUSH 30H
PUSH 31H
MOV 30H,#18
MOV 31H,#230
NEXT:
DJNZ 31H,NEXT
DJNZ 30H,NEXT
POP 31H
POP 30H
RET
TAB1:;0 - F共阴极字形码
DB 03FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;0-9
DB 77H,7CH,39H,5EH,79H,71H;A-F
END
六、程序分析
使用EQU伪指令重新命名R0为KEY_VALUE方便代码后续的理解。
本文使用行列扫描的方法进行矩阵按键的扫描。需要注意的是,在行扫描结束后,会有一个LOOP循环,该段程序的作用是检测按键是否松开,只有按键松开才算作一次按下。
其他部分都较为简单,不多做解释。
七、体会
遇到的问题:矩阵按下时,蜂鸣器会异响,观察原理图可知是因为控制蜂鸣器的是P1.5端口与矩阵按键扫描时有冲突。
解决的办法:只需要添加一个检测按键松开的LOOP循环即可解决,这样就不会反复扫描,反复拉高拉低P1.5导致蜂鸣器发出异响
八、测试报告
数码管显示对应按下的矩阵按键的键值文章来源:https://www.toymoban.com/news/detail-497089.html
文章来源地址https://www.toymoban.com/news/detail-497089.html
到了这里,关于<微机原理>[汇编语言]-[实验八]矩阵键盘应用实验的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!