电子密码锁EDA课程设计_第1页
电子密码锁EDA课程设计_第2页
电子密码锁EDA课程设计_第3页
电子密码锁EDA课程设计_第4页
电子密码锁EDA课程设计_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

青岛农业大学电子设计自动化课程设计报告20122013学年 第2学期 实习题目: 电子密码锁 姓 名 :_ _ 学 号 :_ _ _ _ 专业班级:_电自化1003_ 指导老师:_ _ _ 2013年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 ISPORT(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)BEGINIF ZISUO=0 AND KEY6=0 AND KAI=0 THEN IF KEY1EVENT AND KEY1=1 THEN -用来输入代码,在关锁状况下,并且无开锁和设置密码信号下有效 IF CODE19 THEN CODE1=CODE1+1; ELSE CODE10); END IF; END IF; IF KEY2EVENT AND KEY2=1 THEN IF CODE29 THEN CODE2=CODE2+1; ELSE CODE20); END IF; END IF; IF KEY3EVENT AND KEY3=1 THEN IF CODE39 THEN CODE3=CODE3+1; ELSE CODE30); END IF; END IF; IF KEY4EVENT AND KEY4=1 THEN IF CODE49 THEN CODE4=CODE4+1; ELSE CODE40); 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 KEY1EVENT AND KEY1=1 THEN IF PASSWORD19 THEN PASSWORD1=PASSWORD1+1; ELSE PASSWORD10); END IF; END IF; IF KEY2EVENT AND KEY2=1 THEN IF PASSWORD29 THEN PASSWORD2=PASSWORD2+1; ELSE PASSWORD20); END IF; END IF; IF KEY3EVENT AND KEY3=1 THEN IF PASSWORD39 THEN PASSWORD3=PASSWORD3+1; ELSE PASSWORD30); END IF; END IF; IF KEY4EVENT AND KEY4=1 THEN IF PASSWORD49 THEN PASSWORD4=PASSWORD4+1; ELSE PASSWORD40); End IF; END IF; END IF; END PROCESS; PROCESS (CLK,key5,key7) BEGIN IF CLKEVENT 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(KEY1EVENT AND KEY1=1)THEN FLAG=1; END IF; IF CLKEVENT AND CLK=1 THEN -按下第一个按键时 置位标志位FLAG,开始计时 IF(FLAG=1)THEN IF ZISUO=0 AND KEY6=0 AND KAI=0 THEN IF JISHI55 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 CLKEVENT AND CLK=1 THEN -如果自锁则蜂鸣器持续20秒发声 IF ZISUO=1 THEN IF JISHI2020 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学得还不错,而且平常的实验室表现也可以,大部分的实验都能独立完成并顺利通过验收。但当自己真正开始做一个实际的东西时,发现自己所学的知识还是远远不够的,毕竟理论和实践之间还是存在很大的差距的。刚发下题目的时候,觉得有些无从下手,根本就找不到一个合理的方案。于是开始从图书馆借书,从网上找资料。经过半天的研究,自己才算是有一些思路。因此,该次实习让我看到自己的水平还有待提升,而且让我明白,从理论到实际,并不是那么简单。另外,方案的确定也让我学到很多东西。刚开始的时候,我们采用的两种方案并行,到最后哪种方案合适采用哪种,而这两种方案都是从网上和书上找来的。于是我和队友分头工作,一人编写一种方案。但是当自己忙活了一天,程序编的差不多的时候,才发现,别人的方案在实验室的实验箱上不可行。因为方案中采用的是矩阵键盘,而实验箱采用的独立键盘,并且数目也只有八个。当然可以采用自己连线的方式外接一个矩阵键盘,但这样的话,稳定性不高,只要任何一根线没有连接合适,整个系统就无法工作了。因此,这个时候我们只有更换方案,但问题又出来了,根本找不到有关独立键盘的任何例程,如果更换方案的话,所有的程序必须自己编写。但是,自己是否能完成程序的编写自己都不确定。后来,我们决定试一试,舍掉以前所有的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论