通過上圖可以看出理想波形與實際波形之間是有區(qū)別的,實際波形在按下和釋放的瞬間都有抖動的現(xiàn)象,抖動時間的長短和按鍵的機械特性有關,一般為5~10ms。通常我們手動按鍵然后釋放,這個動作中穩(wěn)定閉合的時間超過了20ms。因此單片機在檢測鍵盤是否按下時都要加上去抖動操作,有專用的去抖動電路,也有專門的去抖動芯片,但通常我們采用軟件延時的方法就可以解決抖動問題。
軟件實現(xiàn)如下:
//軟件去抖if(0==Keyport)//如果有鍵按下{delay_ms(8);//延時一段時間消抖if(0==Keyport)//如果真的有鍵按下檢測到的是穩(wěn)定閉合狀態(tài){......;//按鍵實現(xiàn)的功能}while(!Keyport);//俗稱“死等”,松手檢測,如果按住不放則一//直在while()循環(huán)里}