一、硬件连接
P0----数码管段码
P2----数码管位码
P1----行列式键盘
P3.0--锁闭LED P3.1--锁开LED
P3.2--设置状态LED P3.3--报警状态LED
P3.4--错误状态LED
二、存储单元分配
30H--35H 显示缓冲区
41H--45H 输入暂存区
50H--55H 原始密码存储单元
36H 临时单元,存储位码内容
37H、39H 在按键子程序中用于内外循环计数
38H 按键子程序存放查表后得到的编码
3AH 临时单元,存放逐行开的编码
3BH 密码错误次数计数器
40H 在按键子程序中存放键盘的值
R0 在显示子程序中作显示缓冲区的指针
R2 数字键输入次数计数器
R4 在中断中作计数器
R5、R6 延时子程序循环计数器
R7 显示子程序六个数码管逐个显示计数器
20H.0=1 密码正确标志位
20H.1=1 设置键按下标志位
20H.2=1 当前输入的是新密码标志位
20H.3=1 密码三次错误报警开启标志位
三、任务要求及源程序
1.任务要求
密码锁功能:数码管初始显示6个横线,设置原始密码为6个0。输入原始密码。密码错误,错误指示灯亮,输入3次错误,报警指示灯亮,定时10秒,10秒内任何按键都不起作用。密码正确,锁开,处于开门状态,此时设置键有效,数字键输入无效,关门键也有效。
若要修改密码,只能在开门状态,设置键按下,输入一次旧密码。若旧密码输入错误,此时旧密码输入错误次数加上开锁密码错误次数等于3次,报警定时,10秒后恢复锁关状态,锁的密码为新设置的密码若未设置新密码,则为旧密码。旧密码正确后才可输入新密码,新密码输入后按下确定键,退出设置状态,返回到开门状态。确定键在输入6个数以后才有效,退格键在有数字时才有效。
0-9号按键作为数字键,最多输入六次;
10号-退格键; 11号-确定键; 12号-设置键;
13号-关门键; 14号-退出设置状态键。
- ORG 0000H
- AJMP START
- ORG 000BH
- AJMP DIST
- ORG 0030H
- START: MOV TMOD, #01H
- MOV TH0, #3CH
- MOV TL0, #0B0H
- SETB EA
- SETB ET0
- ACALL XSCSH ;显示缓冲区初始化显示6个横线
- ACALL CSH
- MOV 3BH, #0
- MOV 50H, #0
- MOV 51H ,#0
- MOV 52H, #0
- MOV 53H, #0
- MOV 54H, #0
- MOV 55H,#0 ;原始密码设置为六个0
- LOOP: ACALL DISP
- ACALL AJ
- AJMP LOOP
- ;显示子程序
DISP: MOV R7, #6
- MOV R0, #30H
- MOV
- DPTR, #TAB
- MOV 36H, #01H
- LOOP1: MOV A,@R0
- MOVC A, @A+DPTR
- MOV P0, A
- MOV P2, 36H
- ACALL DELAY
- INC R0
- MOV A, 36H
- RL
- A
- MOV 36H,A
- DJNZ R7,LOOP1
- RET