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

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

3天內不再提示

如何消除按鍵的抖動現象

CHANBAEK ? 來源:工控小新 ? 作者:工控小新 ? 2023-11-10 11:44 ? 次閱讀

按鍵的介紹:

輕觸開關是一種電子開關,使用時.輕輕按開關按鈕就可使開關接通,當松開手時.開關斷開。我們使用的開關如下圖:

在一個理想的狀態下,我們按下按鍵就會使得電位狀態從低電平編程高電平,高電平編程低電平。

事實上,按鍵在按下和松開的過程中,會存在一個處于中間值的過程,這個時候會存在一個抖動現象。

為了消除按鍵的抖動現象,我們需要對這一電路進行一個修改。

對于消抖,我們可以通過兩個途徑進行消抖

1、硬件消抖:

采用一個RC延時充放電的電路進行消抖。

工作原理:在RC消抖電路中,電阻起到限制電流流動的作用,電容則用來儲存電荷。當輸入信號發生變化時,電容會通過電阻進行充放電,從而實現對信號的平滑處理。通過合理選擇電阻和電容的數值,可以達到最佳的消抖效果。

RC消抖電路的工作方式可以分為兩個階段:充電階段和放電階段。

1,充電階段:當輸入信號由低電平變為高電平時,電容開始充電。由于電容的充電時間常數( t=RC),充電過程并不是瞬間完成的,而是需要一定的時間。在這個過程中,電容會逐漸儲存電荷,輸出信號也會逐漸穩定。當電容充滿電荷后,輸出信號達到穩定狀態。

2.放電階段:當輸入信號由高電平變為低電平時,電容開始放電。放電過程同樣需要一定的時間,電容會逐漸釋放電荷。在這個過程中,輸出信號會逐漸下降,直到達到低電平。放電過程的時間也由RC電路的時間常數決定。

圖片

2、軟件消抖:

當按鍵被按下時,通過延時時間來判斷按鍵是否按下(即二次確認按鍵的狀態)來進行消抖

圖片

程序編寫:

通過一個按鍵來控制一個燈的啟停狀態

#include

typedef unsigned char u8;

typedef unsigned int u16;

sbit led=P2^0;

sbit K1=P3^1;

void delay(u16 i) //延時函數

{

while(i--);

}

void key()

{

if(K1==0)

{

delay(1000); //消抖

if(K1==0)

{

led=~led;

}

while(!K1); //判斷按鍵是否松開

}

}

void main()

{

while(1)

{

key();

}

}

現象展示:

1、當我們按下按鍵時,那么LED燈亮

圖片

2、當我們再次按下按鍵時,LED燈熄滅

圖片

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

    關注

    0

    文章

    215

    瀏覽量

    48356
  • 電子開關
    +關注

    關注

    5

    文章

    95

    瀏覽量

    32682
  • 按鍵
    +關注

    關注

    4

    文章

    221

    瀏覽量

    57394
  • 消抖電路
    +關注

    關注

    0

    文章

    5

    瀏覽量

    8545
  • 輕觸開關
    +關注

    關注

    0

    文章

    61

    瀏覽量

    1218
收藏 人收藏

    評論

    相關推薦

    verilog寫cpld的程序如何消除按鍵抖動?

    verilog寫cpld的程序如何消除按鍵抖動?
    發表于 04-02 09:22

    關于按鍵抖動問題的解決

    電路圖如下,,左側按鈕按下后給74LS192提供脈沖信號,但實物焊接時卻存在按下一次按鈕,192多次計數。是因為選用的按鈕存在按鍵抖動,按下一次按鈕會提供多個脈沖信號,讓192多次計數嗎?如果是,有什么辦法能消除這種
    發表于 06-25 02:31

    消除按鍵抖動的兩種方法分享

      按鍵也是機械裝置,在按下或放開的一瞬間會產生抖動,如下圖:    消除方法有兩種:  軟件除抖和硬件除抖,其中硬件除抖是應用了電容對高頻信號短路的原理?! ≤浖妒菣z測出鍵閉合后執行一個延時
    發表于 09-02 17:52

    如何通過軟件編程實現消除鍵盤的抖動

    如何通過軟件編程實現消除鍵盤的抖動?記文本答:由于按鍵是機械開關結構,所以當用手按下其中-一個鍵時,往往會出現所按鍵在閉合位置和斷開位置之間發生跳幾下后才會穩定到閉合狀態的情況。在釋放
    發表于 07-22 08:24

    單片機如何消除按鍵抖動?

    單片機如何消除按鍵抖動?
    發表于 10-21 09:29

    按鍵抖動現象

    C51單片機入門——按鍵按鍵抖動現象按鍵按下后抬起有效按鍵
    發表于 11-18 09:05

    如何消除按鍵抖動的影響

    ,從而引起誤處理。因此,為了確保單片機對一次按鍵動作只作—次響應,就必須考慮如何消除按鍵抖動的影響。按鍵讀取識
    發表于 01-17 07:46

    運用外部中斷函數消除按鍵抖動

    目的實現:按鍵數碼管數字加減,運用外部中斷函數,消除按鍵抖動***仿真c代碼#includecode unsigned char SEG[]={0XC0
    發表于 03-02 06:31

    按鍵彈跳消除模塊的原理及應用

    按鍵在數字電路設計中經常用到。按鍵的彈跳現象是數字系統設計中存在的客觀問題。按鍵是機械觸點,當接觸點斷開或閉合時會產生抖動。為使每一次
    發表于 07-31 09:18 ?2951次閱讀
    <b class='flag-5'>按鍵</b>彈跳<b class='flag-5'>消除</b>模塊的原理及應用

    按鍵彈跳消除模塊的程序設計與應用

    按鍵開關是電子設備人機交互的主要器件之一。按鍵大多是機械式開關結構,由于機械式開關的核心部件為彈性金屬簧片,因而在開關切換的瞬間會在接觸點出現來回彈跳的現象。對于靈敏度比較高的電路,這種彈跳
    的頭像 發表于 01-07 08:45 ?2485次閱讀
    <b class='flag-5'>按鍵</b>彈跳<b class='flag-5'>消除</b>模塊的程序設計與應用

    外部中斷的按鍵抖動按鍵消抖)

    當我們寫完一個外部中斷程序測試時,例如按鍵計數和按鍵點亮led燈,我們可能會遇到一次按鍵按下松開卻觸發了多次外部中斷,這是因為按鍵抖動的存在
    發表于 11-22 15:36 ?26次下載
    外部中斷的<b class='flag-5'>按鍵</b><b class='flag-5'>抖動</b>(<b class='flag-5'>按鍵</b>消抖)

    STM32F407 按鍵抖動 延時消抖

    ,從而引起誤處理。因此,為了確保單片機對一次按鍵動作只作—次響應,就必須考慮如何消除按鍵抖動的影響。按鍵讀取識
    發表于 01-18 10:30 ?4次下載
    STM32F407 <b class='flag-5'>按鍵</b><b class='flag-5'>抖動</b> 延時消抖

    開關抖動消除設計

    當按下和釋放微動按鍵時,會由短時間的抖動現象才會到達想要的狀態。
    的頭像 發表于 12-26 16:25 ?1591次閱讀

    按鍵抖動消除verilog設計

    按鍵作為一種機械開關,在進行按鍵操作時,機械接觸點的彈性及電壓突變等原因,在機械開關合閉的時候會出現電壓抖動,因此在實際的應用當中需要做一定的處理。
    的頭像 發表于 04-27 09:55 ?1409次閱讀
    <b class='flag-5'>按鍵</b><b class='flag-5'>抖動</b><b class='flag-5'>消除</b>verilog設計

    rs觸發器消除按鍵抖動的原因

    按鍵抖動是指由于按鍵接點的不完美接觸而導致的按鍵信號在短時間內多次跳變的現象。在電子設備的設計與制造中,
    的頭像 發表于 11-17 15:53 ?1169次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>