向兵 楊述凱
摘 要:隨著電子技術(shù)的發(fā)展,單片機(jī)的應(yīng)用在教學(xué)及科技開發(fā)中越來越普遍,而針對(duì)單片機(jī)的開發(fā)環(huán)境而言,大多采用C51語法進(jìn)行設(shè)計(jì)。按鍵的使用在大多數(shù)硬件設(shè)計(jì)里相當(dāng)頻繁,而按鍵的干擾處理可以使用硬件消抖,也可使用軟件消抖。這兩種方法可根據(jù)總體設(shè)計(jì)需求而選擇,以高效的方式處理所有任務(wù)。本文采用51單片機(jī)的其中一個(gè)定時(shí)器作為全局時(shí)鐘來定位處理任務(wù),以不影響、不打斷其他正常工作的前提為標(biāo)準(zhǔn),可大大提高處理器工作效率。
關(guān)鍵詞:?jiǎn)纹瑱C(jī);按鍵;消抖;定時(shí)器
一、軟件消抖現(xiàn)狀
通常,我們會(huì)在程序中自定義一段延時(shí)程序命名為類似于delayms(unsigned int i)格式,然后在程序處理過程中判斷按鍵狀態(tài)達(dá)到要求后調(diào)用此函數(shù)來進(jìn)行消抖。此方法在程序運(yùn)行時(shí),一旦按鍵狀態(tài)符合,需要進(jìn)行延時(shí)等待二次判斷,任務(wù)較小的情況下能夠達(dá)到預(yù)期要求,若處理器任務(wù)較多,使用delayms函數(shù)進(jìn)行延時(shí)會(huì)極大降低程序處理效率,且總體效果不佳。本文介紹的消抖方式是利用單片機(jī)定時(shí)器記錄全局時(shí)間,在每一次進(jìn)入中斷后時(shí)鐘變量加1,在主要任務(wù)處理時(shí)循環(huán)判斷按鍵狀態(tài)變化時(shí)間,來達(dá)到類似于分時(shí)操作的效果。
二、程序初始化步驟
首先認(rèn)為系統(tǒng)上電后按鍵狀態(tài)為高電平1,定義一個(gè)位變量:bit key_last_state=1,用來存儲(chǔ)程序運(yùn)行過程中按鍵最后保持的狀態(tài)。我們將按鍵接在單片機(jī)P2.0引腳上,用變量key_current_state來表示P2.0引腳的電平,故定義:sbit key_current_state,此變量是由按鍵按下或松開之后的真實(shí)狀態(tài)變化。其次定義全局時(shí)鐘變量,將每一次進(jìn)入中斷后總體時(shí)間變化量保存在其中,故有:unsigned int globle_time=0。本文中采用51單片機(jī)定時(shí)器0工作方式1產(chǎn)生1ms的時(shí)間間隔,即每1ms進(jìn)入一次中斷服務(wù)程序。最后,定義按鍵變化時(shí)保存的臨時(shí)時(shí)間變量,故有:unsigned int key_last_time = 0。
至此,程序進(jìn)入主函數(shù)后,首先應(yīng)設(shè)置好定時(shí)器的工作模式及其方式,并賦予初始值。隨后配置好定時(shí)器0中斷,啟動(dòng)定時(shí)器計(jì)時(shí)。
三、按鍵狀態(tài)識(shí)別及消抖
六、小結(jié)
本文采用單片機(jī)定時(shí)器作為時(shí)間基準(zhǔn),將全局時(shí)間保存在變量globle_time中,作為時(shí)間記錄值,消抖過程中可分時(shí)進(jìn)行其他任務(wù)的操作,這樣,無需消耗多余的等待時(shí)間而降低程序效率。在消抖后進(jìn)行當(dāng)前按鍵狀態(tài)判斷時(shí),可辨別出按鍵正常按下及松開兩種情況,分別做相應(yīng)的程序處理及外圍控制。
參考文獻(xiàn):
[1] 喬之勇等.單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)項(xiàng)目化教程[M].北京:電子工業(yè)出版社.2014.9
[2] 王靜霞.單片機(jī)基礎(chǔ)與應(yīng)用[M].高等教育出版社.2016.3
[3]趙勇等.單片機(jī)原理與接口技術(shù)[M].電子科技大學(xué)出版社.2016.12
[4] 陳希球等.單片機(jī)應(yīng)用.高等教育出版社[M].2017.4
作者簡(jiǎn)介:
向兵(1990.10~),男,漢,四川南充人,助教,碩士研究生,從事單片機(jī)原理與應(yīng)用、電子產(chǎn)品分析與制作等課程研究及項(xiàng)目開發(fā)。
楊述凱(1998.10~),男,漢,四川巴中人,綿陽職業(yè)技術(shù)學(xué)院信息工程系2017級(jí),電子信息工程技術(shù)專業(yè)專科在讀,擅長(zhǎng)單片機(jī)開發(fā)、程序設(shè)計(jì)。
課題項(xiàng)目:綿陽職業(yè)技術(shù)學(xué)院,校級(jí)精品在線開放課程-《電子產(chǎn)品分析與 制作》