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