单片机型号:STC 89C52RC
引脚如图:
接线方法:4X4矩阵键盘,每行接P3.0-P3.3引脚,每列接P3.4-P3.7引脚,8个LED发光二极管接P1.0-P1.7,用于显示当前按下的键盘序号的二进制表示。
代码如下:
ORG 0000H
LJMP MAIN
MAIN: MOV P3,#0FH ;行接高电平,列接低电平
;检查所有行,若出现低电平则跳转
JNB P3.0,H1
JNB P3.1,H2
JNB P3.2,H3
JNB P3.3,H4
LJMP MAIN
H1: MOV R0,#1D ;R0记下行
LJMP CHECKL ;列接高电平,行接低电平
;检查所有列
H2: MOV R0,#2D
LJMP CHECKL
H3: MOV R0,#3D
LJMP CHECKL
H4: MOV R0,#4D
LJMP CHECKL
CHECKL: MOV P3,#0F0H
JNB P3.4,L1
JNB P3.5,L2
JNB P3.6,L3
JNB P3.7,L4
LJMP MAIN
L1: MOV R1,#1D ;R1记下列
LJMP COUNT
L2: MOV R1,#2D
LJMP COUNT
L3: MOV R1,#3D
LJMP COUNT
L4: MOV R1,#4D
LJMP COUNT
COUNT: MOV A,R0 ;计算所在按键,并将相应的灯置低电平
DEC A
MOV B,#4D
MUL AB
ADD A,R1
CPL A
MOV P1,A
ACALL DEL
MOV P1,#0FFH
MOV R0,#00H
MOV R1,#00H
LJMP MAIN
DEL: MOV R5,#04H ;亮灯延迟
DEL1: MOV R6,#0FFH
DEL2: MOV R7,#0FFH
DEL3: DJNZ R7, DEL3
DJNZ R6, DEL2
DJNZ R5, DEL1
RET
END
效果:每按下一个按键,8个发光二极管亮起的灯表示按键序号的二进制表示。