0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

單片機(jī)按鍵消抖的原理和方法詳解

MCDZ029 ? 來(lái)源:被硬件攻城的獅子 ? 2023-12-22 10:06 ? 次閱讀

一、按鍵抖動(dòng)

通常的按鍵所用開關(guān)為機(jī)械彈性開關(guān),當(dāng)機(jī)械觸點(diǎn)斷開、閉合時(shí),由于機(jī)械觸點(diǎn)的彈性作用,一個(gè)按鍵開關(guān)在閉合時(shí)不會(huì)馬上穩(wěn)定地接通,在斷開時(shí)也不會(huì)一下子斷開。因而在閉合及斷開的瞬間均伴隨有一連串的抖動(dòng),為了不產(chǎn)生這種現(xiàn)象而作的措施就是按鍵消抖。

抖動(dòng)時(shí)間的長(zhǎng)短由按鍵的機(jī)械特性決定,一般為5ms~10ms。這是一個(gè)很重要的時(shí)間參數(shù),在很多場(chǎng)合都要用到。按鍵穩(wěn)定閉合時(shí)間的長(zhǎng)短則是由操作人員的按鍵動(dòng)作決定的,一般為零點(diǎn)幾秒至數(shù)秒。為確保CPU對(duì)鍵的一次閉合僅作一次處理,必須去除鍵抖動(dòng)。在鍵閉合穩(wěn)定時(shí)讀取鍵的狀態(tài),并且必須判別到鍵釋放穩(wěn)定后再作處理。

94867df2-9fe4-11ee-8b88-92fbcf53809c.png

二、按鍵消抖方法

1.硬件消抖:適用于按鍵較少時(shí)

(1)RS觸發(fā)器

圖中兩個(gè)“與非”門構(gòu)成一個(gè)RS觸發(fā)器。當(dāng)按鍵未按下時(shí),輸出為0;當(dāng)鍵按下時(shí),輸出為1。此時(shí)即使用按鍵的機(jī)械性能,使按鍵因彈性抖動(dòng)而產(chǎn)生瞬時(shí)斷開(抖動(dòng)跳開B),只要按鍵不返回原始狀態(tài)A,雙穩(wěn)態(tài)電路的狀態(tài)不改變,輸出保持為0,不會(huì)產(chǎn)生抖動(dòng)的波形。也就是說(shuō),即使B點(diǎn)的電壓波形是抖動(dòng)的,但經(jīng)雙穩(wěn)態(tài)電路之后,其輸出為正規(guī)的矩形波。這一點(diǎn)通過(guò)分析RS觸發(fā)器的工作過(guò)程很容易得到驗(yàn)證。

94a05f7e-9fe4-11ee-8b88-92fbcf53809c.png

(2)電容器

利用電容的放電延時(shí),采用并聯(lián)電容法,也可以實(shí)現(xiàn)硬件消抖。如圖所示,由于電容兩端電壓不能突變,使得按鍵兩端的電壓平緩變化,直至電容充放電到達(dá)一定電壓閾值時(shí),單片機(jī)才讀取到電平變化。

94b1377c-9fe4-11ee-8b88-92fbcf53809c.png

2.軟件消抖

如果按鍵較多,常用軟件方法消抖

(1)延時(shí)函數(shù)按鍵消抖

檢測(cè)出鍵閉合后執(zhí)行一個(gè)延時(shí)程序,5ms~10ms(取決于機(jī)械特性)的延時(shí),讓前沿抖動(dòng)消失后再一次檢測(cè)鍵的狀態(tài),如果仍保持閉合狀態(tài)電平,則確認(rèn)為真正有鍵按下。當(dāng)檢測(cè)到按鍵釋放后,也要給5ms~10ms的延時(shí),待后沿抖動(dòng)消失后才能轉(zhuǎn)入該鍵的處理程序。

優(yōu)點(diǎn):簡(jiǎn)單方便

缺點(diǎn):程序在空跑浪費(fèi)CPU資源、不夠精準(zhǔn)

注:如果按鍵是用中斷方式實(shí)現(xiàn)的,那就更不能在中斷服務(wù)函數(shù)里面使用延時(shí)函數(shù),因?yàn)橹袛喾?wù)函數(shù)最基本的要求就是快進(jìn)快出!

(2)定時(shí)器按鍵消抖

原理:按鍵采用中斷驅(qū)動(dòng)方式,當(dāng)按鍵按下以后觸發(fā)按鍵中斷,在按鍵中斷中開啟一個(gè)定時(shí)器,定時(shí)周期為 10ms,當(dāng)定時(shí)時(shí)間到了以后就會(huì)觸發(fā)定時(shí)器中斷,最后在定時(shí)器中斷處理函數(shù)中讀取按鍵的值,如果按鍵值還是按下?tīng)顟B(tài)那就表示這是一次有效的按鍵。

如圖所示:

94c69e82-9fe4-11ee-8b88-92fbcf53809c.png

圖中 t1 ~ t3 這一段時(shí)間就是按鍵抖動(dòng),是需要消除的。設(shè)置按鍵為下降沿觸發(fā)(由按鍵的電路決定),因此會(huì)在 t1、t2 和 t3 這三個(gè)時(shí)刻會(huì)觸發(fā)按鍵中斷,每次進(jìn)入中斷處理函數(shù)都會(huì)重新開器定時(shí)器中斷,所以會(huì)在 t1、t2 和 t3 這三個(gè)時(shí)刻開器定時(shí)器中斷。但是 t1 ~ t2 和 t2 ~ t3 這兩個(gè)時(shí)間段是小于我們?cè)O(shè)置的定時(shí)器中斷周期(也就是消抖時(shí)間,比如 10ms),所以雖然 t1 開啟了定時(shí)器,但是定時(shí)器定時(shí)時(shí)間還沒(méi)到 t2 時(shí)刻就重置了定時(shí)器,最終只有 t3 時(shí)刻開啟的定時(shí)器能完整的完成整個(gè)定時(shí)周期并觸發(fā)中斷,我們就可以在定時(shí)器中斷處理函數(shù)里面做按鍵處理了。

優(yōu)點(diǎn):節(jié)約CPU資源

缺點(diǎn):消耗一個(gè)定時(shí)器

注:

1.消抖的定時(shí)時(shí)間由按鍵的機(jī)械特性決定,多調(diào)試。

2.中斷處理函數(shù)處理完要清除相應(yīng)中斷標(biāo)志。

3.進(jìn)行按鍵處理后要清零和失能定時(shí)器,否則無(wú)按鍵按下時(shí)也在定時(shí)。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 電容器
    +關(guān)注

    關(guān)注

    64

    文章

    6222

    瀏覽量

    99633
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6037

    文章

    44558

    瀏覽量

    635298
  • 軟件
    +關(guān)注

    關(guān)注

    69

    文章

    4944

    瀏覽量

    87491
  • RS觸發(fā)器
    +關(guān)注

    關(guān)注

    3

    文章

    101

    瀏覽量

    17941
  • 按鍵消抖
    +關(guān)注

    關(guān)注

    2

    文章

    27

    瀏覽量

    10452

原文標(biāo)題:【單片機(jī)】按鍵消抖及原理(硬件和軟件方法詳解)

文章出處:【微信號(hào):被硬件攻城的獅子,微信公眾號(hào):被硬件攻城的獅子】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    單片機(jī)按鍵與幾種按鍵電路

    按鍵電路 一、 硬件按鍵電路控制電路 所示利用RC 積分電路來(lái)達(dá)成雜波的濾除與波形修整的
    的頭像 發(fā)表于 12-17 07:45 ?10.6w次閱讀
    <b class='flag-5'>單片機(jī)</b>的<b class='flag-5'>按鍵</b><b class='flag-5'>消</b><b class='flag-5'>抖</b>與幾種<b class='flag-5'>按鍵</b>電路

    按鍵

    請(qǐng)問(wèn)大家的按鍵是用什么方法解決的,如普通的按鍵如何
    發(fā)表于 09-26 22:17

    51單片機(jī)_獨(dú)立按鍵延時(shí)

    51單片機(jī)_獨(dú)立按鍵延時(shí)_獨(dú)立按鍵定時(shí)器_矩
    發(fā)表于 07-16 13:56

    按鍵延時(shí)方法和目的分別是什么

      按鍵的延時(shí)是初學(xué)單片機(jī)的必經(jīng)之路,因?yàn)橹灰菣C(jī)械開關(guān)所傳遞的信號(hào),都會(huì)存在波動(dòng),有時(shí)這些波動(dòng)是"致命"的,所以消除其影響就是一門手藝了。硬件
    發(fā)表于 01-17 06:26

    STM32單片機(jī)按鍵和FPGA按鍵的相關(guān)資料分享

    寫在前面:STM32單片機(jī)按鍵和FPGA按鍵
    發(fā)表于 01-18 06:39

    51單片機(jī)按鍵有沒(méi)有什么簡(jiǎn)潔又完美的方法?

    51單片機(jī)按鍵有沒(méi)有什么簡(jiǎn)潔又完美的方法
    發(fā)表于 11-01 07:21

    51單片機(jī)的獨(dú)立按鍵按鍵及矩陣按鍵的電路與程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是51單片機(jī)的獨(dú)立按鍵按鍵及矩陣按鍵的電路與程序免費(fèi)下載。
    發(fā)表于 07-26 17:36 ?28次下載
    51<b class='flag-5'>單片機(jī)</b>的獨(dú)立<b class='flag-5'>按鍵</b>和<b class='flag-5'>按鍵</b><b class='flag-5'>消</b><b class='flag-5'>抖</b>及矩陣<b class='flag-5'>按鍵</b>的電路與程序免費(fèi)下載

    使用51單片機(jī)實(shí)現(xiàn)按鍵的資料和程序免費(fèi)下載

    抖動(dòng)是機(jī)械按鍵存在的現(xiàn)象,是必須要進(jìn)行處理的。一般處理有兩種方式:一種是硬件,另一種是軟件。硬件
    發(fā)表于 07-05 17:41 ?5次下載
    使用51<b class='flag-5'>單片機(jī)</b>實(shí)現(xiàn)<b class='flag-5'>按鍵</b><b class='flag-5'>消</b><b class='flag-5'>抖</b>的資料和程序免費(fèi)下載

    使用51單片機(jī)實(shí)現(xiàn)矩陣按鍵的掃描和動(dòng)作分離的程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用51單片機(jī)實(shí)現(xiàn)矩陣按鍵的掃描和動(dòng)作分離的程序免費(fèi)下載。
    發(fā)表于 07-04 17:41 ?5次下載
    使用51<b class='flag-5'>單片機(jī)</b>實(shí)現(xiàn)矩陣<b class='flag-5'>按鍵</b>的掃描<b class='flag-5'>消</b><b class='flag-5'>抖</b>和動(dòng)作分離的程序免費(fèi)下載

    單片機(jī)按鍵電路圖免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是單片機(jī)按鍵電路圖免費(fèi)下載。
    發(fā)表于 07-01 08:00 ?10次下載
    <b class='flag-5'>單片機(jī)</b><b class='flag-5'>按鍵</b><b class='flag-5'>消</b><b class='flag-5'>抖</b>電路圖免費(fèi)下載

    STM單片機(jī)中的按鍵和FPGA

    閉合的時(shí)間超過(guò)了 20ms。因此單片機(jī)在檢測(cè)鍵盤是否按下時(shí)都要加上去抖動(dòng)操作,有專用的去抖動(dòng)電路,也有專門的去抖動(dòng)芯片,但通常我們采用軟件延時(shí)的方法就可以解決抖動(dòng)問(wèn)題。 1、單片機(jī)按鍵
    的頭像 發(fā)表于 11-30 17:39 ?2730次閱讀

    單片機(jī)按鍵及原理(硬件和軟件方法詳解

    淺談:在設(shè)計(jì)單片機(jī)按鍵輸入的時(shí)候,進(jìn)行按鍵是防止按鍵輸入被CPU誤讀多次的必要手段。一、
    發(fā)表于 11-11 12:06 ?15次下載
    【<b class='flag-5'>單片機(jī)</b>】<b class='flag-5'>按鍵</b><b class='flag-5'>消</b><b class='flag-5'>抖</b>及原理(硬件和軟件<b class='flag-5'>方法</b><b class='flag-5'>詳解</b>)

    單片機(jī)按鍵檢測(cè)程序(定時(shí)器法

    單片機(jī)按鍵檢測(cè)程序(定時(shí)器法)相信大家在初學(xué)51單片機(jī)的時(shí)候按鍵檢測(cè)為了
    發(fā)表于 11-23 17:51 ?5次下載
    <b class='flag-5'>單片機(jī)</b><b class='flag-5'>按鍵</b>檢測(cè)程序(定時(shí)器法<b class='flag-5'>消</b><b class='flag-5'>抖</b>)

    單片機(jī)復(fù)位后為什么要對(duì)sp重新賦值_自學(xué)單片機(jī)第二十二篇:延時(shí)|延時(shí)|key|單片機(jī)|...

      按鍵的延時(shí)是初學(xué)單片機(jī)的必經(jīng)之路,因?yàn)橹灰菣C(jī)械開關(guān)所傳遞的信號(hào),都會(huì)存在波動(dòng),有時(shí)這些波動(dòng)是"致命"的,所以消除其影響就是一門手藝了。硬件
    發(fā)表于 01-17 12:52 ?2次下載
    <b class='flag-5'>單片機(jī)</b>復(fù)位后為什么要對(duì)sp重新賦值_自學(xué)<b class='flag-5'>單片機(jī)</b>第二十二篇:延時(shí)<b class='flag-5'>消</b><b class='flag-5'>抖</b>|延時(shí)|key|<b class='flag-5'>單片機(jī)</b>|<b class='flag-5'>消</b><b class='flag-5'>抖</b>...

    按鍵的軟件和硬件方法

    采用鍋?zhàn)衅?b class='flag-5'>按鍵測(cè)量波形。按鍵按下與抬起的部分都出現(xiàn)抖動(dòng),大致時(shí)間10ms左右。為了防止按鍵誤按或者重復(fù)識(shí)別,必須要按鍵
    的頭像 發(fā)表于 03-01 10:53 ?1.4w次閱讀
    <b class='flag-5'>按鍵</b><b class='flag-5'>消</b><b class='flag-5'>抖</b>的軟件和硬件<b class='flag-5'>方法</b>