为什么要按键消抖

在按键被按下的短暂一瞬间,由于硬件上的抖动,往往会产生几毫秒的抖动,在这时候若采集信号,势必导致误操作,甚至系统崩溃;同样,在释放按键的那一刻,硬件上会相应的产生抖动,会产生同样的后果。因此,在模拟或者数字电路中,我们要避免在最不稳定的时候采集信号进行操作。
image.pngimage.png
电容滤波示波器图
对此,一般产用消抖动的原理,其可分为以下三种:
(1)延时
(2)N次低电平计数
(3)低通滤波

单片机中按键消抖

  1. unsigned char key_sCAN(void)
  2. {
  3. if(key == 0) //检测到被按下
  4. {delay(5); //延时5ms,消抖
  5. if(key != 0)retrurn 0; //是抖动,返回退出
  6. while(!key1); // 确认被按下,等下释放
  7. delay(5); //延时5ms,消抖
  8. while(!key1); //确认被释放
  9. return 1; //返回按下信号
  10. }
  11. return 0; //没信号}

针对以上代码,消抖动的顺序如下所示:
(1)检测到信号
(2)延时5ms,消抖动
(3)继续检测信号,确认是否被按下
a. 是,则开始等待释放
b. 否,则返回0,退出
(4)延时5ms,消抖动
(5)确认,返回按下信号,退出