ImageVerifierCode 换一换
格式:DOCX , 页数:29 ,大小:217.62KB ,
资源ID:3998734      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3998734.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(EDA电子密码锁课程设计样本.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

EDA电子密码锁课程设计样本.docx

1、EDA电子密码锁课程设计样本 概述在当今社会中,人们对于隐私保护和对物品安全注重限度与日俱增。因而,使用了当代电子技术电子密码锁便有了广泛应用前景。本次所设计电子密码锁,可以实现该六位十进制并行密码保护,当输入密码与锁内密码一致时,绿灯亮,开锁;当输入密码与锁内密码不一致时,红灯亮,不能开锁。密码锁密码可由顾客自行设立,并可在液晶显示屏上显示所输入密码。为人们财产、信息安全提供了可靠地保障。本次设计基于VHDL语言,对并行六位电子密码锁进行设计,并对设计过程进行了详细描述。采用VHDL语言进行电子密码锁设计可使设计工作简洁直观,迅速实现既定功能。电子密码锁在对财产安全保护等方面均有着重要作用,

2、应用前景非常广泛。开锁代码为六位十进制数,当输入代码位数和位值与锁内给定密码一致,且按规定程序开锁时,方可开锁,并点亮开锁批示灯。否则,系统进入“错误”状态,并发出报警信号。开锁程序由设计者拟定,并规定锁内给定密码是可调,且预置以便,保密性好。并行数字锁报警方式是点亮批示灯,并使喇叭鸣叫来报警,直到按下复位开关,报警才停止。此时,数字锁又自动进入等待下一次开锁状态。 一、设计重要内容1、密码锁串行输入几位十进制数字口令2、输入口令所有对的即开锁并有绿灯显示3、口令输入最大次数3次,规定在完全输入六位之后进行判断口令对的与否;输入3次之后还不能开锁,进入死锁状态并报警4、有相应显示功能5、开锁后

3、能再次上锁 二、系统设计方案 作为通用电子密码锁,重要由三个某些构成:数字密码输入电路、密码锁控制电路和密码锁显示电路。(1)密码锁输入电路涉及时序产生电路、键盘扫描电路、键盘译码电路等几种小功能电路。(2) 密码锁控制电路涉及按键数据缓冲存储电路,密码清除、存储、激活电锁电路(寄存器清除信号发生电路),密码核对(数值比较电路),解锁电路(开/关门锁电路)等几种小功能电路。(3)密码显示电路重要是在液晶显示屏显示输入数值。 2.1密码锁输入电路设计 是电子密码锁输入电路框图,由键盘扫描电路、弹跳消除电路、键盘译码电路、按键数据缓存器,加上外接一种44矩阵式键盘构成。 图1-1 密码锁输入电路框

4、图 1矩阵式键盘工作原理 矩阵式键盘是一种常用输入装置,在寻常生活中,矩阵式键盘在计算机、电话、手机、微波炉等各式电子产品上已经被广泛应用。图1-2是一种34矩阵式键盘面板配备图,其中数字09作为密码数字输入按键。 图1-2 4 4矩阵式键盘面板配备 2.2密码锁输入电路各重要功能模块设计 1) 时序产生电路 本时序产生电路中使用了三种不同频率工作脉冲波形:系统时钟脉冲(它是系统内部所有时钟脉冲源头,且其频率最高)、弹跳消除取样信号、键盘扫描信号。 2) 键盘扫描电路 扫描电路作用是用来提供键盘扫描信号,扫描信号变化顺序依次为11101101101101111110.依序地周而复始。 3) 弹

5、跳消除电路 由于本设计中采用矩阵式键盘是机械开关构造,因而在开关切换瞬间会在接触点浮现信号来回弹跳现象,对于电子密码锁这种敏捷度较高电路这种弹跳将很也许会导致误动作输入,从而影响到密码锁操作对的性。 从图1-3中可以观测出弹跳现象产生因素,虽然只是按下按键一次然后放掉,然而实际产生按键信号却不止跳动一次,通过取样信号检查后,将会导致误判断,觉得键盘按了两次。如果调节抽样频率(如图4.5所示),可以发现弹跳现象获得了改进。 图1-3弹跳现象产生错误抽样成果 图1-4 调节抽样频率后得到抽样成果 4) 键盘译码电路 上述键盘中按键可分为数字按键和文字按键,每一种按键也许负责不同功能,例如清除数码、

6、退位、激活电锁、开锁等。 5) 按键存储电路 由于每次扫描会产生新按键数据,也许会覆盖前面数据,因此需要一种按键存储电路,将整个键盘扫描完毕后成果记录下来。按键存储电路可以使用移位寄存器构成。 图1-5 输入电路仿真波形图2.3 密码锁控制电路设计 密码锁控制电路是整个电路控制中心,重要完毕对数字按键输入和功能按键输入响应控制。 1数字按键输入响应控制 (1) 如果按下数字键,第一种数字会从显示屏最右端开始显示,此后每新按一种数字时,显示屏上数字必要左移一格,以便将新数字显示出来。 (2) 如果要更改输入数字,可以按倒退按键来清除前一种输入数字,或者按清除键清除所有输入数字,再重新输入六位数。

7、 (3) 由于这里设计是一种六位电子密码锁,因此当输入数字键超过四个时,电路不予理睬,并且不再显示第六个后来数字。 2.4功能按键输入响应控制 (1) 清除键:清除所有输入数字,即做归零动作。 (2) 激活电锁键:按下此键时可将密码锁门上锁。(上锁前必要预先设定一种六位数字密码。) (3) 解除电锁键:按下此键会检查输入密码与否对的,若密码对的无误则开门。 图1-5 电子密码锁三种模式及关系2.5 密码锁显示电路设计 密码锁显示电路设计比较复杂,这里直接采用12864液晶屏进行显示。 2.6 密码锁整体组装设计 将前面各个设计好功能模块进行整合,可得到一种完整电子密码锁系统整体组装设计原理图,

8、如图1-6所示。 图1-6 密码锁整体组装设计原理图三、系统扩展思路 (1) 本系统基本达到作为数字密码锁绝大某些功能,但尚有许多局限性或需完善地方。例如说采用44通用机械键盘受到键盘数量限制,在很大限度上限制了其功能扩展。 (2) 设计外围电路:系统用方波信号源,直流工作电源。(3) 可规定设计制作整个系统,涉及PCB制作。四、实验收获 课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力重要环节,是对学生实际工作能力详细训练和考察过程。随着科学技术发展日新月异,FPGA已经成为当今计算机应用中空前活跃领域,在生活中可以说无处不在。因而作为21世纪大学来说掌握ed

9、a开发技术是十分必要。 回顾本次课程设计,我感触颇多,确,从理论到实践,在很长一段时间里,可以说是苦多于甜,但的确学到了诸多东西,不但可以巩固此前学到知识,还学到许多没学过知识。通过本次课程设计,使我理解了理论与实际结合重要性,只有理论知识是远远不够。在设计过程中,发现自己此前学习知识理解不够深刻,掌握不够牢固等等。通过这次课设之后,一定要把此前学习知识温故知新。 这次课设终于完毕,通过教师细心解说,我解决了诸多问题。在这里,感谢教师细心指引。同步对于协助我同窗,也表达衷心感谢。 附录1、液晶显示程序library ieee;use ieee.std_logic_1164.all;use ie

10、ee.std_logic_unsigned.all;use IEEE.STD_LOGIC_ARITH.ALL;entity clock_lcd_disp is generic(divide_to_100k:integer:=500); port(clk:in std_logic; DATAIN:in std_logic_vector(31 downto 0); din:in INTEGER RANGE 15 DOWNTO 0; rw,rs,e,lcd_rst:out std_logic; lcd_data:out std_logic_vector(7 downto 0); end clock_

11、lcd_disp;architecture tcl of clock_lcd_disp is signal mima:std_logic_vector(31 downto 0):=01111000; signal clk_100k:std_logic; signal clkout:std_logic; signal temp:std_logic_vector(7 downto 0); type state is(s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,s16,s17,s18,s19,s20,s21,s22,s23,s24,s2

12、5,s26,s27,s28,s29,s30,s31); signal current_s:state; type data_buffer is array(0 to 15)of std_logic_vector(7 downto 0); type data_buffer1 is array(0 to 7)of std_logic_vector(7 downto 0); signal time:std_logic_vector(23 downto 0); signal disp_time:data_buffer1:=( x31,x32,x3a,x33, x34,x3a,x35,x36); con

13、stant data_buf0:data_buffer:=(x20,x20,xbb,xaa,-华科武昌分校 80 xbf,xc6,xce,xe4, xb2,xfd,xb7,xd6, xd0,xa3,x20,x20); constant data_buf1:data_buffer:=(x20,x20,xb5,xe7,-电子密码锁 90 xd7,xd3,xc3,xdc, xc2,xeb,xcb,xf8, x20,x20,x20,x20); constant data_buf2:data_buffer:=(x20,x20,xc7,xeb, xca,xe4,xc8,xeb,-请输入密码: 88 xc3

14、,xdc,xc2,xeb, x3a,x20,x20,x20);constant data_buf3:data_buffer:=(x20,x20,xd6,xd8, xd0,xc2,xca,xe4,-重新输入 xc8,xeb,x20,x20, x20,x20,x20,x20); constant data_buf4:data_buffer:=(x20,x20,xbd,xe2, xcb,xf8,xb3,xc9,-解锁成功 xb9,xa6,x20,x20, x20,x20,x20,x20);constant data_buf5:data_buffer:=( x20,x20, -进入死锁状态 xbd,x

15、f8,xc8,xeb, xcb,xc0,xcb,xf8, xd7,xb4,xcc,xac, x20,x20);constant data_buf6:data_buffer:=(x20,x20,xbd,xe2,- xcb,xf8,xb3,xc9, xb9,xa6,x21,x20, x20,x20,x20,x20); begin-U1:divclk1 port map(clk,clk_100k);process(clk) variable cnt:integer range 0 to divide_to_100k; begin if(clkevent and clk=1)then cnt:=cnt

16、+1; if(cnt=divide_to_100k)then cnt:=0; end if; if(cntdivide_to_100k/2) then clk_100k=0; else clk_100k=1; end if; end if;end process;div_1Hz: process(clk) variable cnttemp:integer range 0 to 49999999; begin if clk=1 and clkevent then if cnttemp=49999999 then cnttemp:=0; else if cnttemp25000000 then c

17、lkout=1; else clkout=0; end if; cnttemp:=cnttemp+1; end if; end if;end process div_1Hz; disp_time(7)=DATAIN(3 downto 0)+x30; disp_time(6)=DATAIN(7 downto 4)+x30; disp_time(5)=DATAIN(11 downto 8)+x30; disp_time(4)=DATAIN(15 downto 12)+x30; disp_time(3)=DATAIN(19 downto 16)+x30; disp_time(2)=DATAIN(23

18、 downto 20)+x30; disp_time(1)=DATAIN(27 downto 24)+x30; disp_time(0)rw=1;rs=1;e=1;cnt1:=cnt1+1; if cnt1500 then lcd_rst=0; elsif cnt11000 then lcd_rst=1; elsif cnt1=1000 then lcd_rst=1;cnt1:=0;current_scnt_1:=cnt_1+1; if cnt_11*3 then e=1;rs=0;rw=0; elsif cnt_12*3 then lcd_data=x0c; elsif cnt_110*3

19、then e=0; elsif cnt_1=10*3 then cnt_1:=0;current_scnt_1:=cnt_1+1; if cnt_11*3 then e=1;rs=0;rw=0; elsif cnt_12*3 then lcd_data=x90; elsif cnt_110*3 then e=0; elsif cnt_1=10*3 then cnt_1:=0;current_s if cnt_11*3 then e=1;rs=1;rw=0; elsif cnt_12*3 then lcd_data=data_buf1(data_cnt); elsif cnt_1=2*3 the

20、n data_cnt:=data_cnt+1; elsif cnt_1100 then e=0; end if; cnt_1:=cnt_1+1; if cnt_1=100 then cnt_1:=0; if data_cnt=16 then current_scnt_1:=cnt_1+1; if cnt_11*3 then e=1;rs=0;rw=0; elsif cnt_12*3 then lcd_data=x88; elsif cnt_110*3 then e=0; elsif cnt_1=10*3 then cnt_1:=0;current_s if cnt_11*3 then e=1;

21、rs=1;rw=0; elsif cnt_12*3 then lcd_data=data_buf2(data_cnt); elsif cnt_1=2*3 then data_cnt:=data_cnt+1; elsif cnt_1100 then e=0; end if; cnt_1:=cnt_1+1; if cnt_1=100 then cnt_1:=0; if data_cnt=16 then current_scnt_1:=cnt_1+1; if cnt_11*3 then e=1;rs=0;rw=0; elsif cnt_12*3 then lcd_data=x80; elsif cn

22、t_110*3 then e=0; elsif cnt_1=10*3 then cnt_1:=0;current_s if cnt_11*3 then e=1;rs=1;rw=0; elsif cnt_12*3 then lcd_data=data_buf0(data_cnt); elsif cnt_1=2*3 then data_cnt:=data_cnt+1; elsif cnt_1100 then e=0; end if; cnt_1:=cnt_1+1; if cnt_1=100 then cnt_1:=0; if data_cnt=16 then current_scnt_1:=cnt

23、_1+1; if cnt_11*3 then e=1;rs=0;rw=0; elsif cnt_12*3 then lcd_data=x9a; elsif cnt_110*3 then e=0; elsif cnt_1=10*3 then cnt_1:=0;current_s if cnt_11*3 then e=1;rs=1;rw=0; elsif cnt_12*3 then lcd_data=disp_time(data_cnt); elsif cnt_1=2*3 then data_cnt:=data_cnt+1; elsif cnt_1100 then e=0; end if; cnt

24、_1:=cnt_1+1; if cnt_1=100 then cnt_1:=0; if data_cnt=8 then current_scnt_1:=cnt_1+1; if din=10 then if cnt_11*3 then e=1;rs=0;rw=0; elsif cnt_12*3 then lcd_data=x88; elsif cnt_110*3 then e=0; elsif cnt_1=10*3 then cnt_1:=0;current_s=s11; end if; else current_s if cnt_11*3 then e=1;rs=1;rw=0; elsif c

25、nt_12*3 then lcd_data=data_buf4(data_cnt); elsif cnt_1=2*3 then data_cnt:=data_cnt+1; elsif cnt_1100 then e=0; end if; cnt_1:=cnt_1+1; if cnt_1=100 then cnt_1:=0; if data_cnt=8 then current_scnt_1:=cnt_1+1; if cnt_11*3 then e=1;rs=0;rw=0; elsif cnt_12*3 then lcd_data=x88; elsif cnt_110*3 then e=0; e

26、lsif cnt_1=10*3 then cnt_1:=0;current_s if cnt_11*3 then e=1;rs=1;rw=0; elsif cnt_12*3 then lcd_data=data_buf3(data_cnt); elsif cnt_1=2*3 then data_cnt:=data_cnt+1; elsif cnt_1100 then e=0; end if; cnt_1:=cnt_1+1; if cnt_1=100 then cnt_1:=0; if data_cnt=8 then current_scnt_1:=cnt_1+1; if cnt_11*3 then e=1;rs=0;rw=0; elsif cnt_12*3 then lcd_data=x98; elsif cnt_110*3 then e=0; elsif cnt_1=10*3

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1