数字电路课程设计 密码锁.doc_第1页
数字电路课程设计 密码锁.doc_第2页
数字电路课程设计 密码锁.doc_第3页
数字电路课程设计 密码锁.doc_第4页
数字电路课程设计 密码锁.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

大连理工大学本科实验报告 密码锁课程名称: 数字电路课程设计 学 院: 电子信息及电气工程 专 业: 生物医学工程 班 级: 电医1001 学生姓名: 梅世宇 学 号: 201058002 完成日期: 2012.12.29 成 绩: 题目:电子密码锁1 设计要求 设计一个8位串行数字锁,并验证其操作。具体要求如下:1开锁代码为8位二进制数,当输入代码的位数和位值与锁内给定的密码一致,且按规定程序开锁时,方可开锁,并点亮开锁指示灯LT。否则,系统进入“错误”状态,并发出报警信号。2开锁程序由设计者确定,并要求锁内给定的密码是可调的,且预置方便,保密性好。3串行数字锁的报警方式是点亮77指示灯LF,并使喇叭鸣叫来报警,报警动作响1分钟,停10秒钟后再重复出现,直到按下复位开关,报警才停止。此时,数字锁自动进入等待下一次开锁的状态。4报警器可以兼作门铃用,门铃响的时间通常为710秒。2 设计分析及系统方案设计系统的结构图如下图所示:本实验要求串行输入八位密码,密码可以随意设置,可以任意更改, 并且能够存储.而且能够显示出当前已经输入或者设置的位数,待输入八位后通过比较电路与预先设置的密码进行比较.如果输入的密码与存储的密码相同锁体打开 如果输入的密码与存储的密码不同则报警系统打开发出警报.由于还要求有门铃功能所以增加一个门铃输入当门铃按下后 门铃响十秒钟。对于密码存储以及密码输入比较部分主要由load 控制。Load01li01La10系统功能设置密码输入密码load为0时系统功能为设置密码,此时只需要顺序串行输入八位0/1密码即可,系统将输入的密码自动保存在存储器内以便于输入的密码进行比较,当load为1时系统功能为输入密码,此时只需要顺序串行输入八位0/1即可,待输入八位后系统自动将刚输入的密码与存储器内的密码进行比较如果密码正确则开锁信号lt为1,否则警报信号lf 和响铃信号alm为1 lt为0对于门铃部分 当检测到press信号的下降沿时门铃开始响,计数器开始计数,此时始终脉冲频率为50MHz/16MHz=3.125Hz ,此时当计数器为30时既时间为30/3.125=9.6秒时门铃自动关闭。3系统以及模块硬件电路设计 系统电路图系统电路图如上如所示 其中clk1脚接入50MHz的方波,load有两种状态-高电平和低电平状态。k0 k1 press clr 分别接到四个去抖开关上开关按下去为低电平 lt alm2 lf alm分别接到四个发光二级管上,当输出为1时二极管发光。y006分别接到HEX7对应的引脚上实现数码管显示功能。Y106分别接到HEX5对应的引脚上实现数码管显示功能。其余各种逻辑功能由芯片内部计算执行来实现。芯片内部程序通过对clk、load、k0、k1、press、clr输入信号的处理通过lt、alm2、lf、alm、y006、y106进行输出来达到系统所需要的功能。DE2开发板上使用的元件要给出使用管脚编号。接口名称类型(输入/输出)符号引脚号说明CLK输入CLOCK_50PIN_N2输入50MHz的时钟频率LOAD输入SW17PIN_V2修改(0)/设置(1)密码K0输入KEY0PIN_G26输入密码0(低电平有效)K1输入KEY1PIN_N23输入密码1(低电平有效)Press输入KEY2PIN_P23门铃按钮(低电平有效)CLR输入KEY3PIN_W26复位开关(低电平有效)lt输出LEDR0PIN_AE23开锁成功指示灯alm2输出LEDR12PIN_AD15门铃(小灯)lf输出LEDR16PIN_AE12开锁失败指示灯alm输出LEDR17PIN_AD12开锁失败报警器(小灯)y00输出HEX70PIN_L3输入密码七段码显示y01输出HEX71PIN_L2输入密码七段码显示y02输出HEX72PIN_L9输入密码七段码显示y03输出HEX73PIN_L6输入密码七段码显示y04输出HEX74PIN_L7输入密码七段码显示y05输出HEX75PIN_P9输入密码七段码显示y06输出HEX76PIN_N9输入密码七段码显示y10输出HEX50PIN_T2修改密码七段码显示y11输出HEX51PIN_P6修改密码七段码显示y12输出HEX52PIN_P7修改密码七段码显示y13输出HEX53PIN_T9修改密码七段码显示y14输出HEX54PIN_R5修改密码七段码显示y15输出HEX55PIN_R4修改密码七段码显示y16输出HEX56PIN_R3修改密码七段码显示4 系统的VHDL设计系统的主要功能是通过VHDL语言来实现的。语言代码如下。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity mima is port (clk:in std_logic; -定义时钟 k0:in std_logic; -输入一位0k1:in std_logic; -输入一位1 clr:in std_logic; -复位load:in std_logic; -改变状态press:in std_logic; -门铃按钮alm2:out std_logic; -门铃lt:out std_logic; -开锁信号 y0:out std_logic_vector(6 downto 0); -输入位数显示 y1:out std_logic_vector(6 downto 0); -输出位数显示lf:out std_logic; -亮灯 alm:out std_logic); -报警铃 end mima;architecture aaa of mima issignal shift,lock:std_logic_vector(7 downto 0):=00000000; -定义shift,locksignal lam1,lam:std_logic_vector(7 downto 0); -定义lam1,lamsignal la,li:std_logic; -定义la,li signal clk1:std_logic; -定义clk1 signal p:std_logic_vector (4 downto 0); -定义psignal aa:std_logic; -定义aa beginm16:process(clk) -将clk 16M分频 variable q: std_logic_vector(22 downto 0);beginif clkevent and clk=1 then q:=q+1; -检测clk上升沿 q=q+1end if; if q=11111111111111111111111 then clk1=1; - clk1产生一个上升沿脉冲else clk1=0; end if;end process m16; process(clk1,clr) -判断是否复位 begin if clr=0 then la=0; li=0; elsif clk1event and clk1=1 then -检测clk1上升沿if load=0 then -判断状态 la=1; -设置密码 else li=1; -输出密码end if;end if;end process;process(clk1,clr) -复位及输入设置密码variable a:integer range 0 to 8; beginif clr=0 then -复位 lam=00000000; -lam置零lam1=00000000; -lam1置零shift=00000000; -shift置零a:=0; -a置零 lt=0; -开锁置零lf=0; -警报灯置零alm=0; -警报置零elsif clk1event and clk1=1 then -检测上升沿if li=1 then -输入密码if a/=8 then -判断密码是否输入完毕if k1=0 then -输入1shift=1&shift(7 downto 1 ); -依次输入一个1lam=1&lam(7 downto 1); -点亮对应的一个小灯a:=a+1; elsif k0=0then -输入一位0shift=0&shift(7 downto 1); -依次输入一个1lam=1&lam(7 downto 1); -点亮对应的一个小灯a:=a+1;end if;elsea:=0;if shift=lock then -判断密码是否正确lt=1; -正确 开锁 else lf=1; -错误 警报亮alm=1; -错误 警报响end if;end if;elsif la=1 then -输入密码 a:=0; if k1=0 then -输入一位1lock=1&lock(7 downto 1); -lock密码增加一位1lam1=1&lam1(7 downto 1); -点亮对应的灯a:=a+1;elsif k0=0 then -输入一位0lock=0&lock(7 downto 1); -lock密码增加一位0 lam1y0y0y0y0y0y0y0y0y0y0y1y1y1y1y1y1y1y1y1y1=1111111; -关闭数码管end case;end process;pp:process(press) -门铃功能beginif press=0 then -按下门铃alm2=1; -门铃响 end if;if clk1event and clk1=1 then p=p+1; -延时10秒end if;if p=30 thenp=00000; alm2=0; -关闭门铃end if;end process pp;end aaa;5 结论以及结果说明本系统运行在联想计算机平台和Altera DE2平台,用的是quartus60软件调试环境,系统的参数选取均按照要求适当选取。对密码模块:开始时,先给系统清零,即使clr为0(按下KEY3),若设置密码则SW17开关拨下使load为低电平,此时通过按去抖开关KEY0,KEY1进行密码设置0和1,每输入一位密码则数目管显示的数字加1直到输入第8位设置密码:仿真图如下如所示。设置密码时将SW17拨下使load为低电平并且clr为高电平此时可以设置密码,由图可以看出设置的密码为00000111每设置一位密码数码管HEX5的七个引脚都随着y106的变化而变化,进而显示出当前的位数。设置密码仿真图当输入密码时,SW17开关拨上使load为高电平输入密码开始,此时通过按去抖开关KEY0,KEY1进行密码设置0和1,每输入一位密码则数目管显示的数字加1直到输入第8位。系统自动将输入的密码与预设的密码进行比较如果相同则开锁。开锁成功仿真图如下如所示,此时设置的密码为00001111输入的密码为00001111,由图可以看每设置一位密码数码管HEX5的七个引脚都随着y106的变化而变化,进而显示出当前的位数。此时clr为高电平load为低电平当密码输入完毕后将load变为高电平进行密码输入输入方法与设置密码相同没设置一位密码数码管HEX7的七个引脚都随着y006的变化而变化,进而显示出当前的位数。当输完八位密码后系统将其与预先设置的密码进行对比,由于设置与输入的密码相同所以lt为高电平开锁,lf、alm为低电平没有反应。 密码正确开锁成功仿真图开锁不成功仿真图如下如所示,此时设置的密

温馨提示

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

评论

0/150

提交评论