按键抖动与处理

发布时间:2014-10-23 23:27:52
来源:分享查询网

为什么会有按键抖动(百度百科)         通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动,为了不产生这种现象而作的措施就是按键消抖。 如何消除抖动 如果按键较多,常用软件方法去抖,即检测出键闭合后执行一个延时程序,5ms~10ms的延时,让前沿抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有键按下。当检测到按键释放后,也要给5ms~10ms的延时,待后沿抖动消失后才能转入该键的处理程序。 一般来说,软件消抖的方法是不断检测按键值,直到按键值稳定。实现方法:假设未按键时输入1,按键后输入为0,抖动时不定。可以做以下检测:检测到按键输入为0之后,延时5ms~10ms,再次检测,如果按键还为0,那么就认为有按键输入。延时的5ms~10ms恰好避开了抖动期。 一段处理代码:        uint8_t YF_Key_On(uint8_t port,uint8_t pin) { uint32_t uTemp; //按键扫描 uTemp = GPIO_ReadValue(port); if(!((uTemp>>pin)&0x0001)) { DelayMS(10);//软件延时,检测出键闭合后执行一个延时程序,5ms~10ms的延时,让前沿抖动消失后 //按键扫描 uTemp = GPIO_ReadValue(2); if(!((uTemp>>pin)&0x0001))//让前沿抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有键按下。 { return 1; } } return 0; }

返回顶部
查看电脑版