吴超电子密码锁改过后.doc

  1. 1、本文档共32页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PAGE 2 1 一、设计思想 本设计采用EDA技术和VHDL语言设计了一种按键输入密码并数码管回显,当输入正确密码时轰动绿灯亮、红灯熄灭表示开锁,而当输入错误密码时,红灯亮、绿灯熄灭表示关锁。根据系统设计要求,系统设计采用自顶向下的设计方法。 1.基本原理 在本实验中采用的是VHDL编程,通过文本编辑方式建立模块,通过原理图方式将生成的图形符号连接,然后再下载,进行硬件的仿真。密码锁要达到的功能为: 为达到密码锁的以上功能,可将电子密码锁分为以下几个模块:密码锁输入电路、密码锁控制电路、LED输出显示电路。 ⑴、密码输入:每按下一个数字键,就输入一个数值,并在显示器上显示出该数值。同时将先前输入的数据依次左移一个数字位置。程序下载后系统进入原始状态(原始密码000000),按下键8发光二极管8(绿灯)亮、法官二极管7(红灯)灭。当要重新设置密码时,直接输入自己想要设置的密码并按下键8,持续5S,数码管8由0变为1,此时7段数码管1、2、3、4、5、6对应显示新设置的密码。当要输入密码时,按下键7,先将密码清零,再随机输入一组6位密码,假如密码正确,发光二极管8(绿灯)立即亮;反之如不正确,等待5S,发光二极管7(红灯)亮并由蜂鸣器发出20S的报警信号。 ⑵、密码清除:按下清除键可清除前面所有的输入值,清除成为“0000”。 ⑶、密码更改:按下更改键可将目前数据设定为新的密码。 ⑷、密码上锁:按下上锁键可将密码锁上锁。 ⑸、密码解除:按下解除键首先检查输入的密码是否正确,密码正确即解锁。 2.设计框图 为达到密码锁的以上功能,可将电子密码锁分为以下几个模块:密码锁输入电路、密码锁控制电路、LED输出显示电路。和报警电路等四部分组成顶层设计采用原理图设计方式,系统的整体组装设计原理图如图1所示。 密 密 码 模 块 校 对 模 块 5S延时脉冲模块 红灯灭绿灯亮 绿灯灭红灯亮 20S报警 20延时脉冲模块 关锁 开锁 图1 系统整体组装设计原理图 二、设计步骤和调试过程 1、模块设计和相应模块代码 (1)分频 由于要产生5秒、20秒的计时信号,故对系统时钟clk_1k进行分频来得到1Hz的时钟clk。其模块及部分程序如下: 图2 分频模块 process(clk_1k) variable count:std_logic_vector(9 downto 0); begin if(clk_1kevent and clk_1k=1) then count:=count+1; end if; clk=count(9); end process; 仿真波形如下: 图3 分频仿真图 设置密码 本模块主要是将设置的密码锁存到中间变量ram中去,同时控制灯的变化,由于这里的灯并不能作为最终的输出,所以这里先用led_r_temp1、led_r_temp2代替。其模块及部分程序如下: 图4 设置密码模块 process(enter1,set) begin if(enter1event and enter1=1) then if(set=0) then ram=datain; led_r_temp1=1;led_g_temp1=0; else led_r_temp1=0;led_g_temp1=0; end if; end if; end process; 仿真波形如下: 图5 设置密码仿真图 输入密码时第一个按键判断信号 本模块主要在密码输入下,当第一个按键按下时产生一个judge信号(高电平有效),其模块及部分程序如下: 图6 判断信号模块 process(set,clk_1k,datain) begin if(clk_1kevent and clk_1k=1) then if(set=0) then judge=0; elsif(set=1) then if((datain(0) or datain(1) or datain(2) or datain(3))=0) then judge=0; els if((datain(0) or datain(1) or datain(2) or datain(3))=1) then judge=1; else judge=0; end if; end if; end if; end process; 仿真波形如下: 图7 判断信号仿真图 从仿真波形上看,当按键按下后judge信号由0变为1,但是当按键重新弹回0时,judge信号又回到0,所以需对judge高电平信号进行锁存: 图8 锁存模块 signal temp:std_logic:=0; begin

文档评论(0)

小教资源库 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档