那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

單片機按鍵消抖的原理和方法詳解

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

一、按鍵抖動

通常的按鍵所用開關為機械彈性開關,當機械觸點斷開、閉合時,由于機械觸點的彈性作用,一個按鍵開關在閉合時不會馬上穩定地接通,在斷開時也不會一下子斷開。因而在閉合及斷開的瞬間均伴隨有一連串的抖動,為了不產生這種現象而作的措施就是按鍵消抖。

抖動時間的長短由按鍵的機械特性決定,一般為5ms~10ms。這是一個很重要的時間參數,在很多場合都要用到。按鍵穩定閉合時間的長短則是由操作人員的按鍵動作決定的,一般為零點幾秒至數秒。為確保CPU對鍵的一次閉合僅作一次處理,必須去除鍵抖動。在鍵閉合穩定時讀取鍵的狀態,并且必須判別到鍵釋放穩定后再作處理。

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

二、按鍵消抖方法

1.硬件消抖:適用于按鍵較少時

(1)RS觸發器

圖中兩個“與非”門構成一個RS觸發器。當按鍵未按下時,輸出為0;當鍵按下時,輸出為1。此時即使用按鍵的機械性能,使按鍵因彈性抖動而產生瞬時斷開(抖動跳開B),只要按鍵不返回原始狀態A,雙穩態電路的狀態不改變,輸出保持為0,不會產生抖動的波形。也就是說,即使B點的電壓波形是抖動的,但經雙穩態電路之后,其輸出為正規的矩形波。這一點通過分析RS觸發器的工作過程很容易得到驗證。

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

(2)電容器

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

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

2.軟件消抖

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

(1)延時函數按鍵消抖

檢測出鍵閉合后執行一個延時程序,5ms~10ms(取決于機械特性)的延時,讓前沿抖動消失后再一次檢測鍵的狀態,如果仍保持閉合狀態電平,則確認為真正有鍵按下。當檢測到按鍵釋放后,也要給5ms~10ms的延時,待后沿抖動消失后才能轉入該鍵的處理程序。

優點:簡單方便

缺點:程序在空跑浪費CPU資源、不夠精準

注:如果按鍵是用中斷方式實現的,那就更不能在中斷服務函數里面使用延時函數,因為中斷服務函數最基本的要求就是快進快出!

(2)定時器按鍵消抖

原理:按鍵采用中斷驅動方式,當按鍵按下以后觸發按鍵中斷,在按鍵中斷中開啟一個定時器,定時周期為 10ms,當定時時間到了以后就會觸發定時器中斷,最后在定時器中斷處理函數中讀取按鍵的值,如果按鍵值還是按下狀態那就表示這是一次有效的按鍵。

如圖所示:

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

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

優點:節約CPU資源

缺點:消耗一個定時器

注:

1.消抖的定時時間由按鍵的機械特性決定,多調試。

2.中斷處理函數處理完要清除相應中斷標志。

3.進行按鍵處理后要清零和失能定時器,否則無按鍵按下時也在定時。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 電容器
    +關注

    關注

    64

    文章

    6255

    瀏覽量

    100234
  • 單片機
    +關注

    關注

    6043

    文章

    44621

    瀏覽量

    638566
  • 軟件
    +關注

    關注

    69

    文章

    5013

    瀏覽量

    88075
  • RS觸發器
    +關注

    關注

    3

    文章

    101

    瀏覽量

    18045
  • 按鍵消抖
    +關注

    關注

    2

    文章

    27

    瀏覽量

    10486

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

文章出處:【微信號:被硬件攻城的獅子,微信公眾號:被硬件攻城的獅子】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    單片機按鍵與幾種按鍵電路

    按鍵電路 一、 硬件按鍵電路控制電路 所示利用RC 積分電路來達成雜波的濾除與波形修整的
    的頭像 發表于 12-17 07:45 ?10.6w次閱讀
    <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>電路

    按鍵

    請問大家的按鍵是用什么方法解決的,如普通的按鍵如何
    發表于 09-26 22:17

    51單片機_獨立按鍵延時

    51單片機_獨立按鍵延時_獨立按鍵定時器_矩
    發表于 07-16 13:56

    按鍵延時方法和目的分別是什么

      按鍵的延時是初學單片機的必經之路,因為只要是機械開關所傳遞的信號,都會存在波動,有時這些波動是"致命"的,所以消除其影響就是一門手藝了。硬件
    發表于 01-17 06:26

    STM32單片機按鍵和FPGA按鍵的相關資料分享

    寫在前面:STM32單片機按鍵和FPGA按鍵
    發表于 01-18 06:39

    51單片機按鍵有沒有什么簡潔又完美的方法

    51單片機按鍵有沒有什么簡潔又完美的方法
    發表于 11-01 07:21

    51單片機的獨立按鍵按鍵及矩陣按鍵的電路與程序免費下載

    本文檔的主要內容詳細介紹的是51單片機的獨立按鍵按鍵及矩陣按鍵的電路與程序免費下載。
    發表于 07-26 17:36 ?28次下載
    51<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>及矩陣<b class='flag-5'>按鍵</b>的電路與程序免費下載

    使用51單片機實現按鍵的資料和程序免費下載

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

    使用51單片機實現矩陣按鍵的掃描和動作分離的程序免費下載

    本文檔的主要內容詳細介紹的是使用51單片機實現矩陣按鍵的掃描和動作分離的程序免費下載。
    發表于 07-04 17:41 ?5次下載
    使用51<b class='flag-5'>單片機</b>實現矩陣<b class='flag-5'>按鍵</b>的掃描<b class='flag-5'>消</b><b class='flag-5'>抖</b>和動作分離的程序免費下載

    單片機按鍵電路圖免費下載

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

    STM單片機中的按鍵和FPGA

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

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

    淺談:在設計單片機按鍵輸入的時候,進行按鍵是防止按鍵輸入被CPU誤讀多次的必要手段。一、
    發表于 11-11 12:06 ?15次下載
    【<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><b class='flag-5'>詳解</b>)

    單片機按鍵檢測程序(定時器法

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

    單片機復位后為什么要對sp重新賦值_自學單片機第二十二篇:延時|延時|key|單片機|...

      按鍵的延時是初學單片機的必經之路,因為只要是機械開關所傳遞的信號,都會存在波動,有時這些波動是"致命"的,所以消除其影響就是一門手藝了。硬件
    發表于 01-17 12:52 ?2次下載
    <b class='flag-5'>單片機</b>復位后為什么要對sp重新賦值_自學<b class='flag-5'>單片機</b>第二十二篇:延時<b class='flag-5'>消</b><b class='flag-5'>抖</b>|延時|key|<b class='flag-5'>單片機</b>|<b class='flag-5'>消</b><b class='flag-5'>抖</b>...

    按鍵的軟件和硬件方法

    采用鍋仔片式按鍵測量波形。按鍵按下與抬起的部分都出現抖動,大致時間10ms左右。為了防止按鍵誤按或者重復識別,必須要按鍵
    的頭像 發表于 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>
    百家乐官网庄河闲的赌法| 澳门百家乐哪家信誉最好| 贝博百家乐官网的玩法技巧和规则| 澳门百家乐官网娱乐平台| 超级百家乐官网2龙虎斗| 百家乐官网策略与心得| 威尼斯人娱乐城会员| 真钱百家乐官网公司哪个好| 百家乐筹码套装100片| 百家乐官网第三张规则| 狮威国际娱乐| 真人百家乐最高赌注| 澳门百家乐官网官网网站| 娱乐城官方网| 百家乐客户端皇冠| 百家乐官网投注网站| 南京百家乐赌博现场被| 百家乐官网最新破| 绥阳县| 金域百家乐娱乐城| 金字塔百家乐官网的玩法技巧和规则 | 尊龙备用网址| 新彩百家乐的玩法技巧和规则 | 大发888在线娱乐下载| 宝马会百家乐官网娱乐城| 百家乐论坛香港马会| 玩百家乐官网是否有技巧| 大发888下载官网| 百家乐投注办法| 大发888网站打不开| 高青县| 聚龍社百家乐官网的玩法技巧和规则| 新加坡百家乐的玩法技巧和规则 | 菲律宾太子娱乐城| 香港百家乐官网六合彩| 百家乐注册开户送彩金| 连环百家乐的玩法技巧和规则| 大发888为什么这么卡| 折式百家乐官网赌台| 真人百家乐官网赌注| 如何看百家乐路|