你的位置:首页 > 电子技术 > 电子制作/单片机

经济安全的电子密码锁

2008/4/23 22:11:07 浏览:4631

经济、安全的电子密码锁

    一种能防止多次试探密码的基于单片机的密码锁设计方案,根据用户的10条总体要求,给出了该单片机密码锁的硬件电路和软件程序,同 时给出了单片机型号的选择、硬件设计、软件流程图、单片机存储单元的分配、汇编语言源程序及详细注释等内容。很多行业的许多地方都需要密码锁,但普通密码 锁的密码容易被多次试探而破译。本文给出了一种能防止多次试探密码的密码锁设计方法,从而有效地克服了上述缺点。

 硬件电路

图1所示是笔者设计的一种密码锁电路。该密码锁主要 是以下10条特点:

(1)总共可以设置8位密码,每位的取值范围为1~8。

(2)用户可以自行设定和修改密码。

(3)按每个密码键时都有声音提示。

(4)若键入的8位开锁密码不完全正确,则报警5秒钟,以提醒他人注意。

(5)开锁密码连续错3次要报警1分钟,报警期间输入密码无效,以防窃贼多次试探密码。

(6)键入的8位开锁密码完全正确才能开锁,开锁时要有1秒的提示音。

(7)电磁锁的电磁线圈每次通电5秒,然后恢复初态。

(8)密码键盘上只允许有8个密码按键。锁内有备用电池,只有内部上电复位时才能设置或修改密码,因此,仅在门外按键是不能修改或设置密码的。

    (9)密码设定完毕后要有2秒的提示音。

(10)成本低,硬件和软件都很简洁可靠,易于批量生产。

根据总体要求分析,该密码锁电路所需要的i/o口线少于15个,若设计得当,程序不会超过200条指令,所以可选择质优价廉的at89c1051/20 51或者gms1051/2051,而且不需要外接程序存储器和数据存储器及其它扩展部件,所以成本很经济。

经济、安全的电子密码锁

图1 电磁锁原理图

在图1所示电路中,p1口连接8个密码按键an1~an8,开锁 信号由p3.2输出,报警和提示音由p3.7输出。bl是用于报警与声音提示的喇叭,k 是继电器控制电磁线圈。

 软件设计

图2给出了该单片机密码锁电路的软件流程图。图中aa1~aa8以及start、set、save是程序中的标号,是为了理解程序而专门标在流程图的 对应位置的,分析程序时可以仔细对照参考。

3.1 存储单元的分配

该密码锁中ram存储单元的分配方案如下:

31h~38h:依次存放8位设定的密码,首位密码存放在31h单元;

r0:指向密码地址;

r2:已经键入密码的位数;

r3:存放允许的错码次数3与实际错码次数的差值;

r4至r7:延时用;

00h:错码标志位。

对于rom存储单元的分配,由于程序比较短,而且占用的存储空间比较少,因此,在无特殊要求时,可以从0030h单元(其它地址也可以)开始存放主程序。
经济、安全的电子密码锁

图2  电磁锁程序流程图

 源程序

下面是该电子密码锁的软件源程序代码:

org 0000h

ajmp start

org 0030h

start:acall bp

mov r0,#31h

mov r2,#8

set: mov p1,#0ffh

mov a,p1

cjne a,#0ffh,l8

ajmp set

l8: acall delay

cjne a,#0ffh,save

ajmp set

save: acall bp

mov @r0 a

inc r0

djnz r2,set

mov r5,#16

d2s: acall bp

djnz r5,d2s

mov r0,#31h

mov r3,#3

aa1: mov r2,#8

aa2: mov p1,#0ffh

mov a,p1

cjne a,#0ffh, l9

ajmp aa2

l9 acall delay

cjne a,#0ffh,aa3

ajmp aa2

aa3: acall bp

clr c

subb a, @r0

inc r0

cjne a,#00h,aa4

ajmp aa5

aa4: setb 00h

aa5: djnz r2,aa2

jb 00h aa6

clr p3.5

l3 mov r5,#8

acall bp

djnz r4,l3

mov r3,#3

setb p3.5

ajmp aa1

aa6: djnz r3,aa7

mov r5,#24

l5: mov r4,#200

l4: acall bp

djnz r4,l4

djnz r5,l5

mov r3,#3

aa7: mov r5,#40

acall bp

djnz r5,aa7

aa8: clr 00h

ajmp aa1

bp: clr p3.7

mov r7,#250

l2: mov r6,#124

l1: djnz r6,l1

cpl p3.7

djnz r7,l2

setb p3.7

ret

delay mov r7,#20

l7: mov r6,#125

l6: djnz r6,l6

djnz r7,l7

ret

end 

 应用说明

若按键an1~an7分别代表数码1~7,按键an0代表数码8。在没有键按下时,p1.0~p1.7全是高电平1,若某个键被按下,相应的口线就变为 低电平0。假如设定的密码是61234578,当按键an6被按下时,p1.6变为低电平,p1端口其余口线为高电平,此时从p1端口读入的数值为101 11111,存到31h单元的密码值就是10111111,也就是bfh。依此类推,存到32h至38h单元的密码值分别是fdh、fbh、f7h、ef h、dfh、7fh、feh。开锁时必须先按an6,使从p1口读入的第一个密码值与31h单元存储的设定值相同,再顺序按an1、an2、an3、an 4、an5、an7、an0才能开锁。否则不能开锁,同时开始报警。

扫描二维码手机端查看