按键去抖说明

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

由于机械触点的弹性振动,按键在按下时不会马上稳定地接通而在弹起时也不能一下子完全地断开,因而在按键闭合和断开的瞬间均会出现一连串的抖动,这称为按键的抖动干扰,其产生的波形如图5.3.1 所示,当按键按下时会产生前沿抖动,当按键弹起时会产生后沿抖动。这是所有机械触点式按键在状态输出时的共性问题,抖动的时间长短取决于按键的机械特性与操作状态,一般为10~100ms,此为键处理设计时要考虑的一个重要参数。

按键的抖动会造成按一次键产生的开关状态被CPU 误读几次。为了使CPU 能正确地读取按键状态,必须在按键闭合或断开时,消除产生的前沿或后沿抖动,去抖动的方法有硬件方法和软件方法两种。

1. 硬件方法

硬件方法是设计一个滤波延时电路或单稳态电路等硬件电路来避开按键的抖动时间。

图5.3.2 是由R2 和C 组成的滤波延时消抖电路,设置在按键S 与CPU 数据线Di 之间。按键S 未按下时,电容两端电压为0,即与非门输入V i 为0,输出V o 为1。当S 按下时,由于C 两端电压不能突变,充电电压V i 在充电时间内未达到与非门的开启电压,门的输出V o将不会改变,直到充电电压V i 大于门的开启电压时,与非门的输出V o 才变为0,这段充电延迟时间取决于R1、R2 和C 值的大小,电路设计时只要使之大于或等于100ms 即可避开按键抖动的影响。同理,按键S 断开时,即使出现抖动,由于C 的放电延迟过程,也会消除按键抖动的影响

图5.3.2 中,V1 是未施加滤波电路含有前沿抖动、后沿抖动的波形,V2 是施加滤波电路后

消除抖动的波形。

2. 软件方法

软件方法是指编制一段时间大于100ms 的延时程序,在第一次检测到有键按下时,

执行这段延时子程序使键的前沿抖动消失后再检测该键状态,如果该键仍保持闭合状态电平,则确认为该键已稳定按下,否则无键按下,从而消除了抖动的影响。同理,在检测到按键释放后,也同样要延迟一段时间,以消除后沿抖动,然后转入对该按键的处理。

相关文档
最新文档