❶ 基於VHDL語言的幾種消抖電路的設計
基於此介紹了基於VHDL語言的計數器型消抖電路、D觸發器型消抖電路、狀態機型消抖電路的工作原理、相關程序、波形模擬及結果分析,並下栽到EP2C35F672C8晶元上進行驗證,消抖效果良好,性能穩定,可廣泛用於FPGA的按鍵電路中。
關鍵詞:VHDL;消抖;FPGA0 引言按鍵開關是許多電子產品不可缺少的輸入設備,在智能化電子產品中,按鍵開關作為人機交互的主要器件之一,可以實現人機對話,完成各種功能操作,而機械式按鍵開關由於其低成本、高可靠性被廣泛使用。在按鍵操作時,機械觸點的彈性及電壓突跳等原因,在觸點閉合或開啟的瞬間會出現電壓抖動,實際應用中如果不進行處理將會造成誤觸發。常見的硬體消抖方法有:利用電容的充放電原理;利用RS觸發的保持功能;由同相器組成的積分去抖電路;用反相器組成的翻轉式去抖電路;不可重復觸發單穩態等等。本文採用VHDL語言設計了幾種按鍵開關的消抖電路。
1 計數器型消抖電路
1.1 計數器型消抖電路(一)
計數器型消抖電路(一)是設置一個模值為(N+1)的控制計數器,clk在上升沿時,如果按鍵開關key_in='1',計數器加1,key_in='0' 時,計數器清零。當計數器值為2時,key_out輸出才為1,其他值為0時。計數器值為N時處於保持狀態。因此按鍵key_in持續時間大於N個clk時鍾周期時,計數器輸出一個單脈沖,否則沒有脈沖輸出。如果按鍵開關抖動產生的毛刺寬度小於N個時鍾周期,因而毛刺作用不可能使計數器有輸出,防抖動目的得以實現。clk的時鍾周期與N的值可以根據按鍵抖動時間由設計者自行設定。
主要程序結構如下:
圖1是N為3的波形模擬圖,當按鍵持續時間大於3個時鍾周期,計數器輸出一個單脈沖,其寬度為1個時鍾周期,小於3個時鍾周期的窄脈沖用作模擬抖動干擾,從圖1可以看出,抖動不能幹擾正常的單脈沖輸出。 該方案的特點是能很好消除按鍵抖動產生的窄脈沖,還可以濾去干擾、噪音等其他尖峰波,但遇到脈寬大於N個Tclk時鍾周期的干擾、噪音等時會有輸出從而產生誤操作,而對於按鍵操作要求按鍵時間必須大於N個Tclk時鍾周期,否則按鍵操作也沒有輸出。1.2 計數器型消抖電路(二)
計數器型消抖電路(二)是控制計數器工作一個循環周期(N+1個狀態),且僅在計數器為0時輸出為「1」。電路設計了連鎖控制設施。在計數器處於狀態0時,此時若有按鍵操作,則計數器進入狀態1,同時輸出單脈沖(其寬度等於時鍾周期)。計數器處於其他狀態,都沒有單脈沖輸出。計數器處於狀態N時,控制en='0',導致計數器退出狀態N,進入狀態0。計數器能否保持狀態0,取決於人工按鍵操作,若按鍵key_ in='1',控制en='1'(計數器能正常工作),key_in='0',計數器狀態保持。顯見計數器處於狀態0,人工不按鍵,則計數器保持狀態0。
❷ 單片機的按鍵開關抖動的產生原因,抖動的特點和如何消除抖動
開關按鈕在按下時,表面上只按了一下,但信號的傳導並不是單純的由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當然去處理別的事務)
至於按鈕的連按和單按、雙按,多按鈕同時生效等更復雜的功能,可藉助其它的標志位實現。
❸ 關於消抖電路原理
利用RC充電時間來進行消抖的,按下按鍵,電容放電,key應該是上升沿中斷,放電專之後,由於RC的存在,電平會有屬一定的時間才達到高電平。在達到高電平這段時間內,干擾或者誤操作都不響應,所以可以達到消抖的目的
❹ 有誰知道機械開關的消顫電路怎麼做啊,越簡單越好,最好是用電容電阻之類的
--------------------------------------------------------------
在按鍵上並電容是最簡單的方法之一,但不要並太大的電容,否則容易損壞按鍵。並且,最好是在後面接一施密特電路,以改善信號邊沿特性,並增強消抖動效果。。 我的經驗是,一般的金屬接點輕觸按鍵,接10K上拉或下拉電阻時,並104/224(0.1uF/0.22uF)獨石或瓷片電容;導電橡膠接點的按鍵,接20K上拉或下拉電阻時,並104/473(0.1uF/0.047uF)獨石或瓷片電容。。
正規的方法是用 單穩電路,雙穩電路,RC濾波電路(這種方法比較簡單),軟體防抖.上面的方法僅供參考.
RC濾波電路就是在電源端的另一端並一個電容和電阻對地.
打了這么多好累哦,不要吝嗇要是有用可要追加分哦!
--------------------------------------------------------------
❺ 用輕觸開關和觸發器設計一個簡單的開關電路,按下輕觸開關輸出低電平,再按下輸出高電平
輕觸開關產生觸發脈沖,為上升沿有效或下降沿有效;
該觸發脈沖可能會有機專械抖動,所以要採用屬消抖電路進行去抖動處理;
經過消抖處理的觸發脈沖作為2分頻電路的輸入脈沖,即可完成你所要的功能。【如,所用觸發器為D觸發器的話,可以將QN輸出接到D端輸入】
❻ 點動開關的消抖電路是怎樣的一種電路
要用RC電路延時,關鍵在選擇適當的時間常數。一般按10—15毫秒設計,使用時感覺不到延時版。具體電路是權反相器輸入端到地並聯電阻電容(可選5K2μ),輸入端再接按鍵串聯電阻(5K)到5v。
鍵盤消抖軟體也是按延時12 毫秒編程的。