电子密码锁EDA课程设计.doc
《电子密码锁EDA课程设计.doc》由会员分享,可在线阅读,更多相关《电子密码锁EDA课程设计.doc(16页珍藏版)》请在咨信网上搜索。
电子密码锁EDA课程设计 16 2020年4月19日 文档仅供参考,不当之处,请联系改正。 青岛农业大学 电子设计自动化课程设计报告 —— 第2学期 实习题目: 电子密码锁 姓 名 :________ _____________ 学 号 :____ _ _ _________ 专业班级:__________电自化1003_________ 指导老师:______ _ ____________ 6月8日 EDA课程设计 一、设计任务 1、基本要求 (1)、设计一个密码锁的控制电路,当输入正确代码时,输出开锁信号以推动执行机构工作,用红灯亮、绿灯熄灭表示关锁,用绿灯亮、红灯熄灭表示开锁; (2)、在锁的控制电路中储存一个能够修改的4位代码,当开锁按钮开关(可设置成6位至8位,其中实际有效为4位,其余为虚设)的输入代码等于储存代码时,开锁; (3)、从第一个按钮触动后的5秒内若未将锁打开,则电路自动复位并进入自锁状态,使之无法再打开,并由扬声器发出持续20秒的报警信号。 2、要解决的关键问题 (1)、该题的主要任务是产生一个开锁信号,而开锁信号的形成条件是,输入代码和已设密码相同。实现这种功能的电路构思有多种,例如,用两片8位锁存器,一片存入密码,另一片输入开锁的代码,经过比较的方式,若两者相等,则形成开锁信号。 (2)、在产生开锁信号后,要求输出声、光信号,声音的产生由开锁信号触动扬声器工作,光信号由开锁信号点亮LED指示灯; (3)、用按钮开关的第一个动作信号触发一个5秒定时器,若5秒内无开锁信号产生,让扬声器发出特殊音响,以示警告,并输出一个信号推动LED不断闪烁。 二、设计方案 1、总体设计思想 本设计采用VHDL语言进行编程,把所有的功能都整合到一个程序,采用不同的进程将不同的功能区分开来。该程序主要由密码输入进程、密码修改进程、密码锁操作进程、报警计时进程和报警动作进程等组成。这样设计的好处是不用设计顶层文件或者顶层原理图,没有复杂的连线。当然,仅仅是对于一些功能简单,代码较短的程序采用该种方法编程,而该题目正好符合这个条件。 该功能共有两个时钟信号,一个是键盘扫描和系统时钟,采用的是1Hz的时钟信号,该信号不但能够防止键盘抖动引起的误操作,还有助于系统计时。因为报警电路中的蜂鸣器为无源蜂鸣器,因此需要一个方波信号来驱动蜂鸣器,使其发出声音。因此又采用了一个1KHz的信号用于驱动蜂鸣器。 为了编程简单,本设计采用的是八个独立键盘,四个按键用于输入密码,四个按键作为功能键。四位0000到9999可任意改变的密码,输入密码或者更改密码时,采用的是自加运算,当数字加到10以后,自动清零。另外四个功能健分别是开锁键、关锁键、修改密码键、清除自锁健。 本设计采用LED显示和数码管显示,LED主要用于表示现在的密码锁的开关状态,数码管用于显示输入的数值。该种显示清晰明了,能够防止误操作的发生。另外还采用蜂鸣器和LED闪烁报警,当从输入第一个密码开始计时,如果5秒内没有开锁,密码锁会自动报警20S,并让一个LED灯闪烁,直到自锁信号解除。 2、系统设计实现的基本功能 (1) 密码输入:每按下一个数字键,就输入一个数值,并在显示器相应位置上显示出该数值。 (2) 密码清除:按下开锁键和关锁键进入锁定和开锁状态后,系统自动可清除前面所有的输入值,清除成为“0000”。 (3) 密码更改:当密码锁位于开锁状态下,按下更改键能够设定新的密码 (4) 密码上锁:按下上锁键可将密码锁上锁。 (5) 密码解除:按下解除键首先检查输入的密码是否正确,密码正确即解锁。 (6) 密码自锁:从输入第一个密码开始计时,如果5秒内没有开锁,密码锁会自动报警,并进入自锁状态,此时不允许任何操作。 (7) 自锁清除:经过自锁清除键能够清除自锁状态,使密码锁进入正常工作状态。 3、系统程序 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY LOCK IS PORT(CLK,CLK5:IN STD_LOGIC; KEY1,KEY2,KEY3,KEY4,KEY5,KEY6,KEY7,KEY8:IN STD_LOGIC; Q1,Q2,Q3,Q4:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); LED_G,LED_R,LED,BEEP:OUT STD_LOGIC); END LOCK; ARCHITECTURE BEHAV OF LOCK IS SIGNAL PASSWORD1:STD_LOGIC_VECTOR(3 DOWNTO 0):="0001"; SIGNAL PASSWORD2:STD_LOGIC_VECTOR(3 DOWNTO 0):="0001"; SIGNAL PASSWORD3:STD_LOGIC_VECTOR(3 DOWNTO 0):="0001"; SIGNAL PASSWORD4:STD_LOGIC_VECTOR(3 DOWNTO 0):="0001"; SIGNAL JISHI5:STD_LOGIC_VECTOR(3 DOWNTO 0):="0000"; SIGNAL JISHI20:STD_LOGIC_VECTOR(4 DOWNTO 0):="00000"; SIGNAL ZISUO,FLAG,BEEP_FLAG,KAI,LED_TMP:STD_LOGIC:='0'; SIGNAL CODE1,CODE2,CODE3,CODE4:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN PROCESS(clk,key1,key2,key3,key4,key6) BEGIN IF ZISUO='0' AND KEY6='0' AND KAI='0' THEN IF KEY1'EVENT AND KEY1='1' THEN --用来输入代码,在关锁状况下,而且无开锁和设置密码信号下有效 IF CODE1<9 THEN CODE1<=CODE1+1; ELSE CODE1<=(OTHERS=>'0'); END IF; END IF; IF KEY2'EVENT AND KEY2='1' THEN IF CODE2<9 THEN CODE2<=CODE2+1; ELSE CODE2<=(OTHERS=>'0'); END IF; END IF; IF KEY3'EVENT AND KEY3='1' THEN IF CODE3<9 THEN CODE3<=CODE3+1; ELSE CODE3<=(OTHERS=>'0'); END IF; END IF; IF KEY4'EVENT AND KEY4='1' THEN IF CODE4<9 THEN CODE4<=CODE4+1; ELSE CODE4<=(OTHERS=>'0'); END IF; END IF; ELSIF(ZISUO='0' AND KEY7='1' AND KAI='1')THEN CODE1<="0000";CODE2<="0000";CODE3<="0000";CODE4<="0000"; --这一步很重要,重新上锁必须将密码值清零,不然会显示上次输入的密码 IF KEY6='1' AND KAI='1' THEN --显示密码 Q1<=PASSWORD1; Q2<=PASSWORD2; Q3<=PASSWORD3; Q4<=PASSWORD4; END IF; IF KEY6='0' AND KAI='0' THEN --显示要更改的密码 Q1<=CODE1; Q2<=CODE2; Q3<=CODE3; Q4<=CODE4; END IF; IF KEY6='0' AND KAI='1' THEN --开锁后显示零 Q1<="0000"; Q2<="0000"; Q3<="0000"; Q4<="0000"; END IF; ELSIF ZISUO='0' AND KEY6='1' AND KAI='1' THEN --按住KEY6设置密码,此时必须是开锁状态 IF KEY1'EVENT AND KEY1='1' THEN IF PASSWORD1<9 THEN PASSWORD1<=PASSWORD1+1; ELSE PASSWORD1<=(OTHERS=>'0'); END IF; END IF; IF KEY2'EVENT AND KEY2='1' THEN IF PASSWORD2<9 THEN PASSWORD2<=PASSWORD2+1; ELSE PASSWORD2<=(OTHERS=>'0'); END IF; END IF; IF KEY3'EVENT AND KEY3='1' THEN IF PASSWORD3<9 THEN PASSWORD3<=PASSWORD3+1; ELSE PASSWORD3<=(OTHERS=>'0'); END IF; END IF; IF KEY4'EVENT AND KEY4='1' THEN IF PASSWORD4<9 THEN PASSWORD4<=PASSWORD4+1; ELSE PASSWORD4<=(OTHERS=>'0'); End IF; END IF; END IF; END PROCESS; PROCESS (CLK,key5,key7) BEGIN IF CLK'EVENT AND CLK='1' THEN IF KEY5='1' AND ZISUO='0' AND KEY6='0' THEN IF PASSWORD1=CODE1 AND PASSWORD2=CODE2 AND PASSWORD3=CODE3 AND PASSWORD4=CODE4 THEN KAI<='1'; --按下开锁键后,如果密码正确,开锁 ELSE KAI<='0'; END IF; END IF; END IF; IF KAI='1' THEN LED_G<='1';LED_R<='0'; --开锁后红灯灭绿灯亮,否则红灯亮绿灯灭 ELSE LED_G<='0';LED_R<='1'; END IF; IF KEY7='1' AND KEY6='0' THEN --关锁按钮按下后关锁 KAI<='0' ;LED_G<='0';LED_R<='1'; END IF; END PROCESS; PROCESS(CLK,KEY1,KEY8) BEGIN IF(KEY1'EVENT AND KEY1='1')THEN FLAG<='1'; END IF; IF CLK'EVENT AND CLK='1' THEN --按下第一个按键时 置位标志位FLAG,开始计时 IF(FLAG='1')THEN IF ZISUO='0' AND KEY6='0' AND KAI='0' THEN IF JISHI5<5 THEN JISHI5<=JISHI5+1; ELSE JISHI5<="0000"; END IF; END IF; END IF; IF (JISHI5=5 AND KAI='0') THEN --如果5秒后未开锁则进入自锁状态 ZISUO<='1'; END IF; END IF; IF KAI='1' THEN --5秒内开锁 计时清零,标志位清零 JISHI5<="0000";FLAG<='0'; END IF; IF KEY8='1' AND ZISUO='1' THEN --K8按下后清除自锁 ZISUO<='0';FLAG<='0'; END IF; END PROCESS; PROCESS(CLK,KEY8,CLK5) BEGIN IF CLK'EVENT AND CLK='1' THEN --如果自锁则蜂鸣器持续20秒发声 IF ZISUO='1' THEN IF JISHI20<20 THEN JISHI20<=JISHI20+1; BEEP_FLAG<='1'; --置位蜂鸣器标志位 ELSE BEEP_FLAG<='0'; END IF; LED_TMP<=NOT LED_TMP; --进入自锁后灯闪烁提示 LED<=LED_TMP; END IF; IF ZISUO='0' THEN --自锁解除,清零计时值和标志位 JISHI20<="00000";LED<='0';BEEP_FLAG<='0';LED_TMP<='0';JISHI20<="00000"; END IF; END IF; IF BEEP_FLAG='1' THEN --判断蜂鸣器标志位是否为1 IF CLK5='1' THEN --CLK5给无源蜂鸣器提供1K的时钟信号 BEEP<='1'; ELSE BEEP<='0'; END IF; END IF; END PROCESS; END BEHAV; 三、心得体会 一周的EDA实习结束,经过自己的努力和团队之间的合作,我们圆满的完成了课程设计的各项要求,当看到自己的成果,心里的成就感让自己感到喜悦。但这次实习带给我们的不但仅是这些,还有就是从中学到的其它的东西。 在自己没有进行实习前,自认为自己的EDA学得还不错,而且平常的实验室表现也能够,大部分的实验都能独立完成并顺利经过验收。但当自己真正开始做一个实际的东西时,发现自己所学的知识还是远远不够的,毕竟理论和实践之间还是存在很大的差距的。刚发下题目的时候,觉得有些无从下手,根本就找不到一个合理的方案。于是开始从图书馆借书,从网上找资料。经过半天的研究,自己才算是有一些思路。因此,该次实习让我看到自己的水平还有待提升,而且让我明白,从理论到实际,并不是那么简单。 另外,方案的确定也让我学到很多东西。刚开始的时候,我们采用的两种方案并行,到最后哪种方案合适采用哪种,而这两种方案都是从网上和书上找来的。于是我和队友分头工作,一人编写一种方案。可是当自己忙活了一天,程序编的差不多的时候,才发现,别人的方案在实验室的实验箱上不可行。因为方案中采用的是矩阵键盘,而实验箱采用的独立键盘,而且数目也只有八个。当然能够采用自己连线的方式外接一个矩阵键盘,但这样的话,稳定性不高,只要任何一根线没有连接合适,整个系统就无法工作了。因此,这个时候我们只有更换方案,但问题又出来了,根本找不到有关独立键盘的任何例程,如果更换方案的话,所有的程序必须自己编写。可是,自己是否能完成程序的编写自己都不确定。后来,我们决定试一试,舍掉以前所有的方案,根据要求自己编写程序。幸运的是,最后我们把程序编了出来,而且还实现了各种要求。经过这件事,让自己认识到自己的两点不足。一个是方案的确定太过仓促。确定方案时,必须做好前期调查,正确分析,做出正确的判断,确保方案能够正确实施。因为自己时间有限,因此最好不要采用多种方案,这样会分散你的经历,确定一个最佳的方案,然后把全部的经历用在这个方案上。另外就是,不要对自己太过自信,也不要太没有自信。不尝试一下,谁也不会知道结果会是怎样,有时候压力确实会让你的潜力发挥出来,高效的完成一个任务。 在一个就是对于EDA方面的提升,因为自己有过编程的基础,因此对于编程来说,并不是很陌生。但当自己真正的去编写VHDL程序时,还是有一定的困难。毕竟VHDL和C语言还是有很多不同的。其中在编写程序时,有个问题就困扰了我很久。就是在两个互不影响的进程中对同一个信号进行赋值,也就是说这两个进程能够同时满足,但里面有个相同的信号,这样的话,这个信号可能会被多次赋值,这时候编译的时候就会出错。但自己没有意识到这个问题。后来经过查阅,才找出问题所在。后来发现,不但是进程,两个互不影响的顺序语句也不能对同一个信号或变量进行赋值。经过自己编程的经历,让自己意识到,有些东西,你不自己亲手做,问题永远发现不了,那自己也不可能会有进步。 实习结束了,但在实习中学到的东西却还没有结束,就是经过这样的实践操作,才会让自己真正把理论应用于实践,才会真正的学以致用。- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子 密码锁 EDA 课程设计
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【人****来】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【人****来】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【人****来】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【人****来】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文