1. 單片機的按鍵開關抖動的產生原因,抖動的特點和如何消除抖動
開關按鈕在按下時,表面上只按了一下,但信號的傳導並不是單純的由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當然去處理別的事務)
至於按鈕的連按和單按、雙按,多按鈕同時生效等更復雜的功能,可藉助其它的標志位實現。
2. 什麼是按鍵消抖為什麼要消抖
通常的按鍵所用開關為機械彈性開關,當機械觸點斷開、閉合時,由於機械觸點的彈性作用,一個按鍵開關在閉合時不會馬上穩定地接通,在斷開時也不會一下子斷開。因而在閉合及斷開的瞬間均伴隨有一連串的抖動,為了不產生這種現象而作的措施就是按鍵消抖。消抖是為了避免在按鍵按下或是抬起時電平劇烈抖動帶來的影響。按鍵的消抖,可用硬體或軟體兩種方法。
3. 常用的按鍵消抖方法有哪些分別用什麼方法來實現
按鍵的消抖,可用硬體或軟體兩種方法。
1、硬體消抖
在鍵數較少時可用硬體方法消除鍵抖動。硬體消抖的典型做法是:採用R-S觸發器或RC積分電路。
雙穩態消抖
電路的工作過程如下:當按鍵未按下時,a=0,b=1,輸出A=1,B=0。當按鍵按下時,按鍵的機械彈性作用使按鍵產生前沿抖動。當釋放按鍵時,按鍵的機械彈性作用使按鍵產生後沿抖動。
濾波消抖
電路的工作過程如下:當按鍵未按下時,電容C兩端的電壓為V,非門輸出為1。當按鍵按下時,由於電容C兩端的電壓不能突變,因此即使在接觸過程中出現抖動,只要C兩端的充電電壓波動不超過非門的開啟電壓(TTL為0.8V左右),非門的輸出就不會改變(可通過選取合適的R1、R2和C的值來實現)。
當按鍵斷開時,即使出現抖動,由於C兩端的電壓不能突變(它要經過R2放電),因此只要C兩端的放電電壓波動不超過非門的關閉電壓,非門的輸出就不會改變所以,RC電路濾波消抖成敗的關鍵在於R1、R2和C時間常數的選取。
必須保證C由穩態電壓充電到開啟電壓或放電到關閉電壓的延遲時間大於或等於10ms。參數的數值可由計算或實驗確定,圖中的參數僅供參考。若釆用輸入端有施密特觸發特性的門電路,則效果更好。
2、軟體消抖
實現方法:假設未按鍵時輸入1,按鍵後輸入為0,抖動時不定。可以做以下檢測:檢測到按鍵輸入為0之後,延時5ms~10ms,再次檢測,如果按鍵還為0,那麼就認為有按鍵輸入。
延時的5ms~10ms恰好避開了抖動期,從而消除了前沿抖動的影響同理,在檢測到按鍵釋放後,再延時5~10ms,消除後沿抖動,然後再對鍵值進行處理。不過一般情況下,我們通常不對按鍵釋放的後沿進行處理,實踐證明,這樣也能滿足一定的要求。
(3)開關的消抖方法有哪些擴展閱讀
在機械按鍵的觸點閉合和斷開時,都會產生抖動,為了保證系統能正確識別按鍵的開關,就必須對按鍵的抖動進行處理。
按鍵的抖動對於人類來說是感覺不到的,但對單片機來說,則是完全可以感應到的,而且還是一個很「漫長」的過程,因為單片機處理的速度在「微秒」級,而按鍵抖動的時間至少在「毫秒」級。
單片機如果在觸點抖動期間檢測按鍵的通斷狀態,則可能導致判斷出錯,即按鍵一次按下或釋放被錯誤地認為是多次操作,從而引起誤處理。因此,為了確保單片機對一次按鍵動作只作—次響應,就必須考慮如何消除按鍵抖動的影響。
4. 以繼電器代替按鍵,如何消抖
繼電器代替按鍵,消抖方法:
反接一個耐壓值高的電容。如50V, 1.5uF。
因為繼電器在斷電時,會產生一個很大的擾動脈沖電流,還會有瞬時高壓。
所以反接耐高壓電容後,會把這個脈沖電流震盪消解掉。
5. 點動開關的消抖是怎樣的電路,求教。。
要用RC電路延時,關鍵在選擇適當的時間常數。一般按10—15毫秒設計,使用時感覺不到延時。具體電路是反相器輸入端到地並聯電阻電容(可選5K2μ),輸入端再接按鍵串聯電阻(5K)到5v。
鍵盤消抖軟體也是按延時12 毫秒編程的。
6. 幾種常用開關防抖電路簡介
工作於電子電路中的機械開關由於觸點的抖動,輸出的脈沖不是純凈的,常會引起電路的非正常工作。這就需要將按鍵輸出的抖動信號加以處理。本文介紹的8個常用開關防抖電路均由集成電路構成,工作穩定可靠。 圖1是一個簡單的開關防抖電路。當開關位置在VCC處,電路輸出高電平,當開關剛離開該位置作移動的時候,輸出仍保持高電平,故輸入仍在高電平上。一旦開關移動到接地的瞬間,門的輸出瞬間短路,然而短路僅維持幾十毫微秒,門的輸出從高電平跳到低電平。此後,如開關觸點抖動離開地時,輸出因輸入是低電平而仍保持在原有的低電平上。這種用同相緩沖器構成的防抖動電路比一般的R一S觸發器組成的防抖動電路簡單,而且省掉了麻煩的外接電阻。電路中的集成電路可以選用CD4050,CD4010等,也可以用CO4069,利用兩個反相器串聯代替1個同相緩沖器。 圖2是用反相器CO4O69組成翻轉式防抖動電路。圖中由於反相器a的輸入是引自反相器b的正反饋,開關每閉合一次,電容C上的電壓都會使反相器a改變狀態。電阻R的作用是使電容C上充放電過程放慢,這樣可使電路免受開關觸點抖動的影響。
7. 開關防抖
是為防止後者,當機械開關工作時,其開關觸點的閉合和張開,都會產生隨機性的機械抖動,給電路產生不希望的振盪脈沖和干擾,硬體防抖動電路參考下鏈接:(有些同時採取加入軟體濾除)
http://wenku..com/view/500084afdd3383c4bb4cd261.html
8. 鍵盤或撥碼開關為什麼要防止抖動在微機控制系統中如何實現防抖
主要目的是為了提高按鍵輸入可靠性,由於機械觸點的彈性振動,
按鍵在按下時不會馬上穩定地接通而在彈起時也不能一下子
完全地斷開,
因而在按鍵閉合和斷開的瞬間均會出現一連串的抖動,
這稱為按鍵的抖動干擾。
按鍵的抖動會造成按一次鍵產生的開關狀態被
CPU
誤讀幾次。
為了使
CPU
能正確地讀取按鍵
狀態,必須在按鍵閉合或斷開時,消除產生的前沿或後沿抖動。
去抖動的方法有硬體方法和軟體方法兩種。
硬體方法是設計一個濾波延時電路或單穩態電路
等硬體電路來避開按鍵的抖動時間。
軟體方法是指編制一段時間大於
100ms
的延時程序,
在
第一次檢測到有鍵按下時,
執行這段延時子程序使鍵的前沿抖動消失後再檢測該鍵狀態,
如
果該鍵仍保持閉合狀態電平,則確認為該鍵已穩定按下,否則無鍵按下,從而消除了抖動的
影響。
9. 單片機中什麼是抖動如何消除抖動
單片機中抖動是按鍵所用的開關都是機械彈性開關,當機械觸點斷開、閉合時,由於機械觸點的彈性作用,一個按鍵開關在閉合時不會馬上就穩定的接通,在斷開時也不會一下子徹底斷開,而是在閉合和斷開的瞬間伴隨了一連串的抖動。利用電容的充放電特性來對抖動過程中產生的電壓毛刺進行平滑處理,從而實現消抖。
按鍵穩定閉合時間長短是由操作人員決定的,通常都會在100ms以上,刻意快速按的話能達到40-50ms左右,很難再低了。
抖動時間是由按鍵的機械特性決定的,一般都會在10ms以內,為了確保程序對按鍵的一次閉合或者一次斷開只響應一次,必須進行按鍵的消抖處理。
當檢測到按鍵狀態變化時,不是立即去響應動作,而是先等待閉合或斷開穩定後再進行處理。按鍵消抖可分為硬體消抖和軟體消抖。
(9)開關的消抖方法有哪些擴展閱讀
單片機在電子技術中的開發,主要包括CPU開發、程序開發、 存儲器開發、計算機開發及C語言程序開發,同時得到開發能夠保證單片機在十分復雜的計算機與控制環境中可以正常有序的進行,這就需要相關人員採取一定的措施:
(1)CPU開發。開發單片機中的CPU匯流排寬度,能夠有效完善單片機信息處理功能緩慢的問題,提高信息處理效率與速度,開發改進中央處理器的實際結構,能夠做到同時運行2-3個CPU,從而大大提高單片機的整體性能。
(2)程序開發。嵌入式系統的合理應用得到了大力推廣,對程序進行開發時要求能夠自動執行各種指令,這樣可以快速准確地採集外部數據,提高單片機的應用效率。
(3)存儲器開發。單片機的發展應著眼於內存,加強對基於傳統內存讀寫功能的新內存的探索,使其既能實現靜態讀寫又能實現動態讀寫,從而顯著提高存儲性能。
(4)計算機開發。進一步優化和開發單機片應激即分析,並應用計算機系統,通過連接通信數據,實現數據傳遞。
10. 有什麼方法可以消除觸點開關的抖動
從兩個方面可以解決這個問題:
1、在軟體程序中對此觸點的接通進行延時一段時間,例如20ms
2、硬體上可以在觸點兩端並接阻容吸收裝置。