当前位置:首页 > 工业控制 > 电子设计自动化
[导读] 摘 要:为了有效防止机械式键盘按键抖动带来的数据错误,这里在Quartus Ⅱ开发环境下,采用VHDL 语言设计了一种能够将机械式4 ×4 矩阵键盘的按键值依次显示到8 个7 段数码管上的矩阵键盘及显示电路。仿真结果表明,所

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

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

  1矩阵键盘及显示电路设计思路

矩阵键盘及显示电路能够将机械式4 ×4矩阵键盘的按键值依次显示到8 个7段数码管上,每次新的按键值显示在最右端的第0 号数码管上,原有第0~6号数码管显示的数值整体左移到第1~7号数码管上显示,见图1 。总体而言,矩阵键盘及显示电路的设计可分为4 个部分:

(1) 矩阵键盘的行及列的扫描控制和译码。该设计所使用的键盘是通过将列扫描信号作为输入信号,控制行扫描信号输出,然后根据行及列的扫描结果进行译码。

(2) 机械式按键的防抖设计。由于机械式按键在按下和弹起的过程中均有5~10 ms 的信号抖动时间,在信号抖动时间内无法有效判断按键值,因此按键的防抖设计是非常关键的,也是该设计的一个重点。

(3) 按键数值的移位寄存。由于该设计需要在8 个数码管上依次显示前后共8 次按键的数值,因此对已有数据的存储和调用也是该设计的重点所在。

(4) 数码管的扫描和译码显示。由于该设计使用了8 个数码管,因此需要对每个数码管进行扫描控制,并根据按键值对每个数码管进行7 段数码管的译码显示。

  2矩阵键盘及显示电路的实现

本文所设计的矩阵键盘及显示电图2 所示。其中, clk 为时钟信号输入端(频率可为1 024~32 768 Hz) ; start 为清零控制端;kbrow 为列扫描信号输入端; kbcol 为行扫描信号输出端; scan 为数码管地址扫描信号输出端; seg7 为数码管显示信号输出端。


图1矩阵键盘及显示电路原理图


图2矩阵键盘及显示电路的电路符号

限于篇幅,在此不详述所设计矩阵键盘及显示电路的全部V HDL 代码,只对部分重要代码段落进行详细说明。

如图1 所示,全部代码由7 个进程(process) 组成。其中,进程P1 和P2 用于对列扫描输入信号kbrow 进行读取,并通过或非运算产生行扫描使能控制信号en 对行扫描输出信号kbcol 进行控制,并生成一个与kbcol 对应的状态信号state。若没有按键被按下( 即kbrow =“0000”) ,则en =‘1’,行扫描输出信号kbcol 不断循环扫描各行;若有按键被按下,en =‘0’,则行扫描停止,并锁存当前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的各位数值进行与运算,生成防抖控制信号f nq。一旦有按键按下,en =‘0’,则即便是按键在抖动,key 中至少也有1 位数值为‘0’,从而使f nq =‘0’。只有当按键再次弹起,并且在连续8 个时钟周期内不再有新的按键按下,key 的数值全为‘1’,则f nq =‘1’,f nq产生一个上升沿,从而触发按键数值信号dat 进入数值寄存信号temp (32 位二进制数) 的第0 ~ 3 位, 并将temp 原来的第0~27 位左移到第4~31 位,实现1 次按键按下的数值存储。进程P4 和P5 的代码如下:




进程P6 用于将数值寄存信号temp 的32 位二进制数分配给8 个数码管,从而生成数码管地址扫描输出scan ,以及数码管数值信号data (4 位2 进制数) 。进程P6 代码如下:





进程P7 用于将数码管数值信号data 译码成为7 段数码管显示输出seg7 ,进程P7 的代码在此不再赘述。值得注意的是,本文设计的矩阵键盘及显示电路在按键防抖和数据寄存部分设计得更加简洁可靠,实现的功能更加强大,其具有如下特点:

(1) 为了实现按键防抖,本文采用对按键状态连续记录的方式,即在按键弹起后连续8 个时钟周期均无按键信号才确认1 次按键有效,从而避免了按键按下和弹起过程中的数据抖动,相比于使用计数器从按键按下开始计数, 直到5 ~ 10 ms 后才让按键有效的防抖方式 ,这里设计的按键防抖更加可靠,且可有效避免长时间按下按键产生的重复数据输出,使每次按键无论时间长短均可且只会产生1 次数据输出。另外,当电路采用32 768 Hz 以上的时钟作为系统时钟时,可以通过增加按键状态连续记录的时钟周期数,实现可靠的防抖。

(2) 该设计采用一个32 位一维数组temp 作为数据寄存器,使用移位寄存方式,实现了对连续8 次按键数据的存储和调用,从而可以在8 个数码管上连续显示数据。

  3仿真结果分析

本文设计的矩阵键盘及显示电路在Quartus Ⅱ开发环境下进行了仿真验证。其中,按键防抖功能的仿真波形如图3 所示。仿真结果分析如下:

(1) clk 为时钟输入信号,作为系统时钟;

(2) start 为清零控制端,当其为高电平时,按键有效;

(3) kbrow 为列扫输入信号,kbcol 为行扫输出信号,图3 中对kbrow[ 1 ]的输入波形进行设置,模拟了“A”键按下和弹起的过程;

(4) f nq 为防抖控制信号, scan 为数码管地址扫描输出,seg7 为数码管显示输出。由图3 可知,只有在按键弹起后,才有数据输出,从而实现防抖功能。


图3矩阵键盘及显示电路按键防抖仿真波形

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

  4结 语

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



参考文献:

[1].ACEX1Kdatasheethttp://www.dzsc.com/datasheet/ACEX1K_1307867.html.
[2].dat datasheethttp://www.dzsc.com/datasheet/dat+_1869419.html.


来源:技术员0次

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

D类音频放大器参考设计(EPC9192)让模块化设计具有高功率和高效,从而可实现全定制、高性能的电路设计。

关键字: 音频放大器 电路设计

随着电脑科技的飞速发展,作为电脑输入设备的重要组成部分,键盘的种类和功能也在不断演变。其中,机械键盘以其出色的手感、长久的使用寿命和高度个性化的特点,深受众多电脑用户的喜爱。而机械键盘的核心——键盘轴,更是决定键盘使用体...

关键字: 电脑 键盘 机械

可调电容作为一种重要的电子元器件,在电路设计中具有广泛的应用。本文将对可调电容的基本概念、工作原理、调用方法以及应用场景进行详细探讨,旨在帮助读者更好地理解和应用可调电容。

关键字: 可调电容 电子元器件 电路设计

近日,国内新一代激光陀螺驱动系列功能芯片问世,由湖南二零八先进科技有限公司(下简称“二零八公司”)技术团队研发。相比行业内普遍应用的上一代激光陀螺驱动控制电路,激光陀螺驱动专用芯片降低了电路设计难度,大幅减小体积重量,实...

关键字: 激光陀螺仪电路 芯片 电路设计

R是施密特触发器输入端的一个10KΩ下拉电阻,时间常数为10×10-6×10×103=100ms。

关键字: 复位 电路设计 施密特触发器

学好电子技术基础知识,如电路基础、模拟电路、数字电路和微机原理。这几门课程都是弱电类专业的必修课程,学会这些后能保证你看懂单片机电路、知道电路的设计思路和工作原理;

关键字: 单片机 编程 电路设计

Buck-Boost电路工作原理及其应用你有没有去了解过呢?随着科技的不断发展,电力电子技术在各个领域得到了广泛的应用。其中,Buck-Boost电路作为一种重要的电力电子变换器,具有很高的实用价值。本文将对Buck-B...

关键字: buck-boost 电路设计

本文是开发测量核心体温( CBT )传感器产品的刚柔结合电路板的通用设计指南,可应用于多种高精度(±0.1°C)温度检测应用。

关键字: 温度传感器 电路设计

自9月22日开始,2023年中国大学生工程实践与创新能力大赛选拔赛在全国各省市陆续展开,10月29日北京、海南、新疆等区域选拔赛成功举办,也为今年的选拔赛画上了圆满的句号。在此,向那些成功晋级国赛的选手们致以热烈祝贺,同...

关键字: PCB 电路设计

自从智能手机、平板电脑、笔记本电脑的兴起,内置的锂电池技术没有革命性突破,续航问题一直伴随着这些数码设备,移动电源的出现给我们出行过程中学习、工作、娱乐提供了更多额外的电量,可谓是功不可没。

关键字: 移动电源 电路设计 智能手机
关闭
关闭