×
单片机 > 单片机程序设计 > 详情

51单片机简单易懂矩阵式键盘程序

发布时间:2020-09-02 发布时间:
|
;30H存列号31H存行号32H装键值,要改键盘的值排列可以通过改变后面TAB的值。

;程序构思,先给键盘的接入口p1赋0F0H,通过检测p1.4-p1.7那个出现低电平,举例如果是p1.4那列有键按

;下则p1.4出现低电平,则跳到y0得到列号为0,接下来分别给p1.4-p1.7赋0,看什么时候p1.4在那出现低电

;平,则可以得到行号,最终计算行号*4+列号就可以得到键盘的值,如果要修改矩阵键盘键值排列,则可以

;通过查表,计算出的前期键值只是作为一个地址。不知表述是否清楚了

 

 

SCAN:MOV P1,#0F0H               ;键盘扫描程序
     JNB P1.4,Y0                ;判断列
     JNB P1.5,Y1
     JNB P1.6,Y2
     JNB P1.7,Y3
     SJMP SCAN

Y0:MOV 30H,#00H               ;赋列号
   MOV P1,#0FEH
   JNB P1.4,X0
   MOV P1,#0FDH
   JNB P1.4,X1
   MOV P1,#0FBH
   JNB P1.4,X2
   MOV P1,#0F7H
   JNB P1.4,X3

Y1:MOV 30H,#01H
   MOV P1,#0FEH
   JNB P1.5,X0
   MOV P1,#0FDH
   JNB P1.5,X1
   MOV P1,#0FBH
   JNB P1.5,X2
   MOV P1,#0F7H
   JNB P1.5,X3

Y2:MOV 30H,#02H
   MOV P1,#0FEH
   JNB P1.6,X0
   MOV P1,#0FDH
   JNB P1.6,X1
   MOV P1,#0FBH
   JNB P1.6,X2
   MOV P1,#0F7H
   JNB P1.6,X3

Y3:MOV 30H,#03H
   MOV P1,#0FEH
   JNB P1.7,X0
   MOV P1,#0FDH
   JNB P1.7,X1
   MOV P1,#0FBH
   JNB P1.7,X2
   MOV P1,#0F7H
   JNB P1.7,X3

X0:MOV 31H,#00H            ;赋行号
   ACALL DELAY
   MOV P1,#0F0H
   LJMP JISUAN

X1:MOV 31H,#01H
   ACALL DELAY
   MOV P1,#0F0H
   LJMP JISUAN

X2:MOV 31H,#02H
   ACALL DELAY
   MOV P1,#0F0H
   LJMP JISUAN

X3:MOV 31H,#03H
   ACALL DELAY
   MOV P1,#0F0H
   LJMP JISUAN

JISUAN:MOV A,31H
       MOV B,#04H
       MUL AB
       ADD A,30H
       MOV DPTR,#TABLE
       MOVC  A,@A+DPTR
       MOV 32H,A
       RET

 


delay:MOV R4,#0C5H        ;键扫延时
DEL1:MOV R5,#43H
DEL0:MOV R6,#10H
DJNZ R6,$
DJNZ R5,DEL0
DJNZ R4,DEL1
RET


TABLE:DB 01H,02H,03H,04H,05H,06H,07H,08H,09H,00H,0AH,0BH,0CH,0DH,0EH,0FH  ;键盘值 



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
MSP430F5529 上手小例程2