[發明專利]鍵盤掃描的實現方法無效
| 申請號: | 201110337759.5 | 申請日: | 2011-10-31 |
| 公開(公告)號: | CN102508556A | 公開(公告)日: | 2012-06-20 |
| 發明(設計)人: | 劉均;胡貴 | 申請(專利權)人: | 深圳市元征軟件開發有限公司 |
| 主分類號: | G06F3/023 | 分類號: | G06F3/023 |
| 代理公司: | 深圳市德力知識產權代理事務所 44265 | 代理人: | 林才桂 |
| 地址: | 518000 廣東省深圳市*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 鍵盤 掃描 實現 方法 | ||
技術領域
本發明涉及一種鍵盤掃描的實現方法,尤其涉及一種基于狀態機的鍵盤掃描的實現方法。
背景技術
在編寫單片機程序的過程中,鍵盤作為一種人機接口的實現方式,是很常用的。
而一般的實現方法有:
1、外接鍵盤掃描芯片(例如8279、7279等芯片),然后由該芯片來完成去抖、鍵值讀取、中斷請求等功能。然后單片機響應中斷并讀取鍵值,有的時候也可以采用輪訓的方式。而這種方法需要專門的外圍芯片,增加成本,且不容易檢測按鍵的按下、釋放以及長按鍵等一些事件。
2、如果按鍵數比較少,那么可以直接將按鍵接到單片機的IO口,然后各按鍵取邏輯或再送到單片機的中斷管腳(對于51體系),單片機響應中斷后再去讀取IO口的數據。如果單片機的中斷向量比較多(例如AVR系列的單片機,每個IO都可以作為中斷),那么也可以直接把各個按鍵接到各個具有中斷功能的IO上面。在中斷處理程序中往往需要執行這樣一個操作序列:延時一定時間來去抖,如果按鍵有效那么等待按鍵釋放。而這種方法同樣不容易檢測按鍵的按下、釋放以及長按鍵等一些事件。且采用軟件延時的方式,浪費CPU資源。
鍵按下之后的理想波形如圖1所示,按鍵處于空閑狀態S1時,信號為高;按鍵處于將按下狀態2時,信號垂直降為低;按鍵處于按下狀態S3時,信號為低;按鍵處于將釋放狀態S4時,信號垂直升為高。而實際波形如圖2所示,按鍵處于空閑狀態S1時,信號為高;按鍵處于將按下狀態S2時,信號出現一段時間的抖動,然后降為低;按鍵處于按下狀態S3時,信號為低,按鍵處于將釋放狀態S4時,信號抖動一段時間后升為高。同時,在數據線為低或者為高的過程中,都有可能出現一些很窄的干擾信號。如果可以采用基于這種基于狀態機的掃描式的方法來判斷各種按鍵事件,則可有效的解決了上述方法中問題。
發明內容
本發明的目的在于提供一種鍵盤掃描的實現方法,其工作穩定,占用系統資源少,對各種按鍵事件響應及時。
為實現上述目的,本發明提供一種鍵盤掃描的實現方法,包括如下步驟:
步驟1、在按鍵處于空閑狀態時,如果信號線為高,繼續保持空閑狀態,如果信號線為低,切換到按鍵將按下狀態;
步驟2、在按鍵處于將按下狀態時,如果信號線為高,切換到按鍵空閑狀態,如果信號線為低,發送按鍵按下消息,并將該按鍵按下消息存入消息列隊,切換到按鍵按下狀態;
步驟3、在按鍵處于按下狀態時,如果信號線為低,保持按鍵按下狀態,并對信號為低這一狀態進行計數,如果信號線為高,切換到按鍵將釋放狀態;
步驟4、在按鍵處于將釋放狀態時,如果信號為低,切換到按鍵按下狀態,如果信號線為高,發送按鍵釋放消息,并將該按鍵釋放消息存入消息隊列,切換到按鍵空閑狀態。
所述步驟2中所發送的按鍵按下消息經過系統判斷為不需要消息時,釋放該按鍵按下消息。
所述步驟4中信號為低時,系統根據預設閾值對信號為低這一按鍵消息的計數進行判斷,如果該計數的數值大于該預設閾值,該按鍵消息作為一長按鍵消息,小于該預設閾值,該按鍵消息作為一短按鍵消息。
所述步驟4中信號為高時,系統對所發送的按鍵釋放消息進行判斷,如該按鍵釋放消息為不需要時,釋放該按鍵釋放消息。
本發明的有益效果:本發明所提供的鍵盤掃描的實現方法,使用狀態機的模式設計鍵盤掃描程序,其工作穩定可靠,占用系統資源非常少,對各種按鍵事件響應及時,在現有的程序框架下還可以方便地擴展其它類型的按鍵事件。
為了能更進一步了解本發明的特征以及技術內容,請參閱以下有關本發明的詳細說明與附圖,然而附圖僅提供參考與說明用,并非用來對本發明加以限制。
附圖說明
下面結合附圖,通過對本發明的具體實施方式詳細描述,將使本發明的技術方案及其它有益效果顯而易見。
附圖中,
圖1為按鍵過程的理想波形示意圖;
圖2為按鍵過程的實際波形示意圖;
圖3為本發明鍵盤掃描的實現方法的流程圖。
具體實施方式
為更進一步闡述本發明所采取的技術手段及其效果,以下結合本發明的優選實施例及其附圖進行詳細描述。
請參閱圖3,本發明提供一種鍵盤掃描的實現方法,其包括如下步驟:
步驟1、在按鍵處于空閑狀態S1時,如果信號線為高,那么繼續保持按鍵空閑狀態S1,如果信號線為低,那么切換到按鍵將按下狀態S2。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于深圳市元征軟件開發有限公司,未經深圳市元征軟件開發有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201110337759.5/2.html,轉載請聲明來源鉆瓜專利網。





