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