專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

單片機(jī)中按鍵消抖動(dòng)

作者:海盜工作室   來(lái)源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2014年04月28日   【字體:

 對(duì)于單片機(jī)中的按鍵消抖動(dòng),本節(jié)Bingo根據(jù)自己當(dāng)年寫過(guò)的單片機(jī)其中的一個(gè)代碼來(lái)講解,代碼如下所示:

unsigned char key_scan(void)

{

if(key == 0) //檢測(cè)到被按下

{

delay(5); //延時(shí)5ms,消抖

if(key != 0)

retrurn 0; //是抖動(dòng),返回退出

while(!key1); // 確認(rèn)被按下,等下釋放

delay(5); //延時(shí)5ms,消抖

while(!key1); //確認(rèn)被釋放

return 1; //返回按下信號(hào)

}

return 0; //沒(méi)信號(hào)

}

針對(duì)以上代碼,消抖動(dòng)的順序如下所示:

(1)檢測(cè)到信號(hào)

(2)延時(shí)5ms,消抖動(dòng)

(3)繼續(xù)檢測(cè)信號(hào),確認(rèn)是否被按下

a) 是,則開(kāi)始等待釋放

b) 否,則返回0,退出

(4)延時(shí)5ms,消抖動(dòng)

(5)確認(rèn),返回按下信號(hào),退出

當(dāng)然在單片機(jī)中也可以循環(huán)計(jì)數(shù)來(lái)確認(rèn)是否被按下。如此,太耗MCU資源。

關(guān)閉窗口

相關(guān)文章