一、设计任务
1、如图1,单片机的P3.3~~P3.0接上开关SW4~~SW1(代表0000~~1111),P0口接上一排组,排阻接在数码管上。开关断开时,为高电平,闭合为低电平。
2、如图2,单片机的P0口接上数码管,P3.0~~P3.3接上键盘的行,P3.4~~P3.7接上键盘的列。按相应的键盘显示相应的数字(0~~F)
二、电路原理图
图1——1:开关全断开时(即开关1111时),数码管显示“F”
图1——2:SW4~~SW1(1001)时,显示数字“9”
图2——1:按下键盘上的“2”,显示数组“2”
图2——2:按下键盘上的“8”,显示数组“8”
图2——3:按下键盘上的“F”,显示数组“F”
三、设计程序
//SW4~~SW1对应显示数字
ORG 0
SJMP START
ORG 30H
START: MOV P0,#0FFH
ST: MOV P3,#0FFH
MOV A,P3
ANL A,#0FH
ACALL SEG7
MOV P0,A
SJMP ST
SEG7:
INC A
MOVC
A,@A+PC
RET
DB 0C0H,0F9H,0A4H,0B0H
DB 99H,92H,82H,0F8H
DB 80H,90H,88H,83H
DB 0C6H,0A1H,86H,8EH
END
//按相应的键盘显示相应的数字(0~~F)
LINE EQU 30H
ROW
EQU 31H
VAL
EQU 32H
ORG
00H
START:MOV DPTR,#TABLE
MOV P2,#00H
LSCAN:MOV P3,#0F0H
L1:JNB P3.0,L2
LCALL DELAY
JNB P3.0,L2
MOV LINE,#00H
LJMP RSCAN
L2:JNB P3.1,L3
LCALL DELAY
JNB P3.1,L3
MOV LINE,#01H
LJMP RSCAN
L3:JNB P3.2,L4
LCALL DELAY
JNB P3.2,L4
MOV LINE,#02H
LJMP RSCAN
L4:JNB P3.3,L1
LCALL DELAY
JNB P3.3,L1
MOV LINE,#03H
RSCAN:MOV P3,#0FH
C1:JNB P3.4,C2
MOV ROW,#00H
LJMP CALCU
C2:JNB P3.5,C3
MOV ROW,#01H
LJMP CALCU
C3:JNB P3.6,C4
MOV ROW,#02H
LJMP CALCU
C4:JNB P3.7,C1
MOV ROW,#03H
CALCU:MOV A,LINE
MOV B,#04H
MUL AB
ADD A,ROW
MOV VAL,A
MOVC A,@A+DPTR
MOV P2,A
LJMP LSCAN
DELAY:MOV R6,#20
D1:MOV R7,#250
DJNZ R7,$
DJNZ R6,D1
RET
TABLE:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H
DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H
END |