RS BIT P2.2
RW BIT P2.1
E BIT P2.0
ORG 0000H
AJMP START
ORG 0050H
START: MOV P0,#01H
ACALL ENABLE
MOV P0,#38H
ACALL ENABLE
MOV P0,#0FH
ACALL ENABLE
MOV P0,#06H
MOV 50H,#1
MOV 51H,#2
MOV 52H,#3
MOV 53H,#4
MOV 54H,#5
; MOV 55H,#6
MAIN: LCALL ENABLE
LCALL KSXSHI
AA: LCALL KEY
CJNE A,#10,LL0
LP: ACALL ANAHX
AJMP MAIN
LL0: CJNE A,#11,AA
ACALL ANBHX
LJMP MAIN
ENABLE:CLR RS
CLR RW
CLR E
LCALL DELAY
SETB E
RET
;*****************键盘编码部分****************
KEY: MOV P1,#0F0H
KEY0: MOV A,P1
CPL A
ANL A,#0F0H
MOV R1,A
JZ KEY
KEY1: MOV P1,#0FH
MOV A,P1
CPL A
ANL A,#0FH
MOV R2,A
JZ KEY
TT: JBC F0,WAIT
SETB F0
LCALL DELAY
SJMP TT
GRET: RET
;***********确定按键值*****************
WAIT: MOV A,P1
CPL A
ANL A,#0FH
JNZ WAIT
KEY2: MOV A,R1
MOV R1,#03H
MOV R3,#03H
CLR C
KEY3: RLC A
JC KEY4
DEC R1
DJNZ R3,KEY3
KEY4: MOV A,R2
MOV R2,#00H
MOV R3,#03H
CLR C
KEY5: RRC A
JC KEY6
INC R2
DJNZ R3,KEY5
KEY6: MOV A,R2
CLR C
RLC A
RLC A
ADD A,R1
RET
;**************开始显示效果***************8
KSXSHI:MOV P0,#80H
ACALL ENABLE
MOV DPTR,#TABLE3
LCALL WRITE1
MOV P0,#80H
LCALL ENABLE
MOV DPTR,#TABLE2
LCALL WRITE1
RET
;********按A后操作部分***********
ANAHX: MOV P0,#80H
ACALL ENABLE
MOV DPTR,#TABLE4
LCALL WRITE1
MOV P0,#0C0H
LCALL ENABLE
MOV DPTR,#TABLE5
LCALL WRITE1
LCALL XG_PASS
RET
ZA
;***********按B后操作部分****************
ANBHX: MOV P0,#80H
ACALL ENABLE
MOV DPTR,#TABLE6
LCALL WRITE1
MOV P0,#0C0H
LCALL ENABLE
MOV DPTR,#TABLE5
LCALL WRITE1
LCALL IP_PASS
RET
;***************输入五位密码值**********************
IP_PASS: MOV B,#5
MOV R0,#40H
T: CLR P2.3
ACALL KEY
SETB P2.3
MOV @R0,A
INC R0
DJNZ B,T
ACALL KEY
CJNE A,#12,PT
MOV A,40H
CJNE A,50H,KK
MOV A,41H
CJNE A,51H,KK
MOV A,42H
CJNE A,52H,KK
MOV A,43H
CJNE A,53H,KK
MOV A,44H
CJNE A,54H,KK
; MOV A,45H
; CJNE A,55H,KK
CLR P2.4
MOV B,#100
PR: LCALL DELAY
DJNZ B,PR
SETB P2.4
PT:RET
;***************输入密码时并显示**********************
KK: MOV P0,#80H
ACALL ENABLE
MOV DPTR,#TABLE10
LCALL WRITE1
MOV P0,#0C0H
LCALL ENABLE
MOV DPTR,#TABLE5
LCALL WRITE1
MOV B,#50
CLR P2.5
PK: LCALL DELAY
DJNZ B,PK
SETB P2.5
RET
;**********************修改密码操作部分*******************
XG_PASS:MOV P0,#80H
ACALL ENABLE
MOV DPTR,#TABLE9
LCALL WRITE1
MOV P0,#0C0H
LCALL ENABLE
MOV DPTR,#TABLE8
LCALL WRITE1
MOV B,#5
MOV R0,#30H
YT: CLR P2.6
ACALL KEY
SETB P2.6
MOV @R0,A
INC R0
DJNZ B,YT
ACALL KEY
CJNE A,#12,XT
MOV A,30H
CJNE A,50H,TK
MOV A,31H
CJNE A,51H,TK
MOV A,32H
CJNE A,52H,TK
MOV A,33H
CJNE A,53H,TK
MOV A,34H
CJNE A,54H,TK
;MOV A,35H
; CJNE A,55H,TK
MOV P0,#80H
ACALL ENABLE
MOV DPTR,#TABLE9
LCALL WRITE1
MOV P0,#0C0H
LCALL ENABLE
MOV DPTR,#TABLE7
LCALL WRITE1
MOV B,#5
MOV R0,#50H
XT1:CLR P2.7
ACALL KEY
SETB P2.7
MOV @R0,A
INC R0
DJNZ B,XT1
ACALL KEY
CJNE A,#12,XT
MOV P0,#80H
ACALL ENABLE
MOV DPTR,#TABLE1
LCALL WRITE1
MOV P0,#0C0H
LCALL ENABLE
MOV DPTR,#TABLE0
LCALL WRITE1
XT: RET
TK: CLR P2.5
MOV B,#50
GK: LCALL DELAY
DJNZ B,GK
SETB P2.5
RET
;**************写数据 *******************
WRITE1: MOV R1,#00H
A1: MOV A,R1
MOVC A,@A+DPTR
LCALL WRITE2
INC R1
CJNE A,#00H,A1
RET
WRITE2: MOV P0,A
SETB RS
CLR RW
CLR E
LCALL DELAY
SETB E
RET
DELAY: MOV R7,#255
D1: MOV R6,#255
D2: DJNZ R6,D2
DJNZ R7,D1
RET
TABLE10:DB 20H,50H,41H,53H,53H,57H,4FH,52H,44H,20H,45H,52H,52H,4FH,52H,21H,00H
TABLE9:DB 20H,49H,4EH,50H,55H,54H,20H,20H,20H,20H,54H,48H,45H,20H,20H,20H,00H
TABLE8:DB 20H,4FH,4CH,44H,20H,20H,70H,41H,53H,53H,57H,4FH,52H,44H,20H,20H,00H
TABLE7:DB 20H,4EH,45H,57H,20H,20H,50H,41H,53H,53H,57H,4FH,52H,44H,20H,20H,00H
TABLE6:DB 20H,53H,48H,55H,20H,20H,52H,55H,20H,20H,20H,4DH,49H,20H,4DH,41H,00H
TABLE5:DB 20H,20H,20H,2AH,20H,2AH,20H,2AH,20H,2AH,20H,2AH,20H,20H,20H,20H,00H
TABLE4:DB 20H,53H,45H,54H,20H,20H,70H,41H,53H,53H,57H,4FH,52H,44H,20H,20H,00H
TABLE3:DB 38H,30H,35H,31H,20H,20H,20H,50H,41H,53H,53H,57H,4FH,52H,44H,20H,00H
TABLE2:DB 20H,41H,20H,20H,4FH,52H,20H,20H,42H,20H,20H,4BZH,45H,59H,20H,20H,00H
TABLE1:DB 20H,20H,20H,20H,50H,41H,53H,53H,57H,47H,52H,44H,20H,20H,20H,20H,00H
TABLE0:DB 20H,20H,58H,49H,55H,20H,20H,47H,41H,49H,20H,20H,50H,41H,53H,53H,00H
END
![](https://tb2.bdstatic.com/tb/editor/images/face/i_f09.png?t=20140803)