数字密码锁设计

更新时间:2023-11-25 04:30:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

数字密码锁设计

摘要: 本次课程设计的题目是电子密码校验设计,由输入密码、设定密码、寄存电路、比较电路、显示电路、修改密码组成。本电子密码锁利用数字逻辑电路,实现对锁的电子控制,突破了传统的机械锁的单一性、保密性低、易撬性的缺点,数字电子密码锁具有保密性高、使用灵活性好、安全系数高的优点。 主要工作部分是将输入密码与正确密码进行比较,密码正确时绿色发光二极管亮,密码错误则红色发光二极管亮。输入电路将8位密码并行输入,并将8位二进制密码寄存在74LS373中。密码是否相等利用同或门将输入的密码和预定密码进行比较,当相等时便触发红色发光二极管,不相等则作用到绿色发光二极管。同时经过显示译码器作用到数码显示器显示密码。它的电路结构简单,但电路具有复杂的数字逻辑关系,密码破译难度较大,操作简单,用户使用方便。综合看来,此电子密码锁实用性强。随着电子产品向智能化和微型化的不断发展,数字逻辑电路电子芯片已成为电子产品研制和开发首选的控制器。

关键词:计数器 编码器 数字密码锁 数据选择器

一、引言

数字密码锁是二十一世纪制锁业的一次革命。密码锁的特点是不用钥匙、无锁孔、机械传动、不易损坏、不磨损、不易被破译、可多次更换密码、换号不换锁、一把锁多个密码,具有防拨、防砸、防撬、防堵等功能。安装门锁时不破坏原门的结构,避免用钥匙开启旋芯式锁具的一切烦恼(如丢、落、拆、堵门被反锁等)。“数字密码锁”是利用数字密码来开启的锁具,其重复概率仅为十万分之一,有着很高的安全性;而旋芯式锁具使用不够安全。通过对社会各阶层千余人的调查,百分之百的人对目前身上挂着的串串钥匙无可奈何。但现在又没有一种锁具可摆脱钥匙的束缚。都愿意一身轻松没有任何顾虑的出入家门,都愿意用上一种既安全方便又不用钥匙的锁具。因此,密码锁的市场发展前景极为广阔。随着社会的发展和人们生活水平的提高,人们的安全意识也逐步加强,密码锁以其安全性高、成本低、功耗低、易操作等优点受到越来越多人的欢迎。 二、方案设计及工作原理

十位数字密码锁系统可以分为两部分来设计,一部分是开锁电路,一部分是响铃 电路,把两部分按一定的规则方式结合起来就构成了具有特有功能的十位数字密

码锁。其中开锁电路主要由TTL边沿D触发器7474组成,响铃电路组要由555定时器组成。系统工作原理:用密码去控制各位D触发器的翻转,达到密码开锁的目的;用伪键开关去控制电子铃的触发信号,达到按响电子铃的目的。 1.四位密码锁主体电路

四个D触发器N1~N4构成四位密码电路,本电路密码设定为2579S2、S5、S7、S9分别是2、7、9四位密码的按钮端;平时四个D触发器的cp端悬空相当于1状态,触发器保持原状态不变。当按下S2时,CP4为低电平,松手后S2自动恢复高电平,CP4获上升沿此时Q4=D4=1;再按下S5时,CP3为低电平,松手后S5自动恢复高电平,CP2获上升沿,此时Q3=D3= Q4=1;同理,按下S7并松手后,Q2=D2= Q3=1;按下S9并松手后,Q1=D1= Q2=1,用此Q1=1去控制开锁机构即可此处用R5和LED显示来代替开锁机构开锁。 2.置零与电子门铃控制电路

C2因电压不能突变,在接通电源瞬间C2电压为零使N1~N4各位皆为零。 6个伪键既用于四个D触发器直接置零,又用于控制电子铃电路555定时器的触发端。图中的555定时器,它构成多谐振荡器。按下伪键(混在密码中),振荡器振荡,扬声器发

出“口丁”的声音。与此同时,电源通过二极管VD1给c1充电。放开按钮时,c便通过电阻R1放电,维持振荡。但由于SB的断开,电阻R2被串入电路,使振荡频率有所改变,振荡频率变小,扬声器发出“咚”的声音。直到C1上的电压放到不能维持555振荡为止,即4脚变为低电平,3脚输出为零。“咚”声余音的长 短可通过改变C1的数值来改变。 三、各功能模块设计和仿真 1.编码电路的设计

由按键开关S0~S9与二极管VD1~VD12构成三位BCD码编码电路,S1~S7对应的BCD码分别为001~111,S0,S8,S9起迷惑作用,且具有复位功能. 2.数据选择器的设计

CD4512为8选1数据选择器,其选择端CBA输入的是编码电路产生的三位BCD码,用以输入密码。

其中D0~ D7为数据输入端,14脚为输出端如按下按扭S3时,编码电路产生

的BCD码为011,CD4512的选择端CBA=011,这时将数据输出端D3输入的信号送到输出端14脚,即14脚的输出信号电平与D3输入信号电平一致。 3.单稳态触发器的设计

CD4013为双D触发器,将其中两个触发器分别连接成单稳触发电路主要目的是为了防止触点抖动而产生失误IC3A,IC3B构成的单稳电路稳态为Q=0,当Q=1,则经电阻向电容充电,产生复位电压使Q段置0,当S0~S9中任一按键被按下时,电源电压经过VD22~VD24加到VT1的基极,使VT1导通,VT2截止(按键按下前,VT1截止,VT2导通),IC3A的时钟输入端有上升沿作用,使得Q=D=1为高电平,`Q非=0.经过一段时间充电后电容器C2上端变为高电平,复位端R作用使Q变为0。则Q非由0变成1,作为上升沿时钟信号控制IC3B及CD4017工作。 4.计数/分配器电路的设计

CD4017为十进制计数器,在记数脉冲作用下Q0~Q9逐位输出高电平,RST为高电平有效的复位端.正常记数时RST应接低电平。若RST为高电平,则复位后为Q0为高电平,Q1~Q9构成低电平。 5.讯响电路的设计

VT5~VT8构成讯响电路,使得每按下一次按键,讯响器HA都发出“嘟”的一声提示音。

数字密码锁的总体设计就是这些,当然,每部分的电路的作用及功能我们将在下一章详细介绍。通过元器件布局实践证明,即使电路原理图设计正确,印制电路板设计不当,也会对电子设备的可靠性产生不利影响。例如,如果印制板两条细平行线靠得很近,则会形成信号波形的延迟,在传输线的终端形成反射噪声;由于电源、地线的考虑不周到而引起的干扰,会使产品的性能下降,因此,在设计印制电路板的时候,应注意采用正确的方法。

在设计好了个单元的电路之后,利用编码电路,数据选择器,单稳态触发器,讯响电路进行了电路图的总的设计。 四、结果分析和调试

调试方法:在直流稳压电源通电测试之前,必须认真对安装电路进行检查。 对电源变压器的绝缘电阻进行检测,以防止变压器漏电,危及人身和设备的安全。一般采用兆欧表测量一、二次绕组之间,各绕组与接地屏蔽层之间,以及绕组与

铁芯之间的绝缘电阻,其值不应小于1000兆欧,如果万用表高电阻挡检测,则其指示电阻均为无穷大。

用万用表检测电源的正负极是否接反,有无短路现象,电源线、地线是否接触可靠二极管的引脚(或整流硅桥)和滤波电容器的极性不能相反,否则将会损坏元器件。

检查负载端不应该有短路现象。

在电路的输入端设置成符合要求的高(或低)电平,测量电路各点的电位值及逻辑关系是否正确。 五、体会

课程设计是我们专业课程知识综合应用的实践训练,着是我们迈向社会,从事职业工作前一个必不少的过程.”千里之行始于足下”,通过这次课程设计,我们深深体会到这句千古名言的真正含义.我们今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础.对于课程设计来说,正确的思路是很重要的,只有你的设计思路是正确的,那你的设计才有可能成功。因此,我们在设计前必须做好充分的准备,认真查找详细的资料,为我们设计的成功打下坚实的基础。用大脑去控制行动,才能做到事半功倍,以最有效率的方式达到我们的目的。 六、参考文献

[1]《数字电路实验》 主编 夏桂书 中国民航飞行学院 [2]《数字电子技术基础》 主编 阎 石 高等教育出版社 [3]《电子技术实验与课程设计》 主编 李震梅 机械工业出版社 七、附录

library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all;

-------------------------------------------------------------------- entity CHECK is

port( Clk : in std_logic; --时钟信号 Rst : in std_logic; --复位信号

key : in std_logic_vector(4 downto 0); --按键的BCD编码 KEY_State : in std_logic; --当前按键指示,已延时一个时钟周期 open_Door : buffer std_logic; --开门标志:持续5秒钟 Door : buffer std_logic; --门状态

Error_Flag : buffer std_logic; --出错标志:持续3秒钟 Error3 : out std_logic; --3次错误标志

buff1,buff2,buff3,buff4,buff5,buff6,buff7,buff8 : buffer std_logic_vector(4 downto 0)

--输入的8位数的BCD编码);end CHECK; -------------------------------------------------------------------- architecture behave of CHECK is type state is (s0,s1,s2,s3,s4,s5,s6,s7); signal current_s : state;

signal save1,save2,save3,save4,save5,save6,save7,save8 : std_logic_vector(4 downto 0); --保存密码 signal Error_Num : std_logic_vector(3 downto 0); --输入错误次数 signal PRE_KEY_State : std_logic; --上一刻按键指示 signal Count : integer range 0 to 100000; --计数器

signal current_key : std_logic_vector(4 downto 0); --按键值,按下键后持续一个时钟周期 begin process(Clk) begin

if(Clk'event and Clk='1') then-存储上一刻的按键状态和输入状态

PRE_KEY_State<=KEY_State;

if(pre_KEY_State = '0' and KEY_State = '1') then

current_key<=key;--current_key读取按键值并只持续一个周期

else

current_key<=(others=>'1'); end if; end if;

end process; process(Clk)

begin

if(Rst='0') then

current_s<=s0;

Error_Num<=(others=>'0'); Door<='0';

elsif(Clk'event and Clk='1') then

本文来源:https://www.bwwdw.com/article/g60t.html

Top