电子密码锁EDA课程设计
青岛农业大学怎么挽留对象
电子设计自动化课程设计报告
2012——2013学年 第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 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;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。