完整word版电子密码锁设计.docx
《完整word版电子密码锁设计.docx》由会员分享,可在线阅读,更多相关《完整word版电子密码锁设计.docx(19页珍藏版)》请在冰豆网上搜索。
完整word版电子密码锁设计
电子密码锁设计
1设计任务及要求
初始条件:
计算机、Max+plusn、EDA实验箱。
主要任务与要求:
设计一个电子密码锁,在锁开的状态下输入密码,设置的密码共4
位,用数据开关K1〜K10分别代表数字1,2,…,9,0,输入的密码用数码管显示,最后
输入的密码显示在最右边的数码管上,即每输入一位数,密码在数码管上的显示左移一位。
可删除输入的数字,删除的是最后输入的数字,每删除一位,密码在数码管的显示右移一位,并在左边空出的位上补充“0”用一位输出电平的状态代表锁的开闭状态。
提高部分:
为保证密码锁主人能打开密码锁,设置一个万能密码,在主人忘记密码时使用。
2EDA简介
EDA技术是在电子CAD技术基础上发展起来的通用软件系统,是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。
EDA设计可分为系统级、电路级和物理实现级。
物理级设计主要指IC版图设计,
般由半导体厂家完成;系统级设计主要面对大型复杂的电子产品;而一般民用及教学所涉及基本是电路级设计。
我们常用的EDA软件多属于电路级设计。
电路初级设计工作,是在电子工程师接受系统设计任务后,首先确定设计方案,并选择合适的元器件,然后根据具体的元器件设计电路原理图,接着进行第一次仿真。
其中包括数字电路的逻辑模拟、故障分析、模拟电路的交直流分析、瞬态分析等。
这一次仿真主要是检验设计方案在功能方面的正确性。
仿真通过后,根据原理图产生的电气连接网络表进行PCB板的自动布局布线,有条件
的还可以进行PCB后分析。
其中包括热分析、噪声及窜扰分析、电磁兼容分析、可靠性分析等,并可将分析后的结果参数反馈回电路图,进行第二次仿真,也称作后仿真。
后仿真主要是检验PCB板在实际工作环境中的可行性。
EDAX具层出不穷,目前进入我国并具有广泛影响的EDA软件有:
multiSIM7(原EWB的最新版本)、PSPICEOrCADPCADProtel、Viewlogic、Mentor、Graphies、Synopsys、
LSIIogic、CadeneeMieroSim等等。
这些工具都有较强的功能,一般可用于几个方面,
例如很多软件都可以进行电路设计与仿真,同进还可以进行PCB自动布局布线,可输出多
种网表文件与第三方软件接口。
在本实验中采用的是VHDL编程,通过文本编辑方式建立模块,通过原理图方式将生
成的图形符号连接,然后再下载,进行硬件的仿真。
密码锁要达到的功能为:
1、密码输入:
每按下一个键,要求在数码管上显示,并依次左移;
2、密码删除:
每删除一位,数码管上的显示右移一位,在左边空出的位补充零;
3、密码设置:
当四位密码输入完毕,按下设置功能键进行设置;
4、密码检验:
输入密码,按下检验键。
为达到密码锁的以上功能,可将电子密码锁分为以下几个模块:
密码锁输入电路、密
码锁控制电路、LED输出显示电路。
总原理图如下
BUIT嶼业
iEEr_BUTTDN'罐丫•
OPCXJUTTOI二喝:
■■■■••••••••••■,弋■
atJCh_HJTTCNm:
5CIK
ET_B-LfTT<]H
C—TT砂
LO5C_»IJTT<]MLE[>_»«DJ.-6E3.5-..O>]
LOCK
C.BU日[二a]
PLITTPHE3.■PJ3--町卜—
图1密码锁设计总原理图
4各模块电路设计及功能实现
4.1密码锁输入模块
密码锁输入模块由时序产生电路、键盘扫描电路、键盘译码电路和按键存储电路组成。
1.时序产生电路
产生电路中使用的三种不同频率的工作脉冲波形,即系统时钟脉冲、弹跳消除取样信号和键盘扫描信号。
2.键盘扫描电路
扫描电路的作用是提供键盘扫描信号,扫描信号变化的顺序依次为
1110-1101-1011-0111-1110……依序地周而复始。
3.键盘译码电路
上述键盘中的按键分为数字按键和文字按键,每一个按键可能负责不同的功能,例如清除键、上锁键和解锁键等。
数字按键主要是用来输入数字的,但是键盘所产生的输出是无法直接拿来用作密码锁控制电路的输入的;另外,不同的按键具有不同的功能,所以必须由键盘译码电路来规划每个按键的输出形式,以便执行相应的动作。
4.按键存储电路
因为每次扫描会产生新的按键数据,可能会覆盖前面的数据,所以需要一个按键存储电路,将整个扫描完毕后的结果记录下来。
打描位nrsREi..o]
00
00
00
01
01
{Jj
ID
10
101I
]J
11
讎盘幡出信号SELE3*-0]
0011
Ol'0'l
0110
0011
010]
Clio
0011
GtOl
fUlOOQll
0101
0110
按傩号
1
2
3
4
5
6
7
S
9»
0
c
图2按键位置与数码关系
4.2密码锁控制电路
密码锁的控制电路是整个电路的控制中心,包括密码删除、修改与检验,其控制作用主要体现在以下方面:
1.数字按键输入的响应控制
a.如果按下数字键,第一个数字会从显示器的最右端开始显示,此后每新按下一个数字时,
显示器上的数字必须左移一位,以便将新的数字显示出来。
b.假如要更改输入的数字,可以按倒退按键来清除前一个输入的数字,或者按清除键清除
所有输入的数字,再重新输入四位数。
c.由于这里设计的是一个四位的电子密码锁,所以当输入的数字键超过四个时,电路不予
理会,而且不再显示第四个以后的数字。
2.功能按键输入的响应控制
清除所有的输入数字,即作归零动作。
b.上锁键
c.解除键
按下此键时可将密码锁的门上锁(上锁前必须预先设定一个四位的数字密码)。
按下此键会检查输入的密码是否正确,若密码正确无误则解锁。
4-
本设计的密码锁控制电路如下图所示:
t_buttoh
CHECK_BUTTOM
OLOSlE_buttom
l_ED.DCDJ.^CJ.E__O]
eACK_BUTTON
ei-K
LED_BCOE3__O]
LOCK
AiOVAN
图3密码锁控制电路
端口,lock密码锁状态显示端口。
每按下一次
在此电路中每输一位数,密码在数码管上左移一位。
设置删除密码back,back,删除最后输入的数字,左边空处补0。
设置密码确认信号set,当四位密码输入完毕,按下set,设置的密码被存储。
设置密码锁状态信号lock,lock=0表示锁未开,lock=1表示锁开,同时设置关锁信号
close,按下close,则锁关闭。
设置密码检验信号check,在lock=0下从数据开关书去四位开锁数字,按下check,若数
据等于设置的密码或万能密码,则lock=10
4.3输出显示电路
BCD译码、动态扫描电路如图4所示。
XlfliNSHI
.O]LED_BCOlt[iS.■O]
^™kED_COOE.O]CLK一=
图4输入显示电路
输出显示电路通过一个二进制计数器对数码管进行片选,片选为0,输入的第0-3位
进而实现数码管的动态显示。
制电路,之后输出到数码管动态显示电路。
5系统仿真
5.1波形仿真图形
在进行编程的过程中,对每一模块都要进行波形仿真。
键盘模块、控制模块、动态显
示模块的波形仿真图分别如图5、图6图7所示。
R址pSO.flRs
Time:
”曲.Due
Interval:
-505.0ns
司souip..O]
Value-1
qa
HXXX
HX-
mo
Ref.&20.ans
Name'
iirset
AM
If-closei^clk
It-check■t^Focka^dn[30]®S0Lit1[1b0]
fl
B
0
0
*
H0
Hxm
100.0ns200.Ons3000ns400.0nsSOOlOis600.On^
ozuniiiBEEEraraiEn
图5编码器仿真波形
|7171Time.阀.弧
Heral:
-51.205
100'0ns200.0ns300One4000ns500.Gns6i
图6控制电路仿真波形
.Name._「
严1脱
r
i^clkl
0
呼din[150]
HOOOX
fliZ|lMs1|con
HX
电sn[2..O]
HX
@Le(17[G..O]
HKX
06
W00ns200'0ns
300.0ns
400OnJ500On
3721
回可匡1叵回叵I曰叵回叵回叵
图7动态现实仿真波形
5.2结果分析
在图5中可知,输入“001”、“002”、“004”、“008”、“010”、“020”、“040”、“080”、
“080”、“100”、“200”分别表示选择开关k1、k2、..k9、k10,输出数据1,2,3…9,0,
从波形中我们可以看出这是符合。
图6所示,输入密码“6520”后按Close,Lock=“1”
表示关锁,再次输入“6520”按Check,密码锁打开Lock=“0”。
图7中,C-display计数
到“0”、“1”、“2”、“3”时,SELOUT分别为“1110”、“1101”、“1011”、“0111”,表示片
选第0、1、2、3个数码显示管,符合设计要求。
6实验程序及流程图
根据设计原理分析,本设计为三个模块:
开关编码模块、控制模块、动态显示模块。
设计的总结构图为图8所示。
图8设计结构图
6.1输入开关编码程序
whenothers=>tempv="1111";endcase;
endprocess;
sout<=temp;
endat;
6.2密码锁控制模块流程图及程序
图9控制模块流程图
----定义实体
程序代码为:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityartis
Port(set,check,close,back,clk:
instd_logic;
---set密码设置信号,check密码检验信号,
dn:
instd_logic_vector(3downto0);
---close关锁信号back密码删除信号,clk时钟信号
sout:
outstd_logic_vector(15downto0);
---16位输入信号
lock:
outstd_logic);
---设置密码锁状态信号
endart;
architectureatofartis
定义结构体
signalch:
std_logic;
begin
process(clk,dn)
--定义进程变量
variablelock_1:
std_logic;
variableacc:
std_logic_vector(15downto0);
variabletemp1,temp2,temp3,temp4:
std_logic_vector(3downto0);
begin
ch<=not(dn(0)anddn⑴anddn
(2)anddn(3));
---设置按键输入上升沿
lock_1:
='0';
ifclk'eventandclk-1'then
ifch='1'then
密码左移显示
temp4:
=temp3;
temp3:
=temp2;
temp2:
=temp1;
temp1:
=dn;
endif;
ifback='1'then
----密码删除右移显示
temp1:
=temp2;
temp2:
=temp3;
temp3:
=temp4;
temp4:
="0000";
lock_1:
='0';
endif;
endif;
ifset='1'then
密码设置
acc:
=temp4&temp3&temp2&temp1;
lock_1:
='0';
endif;
ifcheck='1'then
----密码校验
ifacc=temp4&temp3&temp2&temp1thenlock_1:
='1';
elsiftemp4="1000"andtemp3="1000"andtemp2="1000"andtemp仁"1000"then
lock_1:
='1';
endif;
endif;
ifclose='1'then
lock_1:
='0';
----密码锁的关闭
temp1:
="0000";
temp2:
="0000";
temp3:
="0000";
temp4:
="0000";
endif;
endif;
sout<=temp4&temp3&temp2&temp1;
lock<=lock_1;
endat;
6.3数码管的动态显示流程图及程序
程序代码为:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityledsis
定义实体
port(din:
instd_logic_vector(15downto0);
----16输入信号
clk:
instd_logic;
---时钟信号
con:
bufferstd_logic_vector(1downto0);
led7:
outstd_logic_vector(6downto0);
---七段数码管输入信号
sn:
outstd_logic_vector(2downto0));
----数码管七段译码信号
endleds;
architectureheofledsis
定义结构体
signaldb:
std_logic_vector(3downto0);
begin
process(clk,din)
begin
ifclk'eventandclk-1'then
conv=con+1;
----数码管的片选计数
endif;
dbv=din(3downto0);
sn<="000";
elsif(con="01")then
----片选为1,4~7位显示
db<=din(7downto4);
sn<="001";
elsif(con="10")then
---片选为2,8~11位显示
db<=din(11downto8);
sn<="010";
elsif(con="11")then
----片选为3,12~15位显示
db<=din(15downto12);
sn<="011";
----数码管的译码
endif;
casedbiswhen"0000"=>led7<="0111111";
when"0001"=>led7<="0000110";
when"0010"=>led7<="1011011";
when"0011"=>led7<="1001111";
when"0100"=>led7<="1100110";
when"0101"=>led7<="1101101";
when"0110"=>led7<="1111101";
when"0111"=>led7<="0000111";
when"1000"=>led7<="1111111";
when"1001"=>led7<="1101111";
whenothers=>led7<="0000000";
endprocess;
endhe;
7心得体会
通过本次课程设计的学习,我深深的体会到设计课的重要性和目的性所在。
本次设计课不仅仅培养了我们实际操作能力,也培养了我们灵活运用课本知识,理论联系实际,独立自主的进行设计的能力。
作为学习自动化专业的学生,应该熟练掌握各种电路编辑软件,作为专业必需的技
能,即将踏入社会的时候,更加要求我们有这方面的基础。
随着电子技术的飞速发展,各种新型电子器件和集成电路应用越来越广泛,电子系统的功能越来越强大,电路图也越来越复杂,印刷电路板的走线越来越复杂和精密。
计算机的应用使得我们对各种复杂的电路
设计工作变得简单一些,使得更好更复杂的电路得以实现。
电子设计自动化(Electronics
DesignAutomates,即EDA工具的集成设计环境,电子设计软件Max+plusii软件等的运
用使得设计电路更加方便。
通过这次课程设计,我感觉到不会的知识还有很多,还有很多软件、硬件知识需要去学习,在今后的学习生活中,一定充分利用时间,不断充实自己。
8参考文献
[1]高有堂《EDA技术及应用实践》清华大学出版社。
2006
[2]林敏,方颖立《VHDL数字系统设计与高层次综合》电子工业出版社。
2002
[3]王锁平《电子设计自动化(EDA教程》电子科技大学出版社。
2000
[4]潘送等编著《EAD技术使用教程》科学出版社。
2002
⑸谭会生,瞿遂春《EAD技术综合应用实例与分析》西安电子科技大学出版社。
2004