您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 基于VHDL语言的电子密码锁的设计最终定稿
基于VHDL语言的电子密码锁设计组长:李柳201254080308组员:刘永兴201254080201邝七月201254080209庄美琳201254080303王常汉201154080121系统的原理设计(1)数码输入:每按下一个数字键,就输入一个数值,并在显示器的最右方显示该数,同时将先前输入的数依次左移一位。(2)数码清除:按下此键会清除前面所有的输入值,成为“0000”。(3)激活电锁:按下此键可将密码锁上锁。(4)解除电锁:按下此键会检查输入的密码是否正确,密码正确即开锁。作为通用电子密码锁,主要由三个部分组成:数字密码输入电路、密码锁控制电路和密码锁显示电路。作为电子密码锁的输入电路,可供选择的方案有数字机械式键盘和触摸式数字键盘等多种。虽然机械式键盘存在一些诸如机械产生的弹跳消除问题和机械部分的接触等问题,但是和触摸式的4×3键盘相比,机械式键盘具有低成本、可靠性高、构成电路简单、技术成熟和应用广泛等特点,因此将其应用到通用数字电子密码锁中还是比较适宜的。本设计中采用一个4×3的通用数字机械键盘作为该设计的输入设备。数字电子密码锁的显示信息电路可采用LED数码管显示和液晶屏幕显示两种。液晶屏幕显示具有高速显示、高可靠性、易于扩展和升级等优点,但是普通液晶显示屏存在亮度低、对复杂环境的适应能力差等缺点,在低亮度的环境下还需要加入其他辅助的照明设备,驱动电路设计相对复杂,因此本设计的显示电路仍使用通用的LED数码管。根据以上选定的输入设备和显示器件,并考虑到实现各项数字密码锁功能的具体要求,密码锁结构框图如图4-1所示。图4-1密码锁结构框图键盘:用户对系统输入密码,采用4×3数字机械式键盘实现显示器:用来显示输入的密码,采用4个LED数码管实现时钟脉冲器:用来产生方波信号CPLD控制部分:核心部分,实现分频、内部逻辑、数字比较、数据存储、译码等功能整个电子密码锁系统的总体组成框图如图4-2所示。(1)密码锁输入电路包括时序产生电路、键盘扫描电路、键盘弹跳消除电路、键盘译码电路等几个小的功能电路。(2)密码锁控制电路包括按键数据的缓冲存储电路,密码的清除、存储、激活电锁电路(寄存器清除信号发生电路),密码核对(数值比较电路),解锁电路(开/关门锁电路)等几个小的功能电路。(3)七段数码管显示电路主要将待显示数据的BCD码转换成数码器的七段显示驱动编码(数据选择电路,BCD对七段显示器译码电路,七段显示器扫描电路)。图4-2电子密码锁系统总体框图密码锁输入电路的设计图4-4是电子密码锁的输入电路框图,由键盘扫描电路、弹跳消除电路、键盘译码电路、按键数据缓存器,加上外接的一个4×3矩阵式键盘组成。图4-4密码锁的输入电路框图1.矩阵式键盘的工作原理矩阵式键盘是一种常见的输入装置,在日常的生活中,矩阵式键盘在计算机、电话、手机、微波炉等各式电子产品上已经被广泛应用。图4-5是一个4×3矩阵式键盘的面板配置图,其中数字0~9作为密码数字输入按键,“*”作为“上锁”功能按键,“#”作为“解锁/清除”功能按键(输入数字小于4位时按下此键表示清除键,输人数字等于4位时表示解锁键)。图4-54×3矩阵式键盘的面板配置键盘上的每一个按键其实就是一个开关电路,当某键被按下时,该按键的接点回呈现0的状态,反之,未被按下时呈现逻辑1的状态。扫描信号由KY3~KY0进入键盘,变化的顺序依次为1110—1101—1011—0111—1110。每一次扫描一排,依次地周而复始,例如现在的扫描信号为1011,代表目前正在扫描7、8、9这一排的按键,如果这排当中没有按键被按下的话,则由KX2~KX0读出的值为111;反之当7这个按键被按下的话,则由KX2~KX0读出的值为011。根据上面所述原理,我们可得到各按键的位置与数码关系如表4-1所示。表4-1按键位置与数码关系KY3~KY0111011101110110111011101101110111011011101110111KX2~KX0011101110011101110011101110011101110按键号123456789*0#123456789*0#KY3..0KX2..0经上拉电阻接VCC1101111010110111011101110若从KX2~KX0读出的值皆为1时,代表该列没有按键被按下,则不进行按键译码的动作,反之,如果有按键被按下时,则应将KX2~KX0读出的值送至译码电路进行编码。2.密码锁输入电路各主要功能模块的设计(1)时序产生电路本时序产生电路中使用了三种不同频率的工作脉冲波形:系统时钟脉冲(它是系统内部所有时钟脉冲的源头,且其频率最高)、弹跳消除取样信号、键盘扫描信号。当一个系统中需要使用多种操作频率的脉冲波形时,最方便的方法之一就是利用一个自由计数器来产生各种需要的频率。也就是先建立一个N位计数器,N的大小根据电路的需求决定,N的值越大,电路可以分频的次数就越多,这样就可以获得更大的频率变化,以便提供多种不同频率的时钟信号。若输入时钟为CLK,N位计数器的输出为Q[N-1..0],则Q(0)为CLK的2分频脉冲信号,Q(1)为CLK的4分频脉冲信号,Q(2)为CLK的8分频脉冲信号……Q(N-1)为CLK的2N分频脉冲信号;Q(5DOWNTO4)取得的是一个脉冲波形序列,其值依次为00—01—10—11—00—01周期性变化,其变化频率为CLK的25分频,也就是32分频。我们利用以上规律即可得到各种我们所需要频率的信号或信号序列。(2)键盘扫描电路扫描电路的作用是用来提供键盘扫描信号(表1中的KY3~KY0)的,扫描信号变化的顺序依次为1110-1101-1011-0111-1110……依序地周而复始。扫描时依次分别扫描四列按键,当扫描信号为1110时扫描KY3这一排按键;当扫描信号为1101时,扫描KY2这一排按键;当扫描信号为1011时扫描KY1这一排按键;当扫描信号为0111时,扫描KY0这一排按键;每扫描一排按键就检查一次是否有键被按下,如果这排没有按键被按下就忽略,反之,如果出现被按下的键则立刻进行按键编码的动作,且将编码的结果储存于寄存器中。(3)弹跳消除电路由于本设计中采用的矩阵式键盘是机械开关结构,因此在开关切换的瞬间会在接触点出现信号来回弹跳的现象,对于电子密码锁这种灵敏度较高的电路这种弹跳将很可能会造成误动作输入,从而影响到密码锁操作的正确性。本设计中采用延时的软件方法消除抖动,若采样信号检测到输入由“1”变到“0”或由“0”变为“1”,先延时2个周期,仍旧检测到是“0”或“1”,则说明按键状态确实发生了变化,否则当作抖动处理,不予理会;这样就消除了抖动。(4)键盘译码电路上述键盘中的按键可分为数字按键和文字按键,每一个按键可能负责不同的功能,例如清除数码、退位、激活电锁、开锁等,详细功能参见表4-3。数字按键主要是用来输入数字的,但是键盘所产生的输出,也就是扫描回复信号,是无法直接拿来用做密码锁控制电路的输入的;另外,不同的按键(数字按键和功能按键)具有不同你功能,所以必须有键盘译码电路来规划每个按键的输出形式,以便执行相应的动作。表4-3键盘参数表扫描位置KY3~KY0键盘输出KX2~KX0相对应的键盘按键键盘译码电路输出按键功能11100111F=0001数码输入1012F=0010数码输入1103F=0011数码输入11010114F=0100数码输入1015F=0101数码输入1106F=0110数码输入10110117F=0111数码输入1018F=1000数码输入1109F=1001数码输入0111011*F=0100激活电锁1010F=0000数码输入110#F=0001清除/解除电锁注:当没有任何数字按键被按下时,键盘译码输出“1111”;当某功能按键尚未定义其功能时,按键译码输出“1000”。键盘译码电路主要负责的工作是:首先判断是否有键按下;若被按下的是数字按键,则解码成相对应的BCD码,若被按下的是功能按键,则解码成四位数的码字,有密码锁控制电路做相应的动作。(5)按键存储电路因为每次扫描会产生新的按键数据,可能会覆盖前面的数据,所以需要一个按键存储电路,将整个键盘扫描完毕后的结果记录下来。按键存储电路可以使用移位寄存器构成。本设计将采用串行输入/串行输出(SerialIn/SerialOut)移位寄存器硬件作为按键存储电路。所谓的串行输入/串行输出移位寄存器,即数据一个接着一个依序进来,输出时采用先进先出的顺序,同样是一个接着一个依序输出。根据以上设计思路,密码锁输入电路的VHDL程序见后的KEYBOARD.VHD程序,其中调用的程序(元件)DEBOUNCING.VHD为键盘输入去抖电路的VHDL源程序。3.密码锁控制电路的设计1.数字按键输入的响应控制(1)如果按下数字键,第一个数字会从显示器的最右端开始显示,此后每新按一个数字时,显示器上的数字必须左移一格,以便将新的数字显示出来。(2)假如要更改输入的数字,可以按清除键清除所有输入的数字,再重新输入四位数。(3)由于这里设计的是一个四位的电子密码锁,所以当输入的数字键超过四个时,电路不予理会,而且不再显示第四个以后的数字。2.功能按键输入的响应控制(1)清除键:清除所有的输入数字,即做归零动作。(2)激活电锁键:按下此键时可将密码锁的门上锁。(上锁前必须预先设定一个四位的数字密码)(3)解除电锁键:按下此键会检查输入的密码是否正确,若密码正确则开锁。(4)密码核对:在密码更改,开锁之前必须先核对密码。(6)密码变更:按下此键将目前输入的数字设定为新的密码。4密码锁显示电路的设计该设计的输出电路由显示缓存器、多路选通器、时钟发生器、扫描信号发生器、七段译码器组成,其结构和模块划分如图4-11所示。图4-11输出部分结构框图其中显示缓存器是1个存储量为16位的寄存器,它用于存储LED显示的内容。所以4个数码管就需要16位的存储器。多路选通器用于从显示缓存器中选择出某一个LED的内容用于显示。扫描信号用于选择片选信号,片选信号依次并循环地选通各个LED管时钟发生器,通过对全局时钟的分频得到扫描模块所需的时钟.七段译码模块把4位BCD码译成便于显示的七段码。该显示电路的工作过程如下:寄存器所存储的数据经由数据选择器送到译码电路,将其转换成七段显示器的显示码,转送到七段显示器,数据选择与显示管选择必须同步.由于设计的是4位数的数字密码锁,1位十进制数需要4个二进制位表示,所以寄存器必须是16位的。因为是以扫描的方式轮流被点亮的,因此寄存器上的数据必须一组一组地分开传送,每次送4个位。由于密码锁显示电路的设计比较简单,这里直接采用四个4-7译码器来实现。密码锁的整体组装设计将前面各个设计好的功能模块进行整合,可得到一个完整的电子密码锁系统的整体组装设计原理图,如图4-12所示。显示缓存器多路选通器时钟发生器七段译码器扫描信号发生器图4-12密码锁的整体组装设计原理图源代码IBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGLIC_UNSIGNED.ALL;LIBRARYaltera;USEaltera.maxplus2.ALL;--*********************************************ENTITYelec_lockISPORT(CLK_4M:INSTD_LOGIC;--systemoriginalclock4MCLK_SCAN:OUTSTD_LOGIC_VECTOR(3downto0);--scansequenceKEY_IN:INSTD_LOGIC_VECTOR(2downto0);--KEYINbuttoncodeFLAG_NUMB:OUTSTD_LOGIC;FLAG_FUNC:OUTSTD_LOGIC;LED_COM:OUTSTD_LOGIC;CLEAR:OUTSTD_LOGIC;ENLOCK:OUTSTD
本文标题:基于VHDL语言的电子密码锁的设计最终定稿
链接地址:https://www.777doc.com/doc-5411947 .html