按键处理
AI summary
文档讨论了按键处理的不同方式,包括独立按键和矩阵键盘的特性及其I/O资源占用。对于按键数量较少时,推荐使用独立按键;而数量较多时,则使用矩阵键盘。还分析了独立按键的消抖过程,介绍了硬件和软件消抖方法,并提供了设计架构和测试结果。最后,包含了一些练习和仿真测试的结果。
Last edited time
Sep 24, 2024 02:03 PM
Last edited by
Tags
Key Processing
Debouncing Techniques
Input Output Management
一:常用的按键在生活中处理方式
- 独立按键(机械开关)
- 特性:当按下按键时,按键不会马上稳定的接通,会伴随有一连串的抖动;
- 独立按键板卡原理图:
- 占用I/O资源
当按键抬起时,按键不会马上稳定的断开,会伴随有一连串的抖动。
当按键比较少时(低于10个按键),往往都会采用独立按键布局(简单)。
特点:一个独立按键对应一个I/O;有多少按键需要多少I/O。
当按键个数较多时(10个以上),往往不会采用独立按键布局。
- 矩阵键盘(机械开关)
- 特性:当按下按键时,按键不会马上稳定的接通,会伴随有一连串的抖动;
- 矩阵键盘板卡原理图:
- 占用I/O资源
当按键抬起时,按键不会马上稳定的断开,会伴随有一连串的抖动。
矩阵键盘中,采用行和列来表明当前的按键(第一行第一列:第一个按键);按键的多少取决于行和列。
独立按键I/O | 矩阵键盘I/O | 说明 |
4:4 | 4:4 | |
10:10 | 10:7 | 10个按键以下采用独立按键 |
16::16 | 16:8 | 16个按键(几十按键)采用矩阵键盘 |
100:100 | 100:20 | 上百个按键:编码芯片/接口协议 |
- 编码芯片/接口协议
接口协议:PS2/USB2.0/USB3.0协议。
协议标准,具体可以参考器件手册。
总结:
(1)当按键个数较少时(10个以下),采用独立按键方式,价格便宜,布局简单。
(2)当按键个数较多时(16个/几十),采用矩阵键盘方式,价格便宜,布局矩阵。
(3)当按键特别多时(上百个),采用编码芯片/接口协议,价格昂贵,实现起来难。
二:独立按键过程分析
独立按键完整过程:按键按下~按键抬起
在实际情况下,按键过程有5个;如果想让按键按下一次时,只动作一次,那么需要对按键进行抖动的消除(该过程称为按键消抖)。
有两种方式:
- 硬件消抖(在布局时采用材质好的按键)
- 软件消抖
不管是按下/抬起时的抖动,抖动时间一般为5~10ms,可以采用延时时间大于抖动时间,可以使按键处于稳定的时间。
如果在实际案例中,需要在按键按下时记录按键按下的次数,需要对按键进行消抖。
三:独立按键设计分析
四:独立按键处理过程
五:独立按键消抖实现
- 设计架构
- 设计实现
采用FSM实现:
- 测试结果
(1):消抖后输出的按键动作
(2):消抖后输出的尖峰脉冲
Flag1:按下时按键的标志(一次按键动作)
Flag2:抬起时按键的标志(一次按键动作)
Flag:按下和抬起按键的标志(两次按键动作)
练习:
- 完成上课内容(练习分享和按键理论:抖动)
- 基于尖峰脉冲的按键消抖(三段式实现:重新讨论STG)
- 在之前花样LED显示基础之上,采用基于尖峰脉冲的按键消抖实现按下按下第一次显示第一种LED的花样,按下第二次显示第二种LED的花样…(3种:闪光/呼吸/流水)。
练习2:
练习3:
- 仿真测试结果:
在按键消抖(基于尖峰脉冲按键消抖)基础之上,完成LED的控制。
- 按键按下得次数对应的时序
- 设计架构
- 仿真测试结果
Loading...