微控制器按鍵如何消抖,微控制器按鍵去抖動有哪些方法

2022-04-05 04:56:43 字數 3627 閱讀 4141

1樓:休閒居大偉

if (key==0)            如果按鍵按下for(i=0;i<100;i++):利用延時消除抖動if (key==0)            再次判斷按鍵,如果還是按下狀態

( 要執行的語句)則執行相關語句

這是常用的軟體消抖方法

2樓:電子劍客

先判斷按鍵所在的埠是否為低,不為低直接返回,否則延時20ms,再判斷,如果為低,證明鍵已按下,此時去執行按鍵的功能程式,最後加上while(key==0);不等到按鍵送來,可以提高反應速度。

3樓:匿名使用者

一般按鍵按下時,往往會出現所按的按鍵在閉合和斷開位置之間跳幾下才穩定在閉合狀態這就是按鍵抖動。抖動持續時間不一,一般不會大於10ms。

據此,在按下按鍵時,延時10ms,就可消除抖動。

程式可以這樣:

jb key1,$ ;等待按鍵按下,這只是個例子,用了$。如果幾個按鍵,key1沒按下,可以轉到判斷第2 個鍵

acall dl10ms

jnb key1,$-2 ;等待釋放,未釋放跳到上一條繼續延時.... ;鍵 按下,執行按鍵處理程式

4樓:黑豹

按鍵消除抖動用硬體的方法是單穩態電路,或者採用專用晶片,而微控制器本身是智慧晶片,用軟體消除抖動是最佳選擇,這樣價效比高,可靠性也高,多用一個器件就多一份成本,多一個故障點,設計智慧化產品的原則是優先考慮採用軟體解決問題。

一般是結合動態掃描顯示功能,編一個子程式來處理,因為動態顯示與消除抖動都是幾十毫秒的時間間隔,可以很好地融合在一起處理,提高微控制器的效率。

掃描到有鍵按下,先去執行顯示部分的程式,回頭再次讀入按鍵,確認後轉入鍵譯碼程式。

單純利用延時子程式等待抖動消失,微控制器豈不是有點傻呼呼的?

微控制器按鍵去抖動有哪些方法

5樓:陌路情感諮詢

在按鍵上增加電容去除干擾,在按鍵上串一個電阻也可以解決靜電或者是其他干擾對按鍵造成的干擾。

軟體去抖動也是一種非常常見的去抖動的方法,就是對按鍵進行多次的檢測,每次檢測都被按下,才認為按鍵被按下。軟體去抖動要採用多次採集的方法,中間的間隔可以使用延時或者使用分時的思想來進行去抖動,一般的軟體去抖中都是用分時思想去抖動。

6樓:匿名使用者

我知道的有軟體延時

觸發反相器

還有用電容組成的小電路 自己查查啊

7樓:匿名使用者

軟體延時

硬體加個稍大的電容。

8樓:匿名使用者

延時後再確認不一定是最好的方法,但肯定是最常用的方法。

9樓:我的夢終究是夢

在硬體上可採用在鍵輸出端加rs觸發器(雙穩態觸發器)或單穩態觸發器構成去抖動電路,將去抖電路加在按鍵輸出端。

在軟體上採取的措施是:在檢測到有按鍵按下時,執行一個10ms左右(具體時間應視所使用的按鍵進行調整)的延時程式後,再確認該鍵是否仍保持閉合狀態電平,若仍保持閉合狀態電平,則確認該鍵處於閉合狀態,同理,在檢測到該鍵釋放後,也應該採用相同的步驟進行確認,從而可以消除抖動的影響。

10樓:匿名使用者

就是兩種方法,一種是硬體消抖動,加阻容電阻,濾除干擾波。

二就是軟體方法,加延時來消除抖動。

微控制器鍵盤如何消抖?

11樓:匿名使用者

一般按鍵按下時,往往會出現所按的按鍵在閉合和斷開位置之間跳幾下才穩定在閉合狀態這就是按鍵抖動。抖動持續時間不一,一般不會大於10ms。

據此,在按下按鍵時,延時10ms,就可消除抖動。

程式可以這樣:

jb key1,$ ;等待按鍵按下,這只是個例子,用了$。如果幾個按鍵,key1沒按下,可以轉到判斷第2 個鍵

acall dl10ms

jnb key1,$-2 ;等待釋放,未釋放跳到上一條繼續延時.... ;鍵 按下,執行按鍵處理程式

微控制器程式設計怎麼消除按鍵抖動

12樓:越晗蕾溥陽

按鍵消除抖動用硬體的方法是單穩態電路,或者採用專用晶片,而微控制器本身是智慧晶片,用軟體消除抖動是最佳選擇,這樣價效比高,可靠性也高,多用一個器件就多一份成本,多一個故障點,設計智慧化產品的原則是優先考慮採用軟體解決問題。

一般是結合動態掃描顯示功能,編一個子程式來處理,因為動態顯示與消除抖動都是幾十毫秒的時間間隔,可以很好地融合在一起處理,提高微控制器的效率。

掃描到有鍵按下,先去執行顯示部分的程式,回頭再次讀入按鍵,確認後轉入鍵譯碼程式。

單純利用延時子程式等待抖動消失,微控制器豈不是有點傻呼呼的?

13樓:陽光部落阿強

判斷按鍵是否按下,如果按下呼叫10毫秒延時,再判斷按鍵是否按下,如果按下就呼叫相關子程式。

微控制器的按鍵開關抖動的產生原因,抖動的特點和如何消除抖動 25

14樓:匿名使用者

開關按鈕在按下時,表面上只按了一下,但訊號的傳導並不是單純的由1直接跳到0。這是由於機械觸點斷開/閉合時會有抖動,訊號如圖示會在high和low之間抖動。這種抖動對人來說是感覺不到的,但對微控制器來說,則是完全可以感應到的。

當按鈕被按下時,你所期待的效果應該是:111111111000000000…,

而事與願違,微控制器讀到的訊號可能會是:111110110110000000…,

這中間連續的1和0過渡處,短暫的幾個隨機交錯出現的01就是我們不期望產生的抖動,雖然我們只按了一下按鈕,可能會被電路誤讀成按了好幾下按鈕,而給人的感覺就是有時候按鈕會不靈。消抖的目的就是為了要除去訊號在高低電位之間彈跳所造成的不正確輸入,就是交錯出現的01那段,一般抖動持續的時間是3-10毫秒。所以簡單的去抖動操作,只要在這段抖動出現的時間跨度兩端進行兩次按鈕狀態檢測即可:

假設放開按鈕訊號為1,按下為0,

那麼當首次檢測到按鈕為0,過10ms再次檢測,若依然為0,按鈕按下有效;若為1,說明為抖動,去除。

更可靠,更靈敏的消抖做法為:

首次檢測到按鈕為0後,以後的3-5ms持續檢測,若檢測到訊號一直為0,則按鈕有效,若中間有一次不為0,時間清0,重新計時,直到連續3-5ms按鈕訊號一直為0,方為有效。(補充一下,持續檢測的意思,並不是讓你把全部的cpu時間全部花在這上面,否則這幾ms時間內微控制器相當於宕機了,影響其它程序,而是間隔性地取樣一下,比如5ms之內檢測10次,10次全為0有效,其它時間cpu當然去處理別的事務)

至於按鈕的連按和單按、雙按,多按鈕同時生效等更復雜的功能,可藉助其它的標誌位實現。

15樓:zui依然

用延時函式可以消抖,也有用硬體消抖的。

16樓:匿名使用者

抖動產生因為機械固有的物理特性,在瞬間接觸的時候會有力學的回彈,造成2-8毫秒內訊號不穩定。

解決辦法:軟體延時去抖(其實是一種忽略)和硬體去抖軟體判斷:開關閉合——延時——是否還是閉合?

——如果是就判定開啟,軟體解決可以降低成本,但是有時候硬體劣化超出延時的範圍會造成故障。

硬體解決:專用的去抖晶片或者自己組裝一個雙穩態消抖電路,就是兩個與非門構成的rs觸發器。

微控制器獨立按鍵,微控制器一個獨立按鍵

一邊接io一邊接高,程式判斷io高低就行 微控制器的獨立按鍵 這種方法是可以的。我們檢測io口的時候是判斷它現在是什麼電平。作為輸入io口,它平時都是高阻態,檢測的時候是高電平。所以當按鍵按下的時候,引腳被拉低。檢測的時候就是低電平。靠近io口的一端要接上拉電阻,一般4.7k就可以了。按鍵時io口是...

微控制器的獨立按鍵,微控制器獨立按鍵的電路圖

這種方法是可以的。我們檢測io口的時候是判斷它現在是什麼電平。作為輸入io口,它平時都是高阻態,檢測的時候是高電平。所以當按鍵按下的時候,引腳被拉低。檢測的時候就是低電平。靠近io口的一端要接上拉電阻,一般4.7k就可以了。按鍵時io口是低電平,無按鍵時是高電平。微控制器獨立按鍵的電路圖 可以,原理...

如何學好微控制器,微控制器學習如何入門?

說再多都是空話,就是多練習,程式設計和電路,多去論壇逛。51微控制器從流水燈開始,幾個基本實驗結束後就上綜合專案,做一個萬能時鐘 自己強行加一堆功能進去 然後趕緊轉stm32,過程有點難受,但你很快就能體會到資源多的舒服。反正就一個堅持,我身邊幾百塊錢開發板買回來就落灰的大有人在。微控制器基礎知識其...