基于延时采样的按键消抖方法
本作品采用知识共享署名-相同方式共享 3.0 未本地化版本许可协议进行许可。
按键抖动
常见的按键有轻触按键和触摸按键。前者通过内部金属片受力弹动实现按键的接通和断开,后者通过电阻或电容实现触摸感应。此处讨论轻触按键的抖动和软件消抖方法。
产生抖动的原因
通常的按键所用的开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。
在闭合及断开的瞬间均伴随有一连串的抖动。程序很有可能因为抖动,将一次按键读取成多次输入。按键为了使这种抖动不影响正常的操作,需要在软件中进行优化处理,就是按键消抖。
按键消抖的机理
通常,按键持续时间为数百毫秒以上;按下和放开按键时,产生的抖动一般持续10ms。常用消抖方式有两种:
- 延时采样:检测按键电平变化后延时(10ms以上),采样作为有效信号
- 周期采样:每隔固定时间采样(10ms以上) ,采样作为有效信号
此处使用延时电平采样实现按键消抖。