(51单片机)矩阵键盘计算出键值之后如何查表\显示

来源:百度知道 编辑:UC知道 时间:2024/05/24 03:50:55
51单片机
P3口接4×4矩阵键盘,P1口接数码管(并接LED灯)。我现在已经计算出键值,但是不知道怎么把它显示出来,或者方便查表。
(以下是已经编好能计算出键值的程序)
;A005_1.ASM
;矩阵键盘练习
KEYCARD BIT 00H ;标志位
KEYS EQU 5AH ;键值缓存
ORG 0000H
AJMP START
ORG 30H
START:
MOV P1,#00H
MOV P2,#0FH
CLR KEYCARD
LOOP:
ACALL KEY_CHECK
JNB KEYCARD,LOOP
ACALL KEY_MARK
AJMP LOOP
KEY_CHECK: ;键盘扫描
MOV P3,#0FH
MOV A,P3
ANL A,#0FH
CJNE A,#0FH,KEY_C1
CLR KEYCARD
RET
KEY_C1:
ACALL DELAY
SETB KEYCARD
RET
KEY_MARK:
MOV A,#0EFH
KEY_M1: ;键值扫描
MOV P3,A
MOV KEYS,A
MOV A,P3
ANL A,#0FH
CJNE A,#0FH,KEY_M2
MOV A,KEYS
SETB C
RLC A
JC KEY_M1
CLR KEYCARD
RET
KEY_M2: ;键值计算
MOV R0,#KEYS
XCH A,@R0
XCHD A,@R0
MOV P1,A
KEY_MX: ;等待按键释放
MOV A,P3
ANL A,#0FH
CJNE A,#0FH,KEY_MX
CLR KEYCARD

我想问一下,你的硬件连接是怎么连接的...
还有就是你现在算出的值是什么关系..
其实,书上有这方面的例程序的..
还有就是,建议不要装在P3口上,那样第二功能就不好用了....

我想问的是,键盘的行和例是怎么连接的...
下面我改了一下程序,行是,P3.0-P3.3,例是,P3.4-P3.7,最后得到的键值存在,KEYS中数为,0-15,
有什么问题可以再问...
START:
MOV P1,#00H
MOV P2,#0FH
CLR KEYCARD
LOOP:
ACALL KEY_CHECK
JNB KEYCARD,LOOP ;为0从重新扫描
ACALL KEY_MARK ;为1有按键,调用KEY_MARK
AJMP LOOP
KEY_CHECK: ;键盘扫描
MOV P3,#0FH
MOV A,P3
ANL A,#0FH
CJNE A,#0FH,KEY_C1
CLR KEYCARD
RET
KEY_C1:
ACALL DELAY ;有键接下,消抖
SETB KEYCARD
RET
KEY_MARK:
MOV A,#0EFH ;第一例,行扫描,
KEY_M1: ;键值扫描
MOV P3,A
MOV KEYS,A
MOV A,P3
ANL A,#0FH ;取与
CJNE A,#0FH,KEY_M2 ;在第一例则跳,KEY_M2
MOV A,KEYS ;并非在第一例刚移位
SETB C
RLC A
JC KEY_M1 ;C=1,重新扫描..
CLR KEYCARD ;扫完一圈后,完成..
RET
KEY_M2: ;键值计算
MOV R0,#KEYS ;将KEYS的地址装入R0
XCH A,@