资源预览内容
第1页 / 共28页
第2页 / 共28页
第3页 / 共28页
第4页 / 共28页
第5页 / 共28页
第6页 / 共28页
第7页 / 共28页
第8页 / 共28页
第9页 / 共28页
第10页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
摘要摘要随着电子产品向智能化和微型化的不断发展,EDA技术作为现代电子设计最新技术的结晶,给电子系统的设计带来了革命性的变化。本论文设计一种基于VHDL的电子密码锁系统,该系统具有软硬件设计简单、易于开发、成本低、安全可靠、操作方便等特点,可作为产品进行开发,应用于住宅,办公室的保险箱及档案等需要防盗的场所,有较强的实用性。本系统由Quartus II软件、矩阵键盘、LED显示和报警系统组成。4*4键盘组成09数字键,每按下一个键,相关键的值在数码管上显示,并依次左移;能够清除密码输入,并设置预置密码为“1234”;修改密码时,将当前输入设为新的密码;能完成上锁和开锁功能;当输入密码和预置密码一样时即可开锁。具有确认、取消、修改、开锁、闭锁功能,用7段数码管组成显示电路提示信息。关键词:QuartusII VHDL 电子密码锁 矩阵键盘 七段数1目录目 录第一章 绪论11.1选题依据11.2设计功能1第二章 系统方案选择22.1设计方案的选择22.2根据方案拟实现的具体功能3第三章 硬件原理及软件程序设计53.1软件设计流程53.2各模块程序设计53.2.1键盘输入部分的源程序53.2.2 键盘消抖电路113.2.3 移位寄存电路123.2.4 密码验证及改密电路143.2.5 电锁控制电路153.2.6 动态扫描电路程序173.2.7 片选信号电路程序183.2.8 选择输出电路程序193.2.9 译码输出电路程序20第四章 仿真测试23结束语24参 考 文 献26第一章 绪论第一章 绪论1.1选题依据在日常的生活和工作中,住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的方法来解决。若使用传统的机械式钥匙开锁,人们常需携带多把钥匙,使用既不方便,且钥匙丢失后安全性就打折扣。随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码应运而生。密码锁具有安全性高、成本低、功耗低、易操作等优点。在安全技术防范领域,具有防盗报警功能的电子密码锁逐渐代替传统的机械式密码锁,客服了机械式密码锁密码量少、安全性能差的缺点,使密码锁无论在技术上还是在性能上都有大大提高一步。随着大规模集成电路技术的发展,特别是VHDL的问世,出现了带微处理的智能密码锁,它除具有电子密码锁的功能外,还引入了智能化管理、专家分析系统等功能,从而使密码锁具有很高的安全性、可靠性,应用日益广泛。随着人们对安全的重视和科技的发展,许多电子智能锁(指纹识别、IC卡辨认)已在国内外相继面世。但是这些产品的特点是针对特定的指纹和有效卡,只能使用于保密要求的箱、柜、门等。而且指纹识别器若在公共场所使用存在容易机械损坏,IC卡还存在容易丢失、损坏等特点。加上其成本较高,一定程度上限制了这类产品的普及和推广。鉴于目前的技术与水平与市场的接受程度,电子密码锁是这类电子防盗产品的主流。1.2设计功能基于以上思路,本次电子密码锁的设计,主要具有如下功能:(1)设置4位密码,密码通过键盘输入,若密码正确,则打开。(2)密码可以由用户自己修改设定(只支持4位密码),开锁后才能修改密码,修改功能为:输入旧密码,再输入新密码并二次确认(以防止误操作)。(3)报警、锁定键盘功能。密码输入错误数码管显示出现错误提示,若密码 输入错误次数超过3次,蜂鸣器报警并且锁定键盘。(4)按下清零键,错误计数归零,不再报警并灯熄灭,恢复原始状态。第二章 系统方案选择第二章 系统方案选择2.1设计方案的选择在本次设计中提出了两种方案:一种是用以74LS112双JK触发器构成的数字逻辑电路控制方案,还有一种是用VHDL语言编程方案。下面对这两种方案做分析。方案一:采用数字电路控制。其原理方框图如图2-1所示。密码修改电路密码校验电路键盘输入报警次数检测锁定5分钟开锁电路执行电路限时报警市电供电电路电子切换开关蓄电池断电检测充电电路开门220V电源VCC 图2-1 数字密码锁电路方案采用数字密码锁电路的好处就是设计原理比较易懂。用以74LS112双JK触发器构成的数字逻辑电路作为密码锁的核心控制,共设了9个用户输入键,其中只有4个是有效的密码按键,其它的都是干扰按键,若按下干扰键,键盘输入电路自动清零,原先输入的密码无效,需要重新输入;如果用户输入密码的时间超过40秒(一般情况下,用户不会超过40秒,若用户觉得不便,还可以修改)电路将报警80秒,若电路连续报警三次,电路将锁定键盘5分钟,防止他人的非法操作。 电路由两大部分组成:密码锁电路和备用电源(UPS),其中设置UPS电源是为了防止因为停电造成的密码锁电路失效,使用户免遭麻烦。密码锁电路包含:键盘输入、密码修改、密码检测、开锁电路、执行电路、报警电路、键盘输入次数锁定电路。方案二:采用一种是用Quartus II软件编程,利用VHDL描述数字系统的结构,行为,功能和接口,及其控制的准确性,来实现密码锁的设计。如图2-2所示:矩阵键盘控制LED数码显示电路VHDL编程图2-2设计方案通过比较以上两种方案,VHDL编程方案有较大的活动空间,不但能实现锁要求的功能而且能在很大的程度上扩展功能,而且还可以方便的对系统进行升级,所以我们采用第二种方案。2.2根据方案拟实现的具体功能1、论文的设计要求:1)设置4位密码,密码通过键盘输入,若密码正确,则将锁打开。2)密码可以由用户自己修改设定(只支持4位密码),锁打开后才能修改密码。修改密码之前必须再次输入密码,在输入新密码时候需要二次确认,以防止误操作。3)报警、锁定键盘功能。密码输入错误数码管显示出现错误提示,若密码 输入错误次数超过3次,蜂鸣器报警并且锁定键盘。2、本论文既定的设计功能描述:1)加电后,数码管上没有任何显示,当按下开锁键,数码管出现“”并闪烁。2)输入密码时,只逐为显示“H”,以防止泄露密码。密码输入完后,按下“确定”键,密码如果正确,则蜂鸣器响三声,数码管熄灭。这时,再按下“关锁”键,数码管就出现“”静止不动,实现闭锁功能,按任一个键都不会有反应,只有按开锁重新开始。输入密码过程中,如果不小心输入错误,可按“取消”键,删除输错的密码。3)修改密码,按下修改键,连续输入新密码,按确定键即可。第三章 硬件原理及软件设计第三章 硬件原理及软件程序设计3.1软件设计流程根据第二章的设计方案并结合实际情况,进行单元电路设计后得电子密码锁的硬件设计机。主要由三部分组成:4*4矩阵键盘接口电路、密码锁的控制电路、输出八段显示电路。另外,系统还有LED提示灯,报警蜂鸣器等。首先用键盘输入密码,通过消抖后进入存储器,输入密码与设定的密码,相同时开锁,当输入密码错误时,开始计数,当第三次输入密码错误时,扬声器报警。系统顶层框图较为简单,如图3-1所示。密码输入电路 扫描信号 按键输入键盘译码弹跳消除键盘键盘扫描显示电路数码管显示控制密码电路按键数据存储数值比较开/关锁报警图3-1 系统顶层框图3.2各模块程序设计3.2.1键盘输入部分的源程序4*4按键分行线和列线去控制,行线连接16个按键的一端,列线连接16个按键的另外一端,当给行线(或者列线)一个信号,有按键按下的时候读回来的时候的数据是不一样的,也就是证明有按键按下!当行信号(KEY)接到高电平,当没有键按时,行线与列线(KEYSCAN)是断开的,且行线都是高电平(1111),行信号作为CPLD、列信号作为CPLD。可以设置列线初始状态为低电平(0000)。信号为从上到下的顺序。键盘输入的原理图如图3-2图3-2 4*4键盘输入原理图根据需要,本例子的4*4键盘设定10个数字键(09)和4个功能键(确认键、取消键、开锁键、闭锁键),键盘的布局如图3-3所示。图3-3 矩阵键盘键盘程序代码:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity jp isport (clk :in std_logic ;R:in std_logic_vector(3 downto 0);L:out std_logic_vector(3 downto 0);dataout:out std_logic_vector(3 downto 0);szkzj1,gnkzj1:out std_logic; rest,querenj,gaimij,sanchuj:out std_logic);end jp;architecture arth of jp issignal carry1:std_logic;signal count:std_logic_vector(3 downto 0);signal count1:std_logic_vector(1 downto 0);signal sel:std_logic_vector(3 downto 0);signal temp:std_logic_vector(3 downto 0);signal querenj1,sanchuj1,gaimij1,rest1:std_logic;signal szkzj,gnkzj:std_logic;p1:process(clk)beginif(rising_edge(clk) thencount=count+1;end if;end process p1;p2:process(clk)beginif(rising_edge(clk)thenif(count=1111) thencarry1=1;elsecarry1=0;end if;end if;end process p2;p3:process(carry1)beginif(rising_edge(carry1) thencount1=count1+1;end if;end process p3;sel=1110 when count1=00 else 1101 when count1=01 else 1011 when count1=10 else 0111 when count1=11;p:process(clk)begin if(falling_edge(clk) then L=sel; -列线 end if;end process p;p4:process(clk,R,sel)beginif(rising_edge(clk) thenif(R(0)=0) theni
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号