單片機開發(fā)
單片機按鍵消抖技術(shù)
單片機按鍵消抖技術(shù)及其擴展應(yīng)用
在使用單片機搭建有人機交互的系統(tǒng)時需要用到鍵盤通常的按鍵所用開關(guān)為機械彈性開關(guān),當(dāng)機械觸點斷開、閉合時,電壓信號切換。系統(tǒng)對鍵盤的輸邏輯0或l行準(zhǔn)確采樣避免錯誤輸入是非常有必要的。理想的鍵盤輸入特性是:按鍵沒有按下時輸入為邏輯l廣旦按下則輸入立刻變?yōu)檫壿婳松開時輸入則立刻變?yōu)檫壿?。
然而實際的鍵盤受制造工藝等影響其輸入特性不可能完美。由于機械觸點的彈性作用,一個按鍵開關(guān)在閉合時不會馬上穩(wěn)定地接通,在斷開時也不會一下子斷開。因而在閉合及斷開的瞬間均伴隨有一連串的抖動抖動時間的長短由按鍵的機械特性決定,—般為5ms—lOms。單片機工作時間都是納秒與毫秒級別當(dāng)按鍵按下時在觸點即將接觸到完全接觸這段時間里,鍵盤的通斷狀態(tài)很可能已經(jīng)改變了多次。即在這段時間里鍵盤輸入了多次邏輯0和1。也就是輸入處于失控狀態(tài)。如果這些輸入被系統(tǒng)響應(yīng),則系統(tǒng)暫時也將處于失控狀態(tài)這是我們要盡量避免的。在觸點即將分離到完全分離這段時間也是一樣的。
鍵盤在輸入邏輯轉(zhuǎn)換時實際上是產(chǎn)生了瞬時的高頻干擾脈沖。為確保CPU對鍵的一次閉合僅作一次處理,必須去除鍵抖動。即在鍵閉合穩(wěn)定時讀取鍵的狀態(tài),并且必須判別到鍵釋放穩(wěn)定后再作處理。目的在于消除干擾以達(dá)到理想輸入特性。
有兩個階段可以設(shè)法消除此干擾:1、在鍵盤信號輸入系統(tǒng)之前(系統(tǒng)外):2、鍵盤信號輸入系統(tǒng)以后(系統(tǒng)內(nèi))。
一、硬件消抖
在信號輸入系統(tǒng)之前將抖動干擾消除,可以節(jié)省系統(tǒng)資源,提高系統(tǒng)對其他信號的響應(yīng)能力這就是硬件消抖。
(1)基本RS硬件消抖:用兩個“與非門”構(gòu)成一個RS觸發(fā)器利用基本RS鎖存器的記憶作用消除開關(guān)觸點振動所產(chǎn)生的影響。開關(guān)S每切換一次輸出端只有一次翻轉(zhuǎn)不存在抖動波形。
(2)電容濾波消抖:使用RS鎖存器消抖只適用于單刀雙擲開關(guān)實際應(yīng)用當(dāng)中常用的鍵盤多是兩個接線端的按鍵。對此類按鍵的常用硬件消抖方法為在按鍵上并聯(lián)電容利用電容放電延時平波,再經(jīng)過施密特反相器調(diào)整就能夠得到?jīng)]有毛刺的脈沖波。
(3)中斷法消抖:每個按鍵都外接到外部中斷口上當(dāng)有按鍵按下時引起單片機的中斷。此種方法的好處在于不用在主程序不斷循環(huán)查詢.只要有中斷再去做相應(yīng)處理不足之處在于—個單片機的中斷源是相當(dāng)寶貴的所以很少有人采用這種方法。
二、軟件延時消抖
如前所述若采用硬件消抖電路那么N個鍵就必須配有N個防抖電路。因此,當(dāng)按鍵的個數(shù)比較多時硬件防抖將無法勝任。在這種情況下I可以采用軟件的方法進(jìn)行防抖。軟件消抖的實質(zhì)在于降低鍵盤輸入端口的采樣頻率將高頻抖動略去即檢測出鍵閉合后執(zhí)行一個延時程序,產(chǎn)生5ms一10ms的延時,讓前沿抖動消失后再一次檢測鍵的狀態(tài),如果仍保持閉合狀態(tài)電平,則確認(rèn)為真正有鍵按下。當(dāng)檢測到按鍵釋放后,也要給5ms一10ms的延時,待后沿抖動消失后才能轉(zhuǎn)入該鍵的處理程序。
三、軟件消抖的擴展應(yīng)用
在實際應(yīng)用中軟件消抖技術(shù)并不單純運用在按鍵上,也可運用于其他地方以使程序運行更加合乎我們的要求,如下面二種情況:
1)在某些情況下例如系統(tǒng)受到外部震動,也會在按鍵電路中出現(xiàn)電平抖動但這種抖動不是控制者所希望的操作如果沒有防抖程序那么系統(tǒng)會因這種不希望出現(xiàn)的干擾而錯誤動作。
2)為了避免系統(tǒng)誤判可以編寫防抖動程序。下面就第一種情況在行程控制系統(tǒng)中)采用這種技術(shù)盾看能否提高系統(tǒng)性能更好的實現(xiàn)功能I彌補常用方法的不足!.以一個簡單的工控項目來舉例說明顧目要求上電后,_-個普通電機控制—個滑塊從左邊往右邊推最右邊有一個行程開關(guān)滑塊碰到行程開關(guān)后息機停止運動結(jié)束。
轉(zhuǎn)化成單片機編程思路用1個IO口輸出扃電平時電機運動,f氐電平時電機停止。另1個IO口作輸入術(shù)全測行程開關(guān)的電平狀態(tài)如果發(fā)現(xiàn)是高電平說明還沒碰上行程開關(guān)感應(yīng)器加果發(fā)現(xiàn)是低電平就說明碰上了感應(yīng)器此時就可以發(fā)出停止電機的命令。
思路一:直接判斷行程感應(yīng)器的電平狀態(tài)廣且發(fā)現(xiàn)低電平,就認(rèn)為電機已經(jīng)碰到了行程開關(guān)馬上停止電機。
這種思路的優(yōu)點是響應(yīng)及時膽缺點是太靈敏抗干擾能力非常差在工控環(huán)境里當(dāng)電機正在行進(jìn)的過程中如果受到電源的波動或者外來的毛刺信號干擾行程開關(guān)的輸入信號可能會讀取到瞬間的低電平局致單片機誤判斷提前把電機停止了息機還沒碰到行程開關(guān)就草率停機。
思路二:在判斷行程感應(yīng)器的電平狀態(tài)時加入了軟件的抗干擾處理(即軟件消抖技術(shù)),一旦發(fā)現(xiàn)低電平,一個計時器開始計時在計時的期間如果發(fā)現(xiàn)出現(xiàn)高電平就馬上把計時器清零,如果一直是低電平,并且期間沒有出現(xiàn)高電平就認(rèn)為是穩(wěn)定的低電平此時判定是碰到了行程開關(guān)。
這種思路的優(yōu)點是增加了抗干擾處理幾乎能百分百保證電機碰到了行程開關(guān)才停機不會有第一種思路的誤判了。缺點是因為在軟件抗干擾環(huán)節(jié)增加了—小段延時而這一小段的延時會導(dǎo)致電機碰到行程開關(guān)后沒有馬上停止滑塊繼續(xù)往右運動一小段時間才停止這樣因為有應(yīng)力存在系統(tǒng)運行時間長了容易把右邊的限位機械結(jié)構(gòu)壓壞擠壞。
思路三:本思路是結(jié)合了前面兩種的優(yōu)點在判斷行程感應(yīng)器的電平狀態(tài)時當(dāng)發(fā)現(xiàn)是低電平日寸(哪怕是干擾時出現(xiàn)的瞬間低電平),電機馬上暫侵暫停和停止的概念不一樣雖然電機都是沒有轉(zhuǎn)),當(dāng)發(fā)現(xiàn)是高電平時甩機繼續(xù)運行什么時候才認(rèn)為碰到行程開關(guān)?當(dāng)?shù)碗娖较袼悸范菢舆B續(xù)持續(xù)低電平的時間超過某個值時才認(rèn)為碰到了行程開關(guān)。在此判斷低電平的小延時期間,電機是處于暫停的狀沒有轉(zhuǎn))所以不會過沖擠壓右邊的行程限位機構(gòu)。
這種思路優(yōu)點是既能及時響應(yīng)又增加了行程開關(guān)檢測的抗干擾處理,又不會讓電機過沖擠壓右邊的行程開關(guān)第三種思路能夠更好的實現(xiàn)功能并能有效防止干擾!
總結(jié)
傳統(tǒng)單片機系統(tǒng)大多是串行處理只能并行處理—些中斷程序。對于這樣的系統(tǒng)只能采用單純軟件或硬件消抖但都不那么完美。在實際的應(yīng)用中,為了提高系統(tǒng)的穩(wěn)定性和可靠性往往是在硬件消抖技術(shù)的基礎(chǔ)上再適當(dāng)應(yīng)用軟件消抖技術(shù)這樣能更好的滿足系統(tǒng)的需要。
以上就是我們深圳市組創(chuàng)微電子有限公司為您介紹的單片機按鍵消抖技術(shù)及其擴展應(yīng)用。我們有豐富的智能電子產(chǎn)品定制開發(fā)經(jīng)驗,可以盡快評估開發(fā)周期與IC價格,也可以核算PCBA報價。我們是松翰單片機代理商、應(yīng)廣單片機代理商,出售并開發(fā)sonix與應(yīng)廣的MCU與語音IC方案。我們代理并開發(fā)杰理、安凱、全志、realtek等系列的IC與方案,還開發(fā)BLE藍(lán)牙IC、雙模藍(lán)牙模塊、wifi模塊、物聯(lián)網(wǎng)模塊。我們的擁有硬件設(shè)計與軟件開發(fā)能力。涵蓋了電路設(shè)計、PCB設(shè)計、單片機開發(fā)、軟件定制開發(fā)、APP定制開發(fā)、微信公眾號開發(fā)、語音識別技術(shù)、藍(lán)牙開發(fā)、wifi技術(shù)等。還可以承接智能電子產(chǎn)品研發(fā)、家用電器方案設(shè)計、美容儀器開發(fā)、物聯(lián)網(wǎng)應(yīng)用開發(fā)、智能家居方案設(shè)計、TWS耳機開發(fā)、藍(lán)牙耳機音箱開發(fā)、兒童玩具方案開發(fā)、電子教育產(chǎn)品研發(fā)。
- 返回頂部