当前位置:首页 > 电源 > 数字电源
[导读]为了有效防止机械式键盘按键抖动带来的数据错误,这里在QuartusⅡ开发环境下,采用VHDL语言设计了一种能够将机械式4×4矩阵键盘的按键值依次显示到8个7段数码管上的矩阵键盘及显示电路。仿真结果表明,所设计的矩阵键盘及显示电路成功地实现了按键防抖和按键数据的准确显示。以ACEXlK系列EPlK30QC208芯片为硬件环境,验证了各项设计功能的正确性。

  FPGA/CPLD在数字系统设计中的广泛应用,影响到了生产生活的各个方面。在FPGA/CPLD的设计开发中,VHDL语言作为一种主流的硬件描述语言,具有设计效率高,可靠性好,易读易懂等诸多优点。作为一种功能强大的FPGA/CPLD数字系统开发环境,Altera公司推出的Quar-tUSⅡ,为设计者提供了一种与结构无关的设计环境,使设计者能方便地进行设计输入、快速处理和器件编程,为使用VHDL语言进行FPGA/-CPLD设计提供了极大的便利。矩阵键盘作为一种常用的数据输入设备,在各种电子设备上有着广泛的应用,通过7段数码管将按键数值进行显示也是一种常用的数据显示方式。在设计机械式矩阵键盘控制电路时,按键防抖和按键数据的译码显示是两个重要方面。本文在QuartusⅡ开发环境下,采用VHDL语言设计了一种按键防抖并能连续记录并显示8次按键数值的矩阵键盘及显示电路

1 矩阵键盘及显示电路设计思路
   
矩阵键盘及显示电路能够将机械式4×4矩阵键盘的按键值依次显示到8个7段数码管上,每次新的按键值显示在最右端的第O号数码管上,原有第0~6号数码管显示的数值整体左移到第1~7号数码管上显示,见图1。总体而言,矩阵键盘及显示电路的设计可分为4个部分:
    (1)矩阵键盘的行及列的扫描控制和译码。该设计所使用的键盘是通过将列扫描信号作为输入信号,控制行扫描信号输出,然后根据行及列的扫描结果进行译码。
    (2)机械式按键的防抖设计。由于机械式按键在按下和弹起的过程中均有5~10 ms的信号抖动时间,在信号抖动时间内无法有效判断按键值,因此按键的防抖设计是非常关键的,也是该设计的一个重点。
    (3)按键数值的移位寄存。由于该设计需要在8个数码管上依次显示前后共8次按键的数值,因此对已有数据的存储和调用也是该设计的重点所在。
    (4)数码管的扫描和译码显示。由于该设计使用了8个数码管,因此需要对每个数码管进行扫描控制,并根据按键值对每个数码管进行7段数码管的译码显示。

2 矩阵键盘及显示电路的实现
   
本文所设计的矩阵键盘及显示电路的电路符号如图2所示。其中,clk为时钟信号输入端(频率可为1 024~32 768Hz);start为清零控制端;kbrow为列扫描信号输入端;kbeol为行扫描信号输出端;scan为数码管地址扫描信号输出端;seg7为数码管显示信号输出端。
    限于篇幅,在此不详述所设计矩阵键盘及显示电路的全部VHDL代码,只对部分重要代码段落进行详细说明。

[!--empirenews.page--]


    如图1所示,全部代码由7个进程(process)组成。其中,进程P1和P2用于对列扫描输入信号kbrow进行读取,并通过或非运算产生行扫描使能控制信号en对行扫描输出信号kbcol进行控制,并生成一个与kbcol对应的状态信号state。若没有按键被按下(即kbrow="0000"),则en= '1',行扫描输出信号kbcol不断循环扫描各行;若有按键被按下,en=‘O’,则行扫描停止,并锁存当前kbcol的值。进程P1和P2的代码如下:


    进程P3使用“case…when”语句,根据状态信号state的值(即kbcol的值)和列扫描输入信号kbrow的值进行按键值译码,生成一个4位二进制按键数值信号dat,用以记录当前按键值。例如,当kbcol=“0010”,kbrow=“0001”时,“B”键按下,dat=“1011”。进程P3的代码在此不再赘述。
    进程P4和P5用于按键的防抖和按键值的移位寄存。通过将行扫描使能控制信号en不断赋给一个8位二进制变量reg8,再将reg8赋给8位二进制信号key,实现对按键状态的记录,然后通过对key的各位数值进行与运算,生成防抖控制信号fnq。一旦有按键按下,en=‘O’,则即便是按键在抖动,key中至少也有1位数值为‘0’,从而使fnq=‘O’。只有当按键再次弹起,并且在连续8个时钟周期内不再有新的按键按下,key的数值全为‘1’,则fnq=‘1’,fnq产生一个上升沿,从而触发按键数值信号dat进入数值寄存信号temp(32位二进制数)的第0~3位,并将temp原来的第0~27位左移到第4~31位,实现1次按键按下的数值存储。进程P4和P5的代码如下:
   
    进程P6用于将数值寄存信号temp的32位二进制数分配给8个数码管,从而生成数码管地址扫描输出scan,以及数码管数值信号data(4位2进制数)。进程P6代码如下:
    [!--empirenews.page--]
   
    进程P7用于将数码管数值信号data译码成为7段数码管显示输出seg7,进程P7的代码在此不再赘述。值得注意的是,本文设计的矩阵键盘及显示电路在按键防抖和数据寄存部分设计得更加简洁可靠,实现的功能更加强大,其具有如下特点:
    (1)为了实现按键防抖,本文采用对按键状态连续记录的方式,即在按键弹起后连续8个时钟周期均无按键信号才确认1次按键有效,从而避免了按键按下和弹起过程中的数据抖动,相比于使用计数器从按键按下开始计数,直到5~10 ms后才让按键有效的防抖方式,这里设计的按键防抖更加可靠,且可有效避免长时间按下按键产生的重复数据输出,使每次按键无论时间长短均可且只会产生1次数据输出。另外,当电路采用32 768 Hz以上的时钟作为系统时钟时,可以通过增加按键状态连续记录的时钟周期数,实现可靠的防抖。
    (2)该设计采用一个32位一维数组temp作为数据寄存器,使用移位寄存方式,实现了对连续8次按键数据的存储和调用,从而可以在8个数码管上连续显示数据。

3 仿真结果分析
   
本文设计的矩阵键盘及显示电路在QliartusⅡ开发环境下进行了仿真验证。其中,按键防抖功能的仿真波形如图3所示。仿真结果分析如下:
    (1)clk为时钟输入信号,作为系统时钟;
    (2)start为清零控制端,当其为高电平时,按键有效;
    (3)kbrow为列扫输入信号,kbcol为行扫输出信号,图3中对kbrow[1]的输入波形进行设置,模拟了“A”键按下和弹起的过程;
    (4)fnq为防抖控制信号,scan为数码管地址扫描输出,seg7为数码管显示输出。由图3可知,只有在按键弹起后,才有数据输出,从而实现防抖功能。


    该设计的其他功能也可以通过仿真验证,不再赘述。

4 结语
   
本文设计矩阵键盘显示电路在QuartusⅡ开发环境下进行仿真验证后,下载到湖北众友科技实业股份有限公司的ZYllEDAl3BE实验箱中进行了硬件验证。该实验箱使用ACEXlK系列EPlK30QC208芯片作为核心芯片。实验证明,当电路的系统时钟频率在1 024~32 768 Hz范围内时,电路均可稳定运行,按键防抖可靠、功能完整。当系统时钟频率低于1 024 Hz时,需要减少防抖记录时钟周期的个数,否则容易错过短时按键动作;当系统时钟频率高于32 768 Hz时,需要增加防抖记录时钟周期的个数,以确保可靠的按键防抖。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

构建可靠的硬件要求我们在设计阶段考虑所有公差。许多参考文献讨论了参数偏差导致的有源元件误差——展示了如何计算运算放大器失调电压、输入电流和类似参数的影响——但很少有人考虑无源元件容差。确实考虑了组件容差的参考文献是从科学...

关键字: 元件公差 电路设计

对于非比例电路,我们必须假设完整的电阻容差,因为容差不会分开。我们可以将输出电压计算为 V OUT =IR,其中 I 是理想的 1mA 电流源,R 是 5% 的电阻器(图 1a)。V OUT =1 mA (1±0.05±...

关键字: 电路设计 非比例电路

我们是否设计了一个电源,后来才发现我们的布局效率低下?按照这些关键提示创建电源布局并避免调试压力。什么是电源设计的布局?你知道吗?一个完美的电路设计,电源布局显得尤为重要。由于不同的设计方案的出发点不同,而有所差异,但是...

关键字: 电源布局 电路设计

在这篇文章中,小编将对FPGA的相关内容和情况加以介绍以帮助大家增进对它的了解程度,和小编一起来阅读以下内容吧。

关键字: FPGA 芯片 VHDL

摘要:基于摄像机远程操作技术,利用单片机控制步进电机,建立摄像镜头的电力驱动系统。此系统节约了经济成本,通过人机交互闭环系统、模块化等方法,进一步提高了系统的通用性,使其可以应用于工程。

关键字: 步进电机 单片机 电路设计

一直以来,智能硬件都是大家的关注焦点之一。因此针对大家的兴趣点所在,小编将为大家带来智能功率模块的相关介绍,详细内容请看下文。

关键字: 智能功率模块 IPM 电路设计

与传统聚合物电容器相比,多层陶瓷电容器 (MLCC) 在电力电子设计中很受欢迎,原因有很多: MLCC 提供: · 具有相对较高电容的小轮廓。 · 非常低的等效串联电阻 (ESR)。 · 非常低的等效串联电感 (...

关键字: MLCC电容 电路设计

许多同步降压转换器设计人员面临一个共同的问题:如何最好地连接开漏电源良好标志,也称为电源良好 (PGOOD) 引脚。在这篇文章中,我将探讨电源良好与各种不同的上拉源相关联时的预期行为。有一些错误信息四处流传,希望这篇文章...

关键字: 降压转换器 电路设计

嵌入式开发是指利用分立元件或集成器件进行电路设计、结构设计,再进行软件编程(通常是高级语言),实验,经过多轮修改设计、制作,最终完成整个系统的开发。

关键字: 嵌入式开发 电路设计 结构设计

可编程逻辑器件是通过EDA技术将电子应用系统的既定功能和技术指标具体实现的硬件载体,FPGA作为实现这一途径的主流器件之一,具有直接面向用户,灵活性和通用性极大,使用方便,硬 件测试和实现快捷等特点。

关键字: EDA FPGA VHDL

数字电源

15504 篇文章

关注

发布文章

编辑精选

技术子站

关闭