作者/王海珍,內蒙古民族大學
按鍵檢測算法創新在嵌入式開發中的應用
作者/王海珍,內蒙古民族大學
傳統的按鍵檢測算法對應的CPU占用率非常大,為了在嵌入式開發過程中解決這一問題,本文提出了一種基于有限狀態機的新型按鍵檢測算法。首先簡要介紹了有限狀態機分析設計的原理,在其基礎上對按鍵檢測算法進行了創新,并將其應用到了嵌入式開發當中,實踐證明,本文的按鍵檢測算法在嵌入式開發中的應用具有一定的創新性,并且實用價值較高。
按鍵檢測;嵌入式開發;應用
在嵌入式系統當中,最常用的接口就是鍵盤和按鍵,這兩種接口作為一種常用的方式,主要用于人機對話的實現,其功能主要包括數據的輸入以及數據的傳輸,以人工操作的方式來對系統進行相應的有效控制[1]。傳統的按鍵檢測算法已經滿足不了當前嵌入式系統功能需求,所以對其進行創新成為了必然發展趨勢。本文主要針對按鍵檢測算法創新在嵌入式開發中的應用展開了相關論述。
有限狀態機實際上是一種數學模型,用于實時系統的設計,主要以描述控制特性為主[2]。目前,有限狀態機的應用領域越來越廣,大多數實時系統的研發都離不開這種模型,尤其是實時控制系統,系統的狀態與分析機制和功能之間的關聯度非常大。有限狀態機不僅包括有限狀態,而且還包括相互之間的狀態轉移,無論何時,僅能夠處于所有給定狀態中的一個。如果輸入事件達到接收端,此時狀態機就會自動產生一個對應的輸出,與此同時其狀態也會發生相應的轉移。
時間序列作為狀態機當中的重要因素,從硬件的角度對其進行分析,時間序列就好比一個同步信號或者觸發脈沖序列;如果從軟件的角度對其進行分析,可以將時間序列看作是一個定時器,主要用于狀態機的同步觸發,按照相關要求,在指定的時間段對輸入進行檢測,依據目前的狀態完成信號的輸出,與此同時還要完成下一次系統狀態轉移的有效確定。當下一次觸發到來時,系統會在前一次狀態的基礎上發生相應的轉移。另外,也可以將時間序列作為一個系統輸入信號,通過改變其狀態來改變系統的輸出。因此正確分析時間序列的時間間隔對于系統開發來說至關重要,同時依據系統功能需求挑選出較為合適的時間間隔。通常情況下選取的時間間隔要略小于變化最快的周期值,但是這個數值必須是外部輸入信號對應的周期值[3]。

圖1 狀態轉換圖
本文利用有限狀態機對按鍵檢測算法進行創新,如圖1所示為按鍵狀態機對應的狀態轉換圖。
圖1中,完成一次按鍵需要經過3個操作步驟,其中時間序列的周期設置為10ms。此周期可以理解為經過10ms運行時間就需要對按鍵的輸入信號進行一次檢測,確定其狀態是否發生改變,同時還需要輸入一個確認按鍵狀態的信號,此時其狀態會自動發生轉換。本文將按鍵的初始狀態設置為“狀態0”,想要開啟按鍵,只需要令按鍵輸入為“狀態1”即可。如果按鍵輸出為“狀態0”,那么其對應的下一個狀態也是“狀態0”,代表按鍵處于閉合狀態,如果按鍵沒有經過消抖處理,就不可以將其確認為按下狀態,下一狀態將轉為“狀態1”。
當按鍵輸出的是“狀態1”,則表明其處于閉合確認狀態,并且在10ms之前按鍵始終處于閉合狀態,所以在其基礎上再次檢測到按鍵輸入是“狀態0”時,可以看作按鍵經過了消抖處理,如果按鍵輸出“1”則代表已經確認按鍵閉合,接下來會自動跳轉至“狀態2”。當檢測結果再次為“1”時,則代表按鍵很有可能在抖動處理時受到外界因素干擾,同時按鍵輸出是“狀態0”,同時下一狀態會重新返回至“狀態0”。
利用上述確認方法,如果按鍵輸出為“狀態1”,就可以達到按鍵消抖處理的目的。而 “狀態2”表示按鍵處于等待狀態,即將被釋放,一次完整的按鍵操作過程必須等到按鍵釋放以后才算結束。依據圖1,在整個按鍵操作過程當中,起初按鍵的狀態為“狀態0”,接下來轉變為“狀態1”,經過10ms轉變為“狀態2”,最終又會返回至初始狀態,即“狀態0”。在整個輸出信號轉變的過程中,只有按鍵輸出“狀態1”時,才會有以此確認按鍵是否處于閉合狀態,并且對應的確認信號為“1”。因此本文狀態機表示出來的按鍵系統在解決按鍵抖動問題的同時,也可以保證整個按鍵輸出過程只有一次按鍵閉合確認信號“1”輸出。
傳統算法對應的CPU占用率是100%,說明CUP的按鍵檢測程序處于“死等”狀態,通過改進按鍵算法以后,CPU占用率減低幅度非常明顯,僅有0.4%,CPU在按鍵檢測結束以后還會有很多時間來完成其他處理。實踐證明,本文的按鍵檢測算法在嵌入式開發中的應用具有一定的創新性,并且實用價值較高。
* [1]鄭玉章,徐愛鈞.嵌入式開發過程中按鍵檢測算法的改進[J].單片機與嵌入式系統應用,2014(8):73-75.
* [2]黃慶華.基于情緒激勵的“嵌入式應用程序開發”教學方法創新[J].柳州職業技術學院學報,2012,12(3):99-103.
* [3]張旭,李亞利,陳晨,等.嵌入式駕駛員狀態檢測算法的實現與優化[J].自動化學報,2012,38(12):2014-2022.