通過上圖可以看出理想波形與實際波形之間是有區(qū)別的,實際波形在按下和釋放的瞬間都有抖動的現(xiàn)象,抖動時間的長短和按鍵的機械特性有關(guā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)里}





