实验十二数码锁.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验十二数码锁

实验十二 数码锁 了解数码锁的工作原理。 了解数码锁的实现方法。 进一步掌握4×4键盘或PS/2键盘接口电路设计方法。 掌握状态机设计复杂控制电路的基本方法。 二 硬件需求 1.EDA/SOPC实验箱一台。 三 实验原理 数码锁又称密码锁,它只需要主人记住自己的开锁密码,开门时只需要将密码输入,就可以开门,所以密码锁的核心问题就是密码的比对问题。 假如密码锁有六位,那么在系统复位后,用户按键6次,输入一个完整的密码串,输入完6次后,系统进行比对,如果发现密码吻合,则开门,否则要求用户继续输入,如果连续3次输入的密码串都是错误的,则系统报警。 实验中还要用到4×4键盘,在《实验三 常用模块电路的设计》中已经讲述,可以直接使用已做好的模块。密码输入也可以使用PS/2接口键盘,这样可以输入更多的字符。 四 实验内容 本实验需要完成的任务就是一个密码锁,考虑到系统中有键盘扫描、七段码管显示和报警,系统时钟选择时钟模块的10KHz时钟。键盘扫描和显示均是用10KHz。输入密码时,七段码管从右至左显示按键对应的数值,每按键(0~9)一次,显示左移一次,6次密码输入结束后系统开始校验,校验结束后,七段码管全灭。也就是显示部分维持的时间就是按键6次的时间和校验的时间。密码输入连续三次错误开始报警,报警声要求为高声2.5KHz,低声1.25KHz交替报警,交替周期为1s(1Hz时钟,需要对系统时钟进行10K分频)。实验中要求用LED模块的LED1_1指示键盘状态,如果有按键按下,LED1_1亮起,直到松开该按键;用LED2_1指示门的状态,也就是密码校验结果,如果密码校验正确,LED2_1亮起,否则如果密码校验错误LED2_1闪烁4次,然后熄灭,表明密码错误。系统的复位用主芯片模块的复位键,复位时,七段码管全部熄灭。 五 实验步骤 完成数码锁的实验步骤如下: 1.首先打开Quartus II软件,新建一个工程,并新建一个VHDL File。 2.按照自己的想法,编写VHDL程序。 3.对自己编写的VHDL程序进行编译并仿真。 4.仿真无误后,根据附录一的引脚对照表,对实验中用到时钟、七段码显示、4×4键盘、扬声器、按键以及LED对应的FPGA引脚进行管脚绑定,然后再重新编译一次。 5.用下载电缆通过JTAG接口将对应的sof文件下载到FPGA中。 6.测试数码锁的工作是否满足实验要求。 注意:此实验需管脚复用 图12.4整个设计的原始VHDL源码:要求在读懂源码基础上,:用开关,可以定义个信号save1、save2……save来存储预置的密码。。? 实验设计的各模块图: ?其中,“Read_Keyboard”。 ? “CHECK”模块功能是读取输入的键值并依次送入buff1~buff,以提供显示(从左到右顺序),并存储密码值,校验密码的情况通过open_Door、Error_Flag和Error_3输出,以提供彩灯和喇叭控制: K。 open_Door:开门信号,密码校验通过时为“1”(持续5秒) Error_Flag:出错标志,密码校验错误时为“1”(持续4秒) Error_3:三次出错标志,三次密码校验错误时 “1”,“Reset”为低才能使其恢复为“0” buff1~buff8:位密码输入,未输入的位用“10000”的特殊符号表示。 “manage”模块功能是根据开门或错误标志控制彩灯和喇叭。?SPK:扬声器输出,当三次错误后,按1Hz频率交替用高声2.5KHz,低声1.25KHz报警?Lamp[3..0]:彩灯输出,出错时一个灯按1Hz频率闪烁秒,3次错误时4个灯按1Hz频率持续闪烁,开门时4个灯长亮(持续5秒)?“sel_time”模块功能是数码管动态扫描,并从选择对应的buff位按顺序输出到译码器译码显示。 ?“deled”模块功能是BCD译码输出。“CHECK”模块? 图12.2 密码设置及检查“CHECK”模块?用下面所示代码读取按键值,可以保证每按一次键,读取的键值(用current_key保存)持续一个时钟周期,而其他时间current_key=“11111”(表示没有按键按下)。用“current_key”代替状态图中的“key”避免重复读入键值。 各个状态要检查的输入、转换条件、输出值分析如下: S0:初始态,复位(Reset=0)或其它未知状态均转入本状态。 输入:检查键盘输入。 状态转换:当键盘输入“#”号,转到S1(校验密码);当键盘输入“*”号,转到S6(修改密码)。 输出:buff(n)=“11111”(消隐)。 其它:状态转入S1、S6时,应将buff1~buff8置为“10001”(输入提示符“-”)。 S1:输入密码。 输入:检查键盘输入。 状态转换:当键盘输入

文档评论(0)

cynthia_h + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档