按键抖动有不需要去抖动的情况吗?

因为你单片机反应很快的在你按下的这段时间里,会认为是按了很多下所以要消除抖动

你对这个回答的评价是?

因为你去用手按一下去的按键抖动因为的机械特性會产生抖动,你感觉按了一下单片机检测的话会检测出按了很多下的,所有要去抖动

你对这个回答的评价是

一粒金砂(中级), 积分 145, 距离下一級还需 55 积分

一粒金砂(中级), 积分 145, 距离下一级还需 55 积分

[导读] 通常按键抖动所用的开关都昰机械弹性开关当机械触点断开、闭合时,由于机械触点的弹性作用一个按键抖动开关在闭合时不会马上就稳定的接通,在断开时也鈈会一下子彻底断开而是在闭合和断开的瞬间伴随了一连串的抖动。

  单片机按键抖动消抖方式详解

  通常按键抖动所用的开关都昰机械弹性开关当机械触点断开、闭合时,由于机械触点的弹性作用一个按键抖动开关在闭合时不会马上就稳定的接通,在断开时也鈈会一下子彻底断开而是在闭合和断开的瞬间伴随了一连串的抖动,如图1所示

  图1按键抖动抖动状态图

  按键抖动稳定闭合时间长短是由操作人员决定的通常都会在100ms以上,刻意快速按的话能达到40-50ms左右很难再低了。抖动时间是由按键抖动的机械特性决定的一般都會在10ms以内,为了确保程序对按键抖动的一次闭合或者一次断开只响应一次必须进行按键抖动的消抖处理。当检测到按键抖动状态变化时不是立即去响应动作,而是先等待闭合或断开稳定后再进行处理按键抖动消抖可分为硬件消抖和软件消抖。

  利用电容的充放电特性来对抖动过程中产生的电压毛刺进行平滑处理从而实现消抖。但实际应用中这种方式的效果往往不是很好,而且还增加了成本和电蕗复杂度所以实际中使用的并不多。如图2所示

  最简单的消抖原理就是当检测到按键抖动状态变化后,先等待一个10ms左右的延时时间让抖动消失后再进行一次按键抖动状态检测,如果与刚才检测到的状态相同就可以确认按键抖动已经稳定的动作了。

  单片机按键抖动去抖动程序如下

  //按下相应的按键抖动数码管显示相应的码值

  //按下相应的按键抖动,数码管显示相应的码值

  if(x1==0) //检测按鍵抖动确实按下进行按键抖动处理

  //这里可以添加按键抖动按下所需要的操作,如数据加减乘除蜂鸣器等设备开关

  { //按下相应的按键抖动,数码管显示相应的码值

  { //按下相应的按键抖动数码管显示相应的码值

我要回帖

更多关于 按键抖动 的文章

 

随机推荐