图2.1 系统流程图
2.5密码锁系统总体框图
通过电子密码锁系统结构的分析,我们知道通用的电子密码锁主要由三个部分组成:数字密码输入电路、密码锁控制电路和密码锁显示电路。也就是说,设计分为三个大的功能模块。图2.2为数字电子密码锁系统总体框图。
电子密码锁输入模块键盘扫描电路扫描信号时序产生电路键盘按键输入按键消抖电路键盘译码电路密码锁控制电路寄存器清楚信号发生电路报警器电路开/关门锁电路数值比较电路显示电路BCD七段译码电路按键数据缓存器七段数码管
图2.2 数字电子密码锁系统总体框图
2.5硬件设备
作为电子密码锁的输入电路,数字密码输入电路可采用一个4×4的通用数字机械键盘作为本设计的输入设备。机械式键盘具有低成本、可靠性高、构成电路简单、技术成熟和应用广泛等特点,因此将其应用到通用电子密码锁中还是比较适宜的。
数字电子密码锁的显示信息电路可采用LED数码管显示和液晶屏幕显示两种。液晶显示具有高速显示、高可靠性、易于扩展和升级等优点,但是普通液晶显示屏存在亮度低、对复杂环境的适应能力差等缺点,在低亮度的环境下还需要
加入其它辅助的照明设备,驱动电路设计相对复杂,因此本设计的显示电路使用通用的LED数码管。
3.系统设计要求
设计一个具有较高安全性和较低成本的通用电子密码锁,具体功能要求如下:
(1)数码输入:每按下一个数字键,就输入一个数值,并在显示器上的显示出该数值,同时将先前输入的数据依序左移一个数字位置。
(2)数码清除:按下此键可清除前面所有的输入值,清除为“0000”。 (3)密码更改:按下此键时会将目前的数字设定成新的密码。 (4)激活电锁:按下此键可将密码锁上锁。
(5)解除电锁:按下此键会检查输入的密码是否正确,密码正确即开锁。
4.电子密码锁的设计与分析
4.1几个主要功能模块的设计
本系统为一个简洁型的电子密码锁,该系统以开发板为主要核心,采用4×4的键盘,前10个键为数字键,8个数码管显示密码输入,后面的按键实现电子密码锁的各个功能,总体外观如图4.1所示。
扬声器12345FPGA控制模块96780*#确定密码清除上锁解锁 图4.1 电子密码外观图
上图为在实验开发板上实现,使用开发板有十六个按键,分别对应数字0到9和各个功能键,LED显示为开发板上数码管显示。
4.1.1密码锁输入电路
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(5 DOWNTO 4)取得的是一个脉冲波形序列,其值依00-01-10-11-00-01周期性变化,其变化频率为CLK的32分频。我们利用以上规律即可得到各种我们所需要频率的信号或信号序列。
SIGNAL CLK: STD_LOGIC ; --电路工作时钟脉冲
SIGNAL C_KEYBOARD: STD_LOGIC_VECTOR(1 DOWNTO 0); --键扫信号“00-01-10-11”寄存器 SIGNAL C_DEBOUNCE: STD_LOGIC ; --去抖时钟信号 2.键盘扫描电路
扫描电路的作用是用来提供键盘扫描信号的,扫描信号变化的顺序依次为1110-1101-1011-0111-1110??依序的周而复始。扫描时依序分别扫描四列按键,当扫描信号为1110时扫描KY3这一排按键;当扫描信号为1101室,扫描KY2这一排按键;当扫描信号为1011时,扫描KY1这一排按键;当扫描信号为0111时,扫描KY0这一排按键。每扫描一排按键就检查一次是否有键被按下,如果这排没有按键被按下就忽略,反之,如果出现被按下的键则立刻进行按键编码的动作,且将编码的结果储存于寄存器中。
--扫描信号发生器 COUNTER : BLOCK IS
SIGNAL Q: STD_LOGIC_VECTOR(5 DOWNTO 0); SIGNAL
SEL:
STD_LOGIC_VECTOR
(3
DOWNTO
0);
--1110-1101-1011-0111
BEGIN
PROCESS (CLK_1K) IS BEGIN
IF CLK_1K'EVENT AND CLK_1K ='1' THEN Q <= Q+1;
END IF;
C_DEBOUNCE <= Q(2) ; --去抖时钟信号, 大约125 Hz C_KEYBOARD <= Q(6 DOWNTO 5) ; -- 产生键扫信号***“00-01-10-11”, 大约16 Hz --C_DEBOUNCE <= Q(1) ; --仿真时用 --C_KEYBOARD <= Q(5 DOWNTO 4) ;
CLK <= Q(0) ; END PROCESS;
--仿真时用
3.弹跳消除电路
由于设计采用的矩阵式键盘是机械开关结构,因此在开关切换的瞬间会在接触点出现信号来回弹跳的现象,对于电子密码锁这种灵敏度较高的电路这种弹跳将很可能会造成误动作输入,从而影响到密码锁操作的正确性。
弹跳现象产生的原因是,虽然每次只是按下按键一次然后放掉,然而实际产生的按键信号却不知跳动一次,经过取样信号的检查后,将会造成误判断,以为键盘按了两次。
图4.2 弹跳现象产生错误的抽样结果
如果调整抽样频率,弹跳现象就可以获得改善。
图4.3 调整抽样频率后得到的抽样结果
因此必须加上弹跳消除电路,避免误操作信号的发生。特别要注意的是,弹跳消除电路所使用的脉冲信号的频率必须比其他电路使用的脉冲信号的频率更高;通常将扫描电路的工作频率定在24Hz左右,而将弹跳消除电路的工作频率定在128Hz左右,其工作频率通常是前者的4倍或者更高。
DEBOUNUING : BLOCK IS BEGIN
U1: DEBOUNCING PORT MAP (D_IN => KEY_IN(0) , D_OUT => C(0), CLK => C_DEBOUNCE);
U2: DEBOUNCING PORT MAP (D_IN => KEY_IN(1) , D_OUT => C(1), CLK => C_DEBOUNCE);
U3: DEBOUNCING PORT MAP (D_IN => KEY_IN(2) , D_OUT => C(2), CLK => C_DEBOUNCE ); 4.1.2密码锁控制电路
控制锁的控制电路是整个电路的控制中心,主要完成对数字按键输入和功能按键输入的相应控制。
1.数字按键输入的响应控制
(1)如果按下数字键,第一个数字会从显示其的最右端开始显示,此后每新按一个数字时,显示器上的数字必须左移一格,以便将新的数字显示出来。
(2)假如要更改输入的数字,可以按倒退按键来清除前一个输入的数字,或者按清除键清除所有出入的数字,再重新输入四位数。
(3)当输入的数字键超过预设位数时,电路不予理会,而且不再显示以后的数字。
2.功能按键输入的响应控制
(1)清除键:清除所有的输入数字,即作归零动作。