引言
鍵盤是智能化測控系統主要的信息輸入方式,是實現人機對話的重要途徑,因此如何有效地控制鍵盤并為系統服務是每個設計者需要切實考慮的問題。
嵌入式系統鍵盤軟件設計存在3方面問題:軟件去抖動、等待按鍵抬起和連擊處理。
1嵌入式系統鍵盤軟件設計的3個問題
1.1軟件去抖動問題
一次完整按鍵過程的時序波形如圖1所示。當按鍵未被按下時,單片機端口輸入為通過上拉電阻獲得的高電平;按下時,端口接至地,端口輸入為低電平。當機械觸點斷開、閉合時會有抖動,這種抖動對人來說是感覺不到的,但對計算機來說,則是完全可以感應到的。計算機處理的速度是us級,而機械抖動的時間至少是ms級,對計算機而言,這已是漫長的時間了。
為使單片機能正確地讀出端口的狀態,對每一次按鍵只作一次響應,這就必須考慮如何去除抖動的問題。嵌入式系統一般采用軟件延時去除抖動。軟件延時去除抖動其實很簡單,就是在單片機獲得端口有按鍵動作時,不是立即認定按鍵開關已被按下,而是延時10 ms或更長一段時間后再次檢測端口,如果仍為動作電平,則說明按鍵開關的確按下了,這實際上是避開了按鍵按下時的抖動時間;而在檢測到按鍵釋放后(端口為高)再延時5~10 ms,消除后沿的抖動,然后再對鍵值處理。當然,實際應用中對按鍵的要求也是千差萬別,要根據不同的需要來編制處理程序,但以上是軟件延時去除抖動的基本原則。
1.2等待按鍵抬起問題
單片機在查詢讀取按鍵時,不斷地掃描鍵盤,掃描到有鍵按下后,進行鍵值處理。它并不等待鍵盤釋放再退出鍵盤程序,而是直接退出鍵盤程序,返回主程序繼續工作。計算機系統執行速度快,很快又一次執行到鍵盤程序,并再次檢測到鍵還處于按下的狀態,單片機還會去執行鍵值處理程序。這樣周而復始,按一次按鍵系統會執行相應處理程序很多次。而程序員的意圖一般是只執行一次,這就是等待按鍵抬起問題。通常的解決辦法是,當按鍵抬起后再次按下才再次執行相應的處理程序,等待時間一般在幾百ms以上。通常在軟件編程中,當執行完相應處理程序后,要加一個非常大的延時函數,再向下執行。
對于軟件去抖動問題和等待按鍵抬起問題,若采用軟件延時,會大大削弱系統的實時性;若采用中斷方式延時,會占用定時器,耗費了系統資源,且軟件的多任務編程會增大軟件設計的復雜度。
1.3連擊處理問題
工業控制設備中有這樣一種鍵盤方案設計要求:如果長時間按下同一個按鍵,表征有重復執行該鍵對應處理程序的需求。比如使用“+”和“-”二鍵控制顯示數值,要求按一次“+”鍵使顯示值加1,要求按一次“-”鍵使顯示值減1。如果按“+”鍵超過一定時間(如2 s),則顯示值將很快地增加,即連擊處理,減號鍵也是如此。這樣就可以用很少的鍵完成多位數的輸人工作。
針對這3個問題,本文給出一個解決方案。該軟件方案實現計數器自然去抖動和等待按鍵抬起功能,而非采取延時等待的方法,同時實現了連擊處理。
2智能鍵盤的軟件設計
為了解決智能鍵盤在應用中的一些技術問題,下面分析各種擊鍵類型的軟件處理方法。
2.1短擊和長擊區分的軟件設計
圖2為短擊/長擊的示意圖。
軟件流程如下:
①定義1個變量,KEY_Counter=按鍵閉合計數器。
②定義1個常數,c_keyover_time=按鍵長擊時間常數。
③定時檢測按鍵,當按鍵閉合時,KEY_Counter按一定的頻率遞增。
④當KEY_Counter≥c_keyover_time時,確認一次有效長擊。
⑤當按鍵釋放時,再判斷一次KEY_Counter,如果KEY_Counter
◆一般來說,長擊一旦被檢測到就立即執行;
◆當按鍵剛被按下時,系統無法預知本次擊鍵的時間長度,所以短擊必須在釋放后再執行。
⑥當按鍵釋放后,KEY_Counter應當被清零。
2.2單擊和連擊的軟件識別
一般來說,連擊和單擊是相伴隨的。事實上,連擊的本質就是多次單擊。軟件流程如下:
①定義1個變量,KEY_Counter=按鍵響應延時時間寄存器。
②定義2個常數:
◆c_wobble_time=按鍵初按(消抖)延時(用來確定消抖時間,一般取4~20 ms);
◆c_keyover_time=按鍵連按延時(用來確定連擊的響應頻率。比如,如果要每秒執行10次連擊,則這個參數=100 ms)。
③按鍵未閉合前,先令KEY_Counter=0。
④當按鍵閉合時,KEY_Counter以一定的頻率加1。抖動期間,若檢測到按鍵抬起,令KEY_Counter=0。當KEY_Counter=c_wobble_time時,抖動時間已經過去,即可先執行一次按鍵功能,此為首次單擊。之后,若按鍵一直處于閉合狀態,則進入下一進程。
⑤KEY_Counter超過c_wobble_time,且按鍵一直閉合時,KEY_Counter仍以一定的頻率加1。當KEY_Counter=c_keyover_time時,KEY_Counter=0,形成一次長擊。
⑥當再次出現KEY_Counter=c_wobble_time時,即可再執行一次按鍵功能,此為連擊。
⑦如果按鍵一直閉合,就重復執行⑤~⑦三個步驟,直到按鍵釋放。
單擊/連擊示意圖如圖3所示。
本文以AVR單片機為例給出設計軟件。例程中4個按鍵分別連接到PD口的低4位(若按鈕更多,甚至是矩陣鍵盤也很好仿寫)。WINAVR20071221例程如下(假定連接按鍵的I/O口已經成功地初始化):
工程應用中隨著主函數死循環中程序量的不同,需要調整3個參數。不過,該程序利用系統的嘀嗒定時中斷定時讀取,只需調整好一組參數。
上面的例程中要深入理解static的作用,即靜態變量會被分配一個內存固定、每次操作的值不會丟失、卻又被函數私有處理的類似全局變量的變量。
結語
本文針對實時應用的嵌入式系統中智能鍵盤軟件設計的軟件去抖動問題、等待按鍵抬起問題和連擊處理問題,給出基于查詢結構的軟件解決方案。該方案不但能夠滿足系統的實時性要求,而且軟件直接調用,大大降低了系統開發的難度。
嵌入式系統智能鍵盤的軟件設計
- 嵌入式系統(128115)
- 智能鍵盤(9059)
相關推薦
嵌入式系統智能鍵盤軟件設計有什么問題?
鍵盤是智能化測控系統主要的信息輸入方式,是實現人機對話的重要途徑,因此如何有效地控制鍵盤并為系統服務是每個設計者需要切實考慮的問題。
2019-09-26 06:48:19
嵌入式系統鍵盤軟件設計存在3方面問題
鍵盤是智能化測控系統主要的信息輸入方式,是實現人機對話的重要途徑,因此如何有效地控制鍵盤并為系統服務是每個設計者需要切實考慮的問題。嵌入式系統鍵盤軟件設計存在3方面問題:軟件去抖動、等待按鍵抬起和連擊處理。
2019-07-25 06:07:32
嵌入式系統和智能家用電器
單片機最早是以嵌入式微控制器(Embedded Microcontroller)的面貌出現的。在嵌入式系統中,它是最重要也是應用最多的智能核心器件。無論在交通、通訊、工業、儀器、醫療等領域,都有大量
2019-07-03 08:15:26
嵌入式系統開源軟件的過去和未來
這片領域,開始是智能手機、MID,到現在的上網本(netbook),還有未來的智能本(一種稱為smartbook,尺寸更小、更輕便的上網本)。開源軟件也在慢慢地向嵌入式系統靠攏。在國內,嵌入式系統行業已經形成了ARM+Linux的模式。
2019-07-23 06:49:02
嵌入式系統是如何使用的
;智能"。嵌入式系統不是像臺式電腦、服務器和其他類似的計算領域那樣由獨立的部件組成,而是被封閉在產品中,包括完整的硬件和軟件。Parasoft是一家專門提供軟件測試解決方案的公司,幫助企業打造
2021-08-31 07:30:06
嵌入式系統智鍵盤軟件設計問題解決方案
系統鍵盤軟件設計存在3方面問題:軟件去抖動、等待按鍵抬起和連擊處理。1嵌入式系統鍵盤軟件設計的3個問題1.1軟件去抖動問題一次完整按鍵過程的時序波形如圖1所示。當按鍵未被按下時,單片機端口輸入為通過
2019-06-21 07:32:55
嵌入式系統的應用范圍有哪些
外圍設備等)。從這些應用可以看出, 要完成一個以MCU為核心的嵌入式系統應用產品設計,需要硬件、軟件及行業領域相關知識。硬件主要有MCU的硬件最小系統、輸入/輸出外圍電路、人機接口 設計。軟件設計有固...
2021-10-27 06:06:37
嵌入式系統的開源軟件發展如何?
Smart-book,尺寸更小、更輕便的上網本)。開源軟件也在慢慢地向嵌入式系統靠攏。在國內,嵌入式系統行業已經形成了ARM+Linux的模式。
2019-09-27 07:51:58
嵌入式系統軟件開發環境
嵌入式系統的概念嵌入式系統的基本架構嵌入式操作系統的基本組成和分類嵌入式數據庫管理嵌入式網絡嵌入式系統設計的核心技術嵌入式系統軟件的設計流程嵌入式軟件設計模型嵌入式系統軟件開發環境1.嵌入式系統
2021-11-08 08:37:48
嵌入式系統軟件設計中的數據結構].(陸玲,周航慈)
本帖最后由 lee_st 于 2018-2-21 17:01 編輯
嵌入式系統軟件設計中的數據結構].(陸玲,周航慈)
2018-02-21 11:57:51
嵌入式系統軟件設計的原則是什么
嵌入式系統軟件設計的原則1、基本原則是“物盡其用”,嵌入式系統的硬件和軟件都必須高效率地設計,去除冗雜? 還應盡可能采用高效率的設計方法,標準化開發方法和開發流程? 嵌入式系統一般由下面幾個模塊組成:...
2021-12-24 06:29:05
嵌入式系統軟件設計資料分享
1、摘要在嵌入式系統軟件設計的過程中,總是要經常性地操作GPIO口,在ESP32平臺中,我們可以使用下面的函數來初始化GPIO口:在圖1-1所示的函數的時候,用到了一個結構體:如圖1-2所示,在該
2022-02-08 06:56:01
嵌入式軟件代碼保護系統是由什么構成的?
嵌入式產品由于其獨特的穩定性、低廉的成本優勢以及優良的可移植性, 已經在互聯網、科學研究、軍事技術、工業控制、通訊以及人們的日常生活中得到了廣泛的應用。在嵌入式系統中, 如何保護核心的嵌入式軟件代碼
2019-08-15 07:59:15
嵌入式軟件設計有什么安全理念?
嵌入式軟件應用場合、硬件平臺及操作系統的多樣性,使嵌入式軟件在各種不同條件下可能出現未知、不可預測的狀況,即其潛在風險往往比通用PC機的軟件要高。由于嵌入式軟件應用場合特殊,往往在無人值守的情況下運行,高可靠性和安全性自然成為嵌入式系統的重要指標。
2019-09-03 07:17:47
嵌入式軟件設計筆記相關資料分享
嵌入式軟件設計—筆記1.1 引言、計算機系統由硬件系統和軟件系統所組成,軟件系統中最為重要的是操作系統。Linux作為操作系統管理著計算機內所有的硬件資源和軟件資源,仿佛是計算機的靈魂。Linux
2021-11-08 08:54:51
嵌入式Linux系統的鍵盤驅動程序怎么編寫?
Linux由于其具有內核強大且穩定,易于擴展和裁減,豐富的硬件支持等諸多優點,在嵌入式系統中得到了廣泛的應用。很多嵌入式Linux系統,特別是一些具有與用戶強交互的嵌入式系統,往往需要配備一個特殊鍵盤,此時開發者需要根據實際情況,為自己的特殊鍵盤編寫驅動程序。
2020-03-31 07:08:59
嵌入式Linux矩陣式鍵盤的工作原理是什么?
隨著電子信息技術飛速發展,嵌入式系統構成的各種設備得到了廣泛的應用, 嵌入式Linux是一種開放源碼、 軟實時、 多任務的操作系統,是開發嵌入式產品的優秀操作系統平臺,其中鍵盤是人機界面中人類監控
2019-10-31 07:51:16
嵌入式實時操作系統如何簡化應用軟件的設計
在嵌入式領域中,嵌入式實時操作系統(RTOS)正得到越來越廣泛的應用。采用嵌入式實時操作系統可以更合理、更有效地利用CPU的資源,簡化應用軟件的設計,縮短系統開發時間,更好地保證系統的實時性和可靠性。內存資源作為嵌入式系統中極為重要的資源之一,其管理機制歷來是嵌入式系統設計的重點和難點。
2020-11-25 06:48:44
嵌入式應用軟件設計方法
第十章 嵌入式應用軟件設計方法請分析前后臺軟件結構是否提供優先級服務能力。沒有。假設設備A2的中斷優先級高于設備A1的,且在后臺程序處理A3事件時,事件A1、A2終端先后到來,A1中斷程序未完成時被
2021-12-22 07:33:06
嵌入式環境下軟件設計的特點是什么
詳見微信公眾號,二進制人生。目錄:嵌入式環境下軟件設計的特點設計目標設計思路多進程解耦嵌入式環境下軟件設計的特點要談嵌入式的軟件架構,首先必須了解嵌入式軟件設計的特點。下面的這一段摘自http
2021-11-09 06:31:11
嵌入式硬件與軟件區別!
軟件的開發,若不全面考慮高功能軟件對底 層硬件的可能調用,也會使封裝或參數設計得不合理或不完備,導致高層功能軟件調用困難。 由此可以看出,若把嵌入式系統的開發孤立地分為硬件設計、底層硬件驅動 軟件設計
2017-07-05 09:57:48
嵌入式組態軟件系統應用舉例
操作系統、控制與應用軟件開發來實現各種自動化處理任務的電子設備或裝置。 嵌入式系統的主要作用是實時控制、監視、管理移動計算機、數據處理等,或者輔助其它設備運轉,完成各種自動化處理的任務。嵌入式系統以
2019-06-25 08:25:11
嵌入式非編碼矩陣鍵盤怎么實現?
隨著電子信息技術的飛速發展,信息家電和各式各樣的移動終端得到越來越廣泛的應用。在這些人機交互(HMI)較頻繁的嵌入式系統中,鍵盤是一種應用昀為廣泛的輸入設備。由于嵌入式系統具有功耗低、體積小、專用性強等特點,因此嵌入式鍵盤常常要求具有特殊的工作方式和特定的驅動設計。
2019-08-22 08:00:05
智能交通中的嵌入式系統
現象,建立現代化的交通指揮控制系統是非常必要的。從某種意義上來說,交通運輸業及其管理方式是一個城市、一個地區甚至于一個國家經濟水平的一個縮影。從表面上看,智能交通系統與嵌入式系統產品似乎沒有什么必然
2019-06-24 08:19:16
DIY分享:嵌入式導航系統硬件+軟件設計教程
特點。模塊與 S3C2440A 接口電路如圖 2 所示。其中,RX_GPS,RX_GPS 接入 UART 端。3 嵌入式導航系統軟件設計該系統軟件由嵌入式系統軟件(Win CE 5.0)和應用軟件
2020-02-12 08:00:00
SPB嵌入式音頻處理系統該怎么設計?
的軟件構架.SPB中的軟件IP模塊可以屏蔽底層細節,為FPGA嵌入式設計的快速開發提供便利,提高研發效率.介紹了基于SPB的FPGA嵌入式設計關鍵技術,并在智能開發平臺NanoBoard 3000上實現了基于SPB的嵌入式音頻處理系統設計.
2019-09-18 06:09:18
Windows CE在嵌入式工業控制系統要滿足什么要求?
嵌入式系統(Embedded System)是指有特定功能或用途的計算機硬、軟件的集合體,分為嵌入式軟件系統和嵌入式硬件系統。在智能控制設備、便攜式智能儀器等應用場合,出于對產品體積、成本等諸因素
2019-11-11 06:27:36
【下載】《嵌入式系統軟件設計中的數據結構》
`編輯推薦 《嵌入式系統軟件設計中的數據結構》可作為從事嵌入式系統軟件設計的電子技術人員自學"數據結構"的教材,也可供高等院校電子技術類專業本科生、研究生作為
2017-11-30 17:46:03
什么是嵌入式軟件
概述:什么是嵌入式軟件?與傳統軟件不同,嵌入式軟件需要將軟件分析、設計、編碼后燒錄至硬件環境中才能實現所對應功能,隨著智能應用的發展,越來越多的嵌入式產品走進大眾視野,常用的路由器、交換機和家電
2021-10-28 08:45:05
公司招聘嵌入式軟件開發,求推薦!
軟件設計熟悉PCIe者優先[size=13.3333330154419px]開發過產品級嵌入式軟件熟悉軟件產品開發 測試流程[size=13.3333330154419px]熟悉SoC軟硬件協同設計硬件
2016-09-07 14:51:59
決定嵌入式系統軟件架構的因素和架構的影響
嵌入式系統軟件架構設計目錄1.前言42.決定架構的因素和架構的影響42.1.常見的誤解52.1.1.小型的系統不需要架構52.1.2.敏捷開發不需要架構73.嵌入式環境下軟件設計的特點73.1.
2021-11-08 06:54:50
分布式嵌入式系統軟件升級有什么困難?
嵌入式系統具有智能化程度高、體積小、可靠性高、實時性強等諸多優點,已經越來越多地應用于消費電子、工業控制、汽車電子等各個行業。往往一個大的系統又由許多小的嵌入式系統共同構成,它們之間通過相互通信協同
2019-08-23 07:12:23
基于嵌入式Linux系統的鍵盤驅動該怎么設計?
隨著微處理器技術的不斷發展和數字化產品的普及,嵌入式系統的研究開發逐漸成為熱點,Linux也以其開源、穩定、可裁剪的優勢成為嵌入式操作系統的主流。在眾多的嵌入式系統中,鍵盤成為一種應用最為廣泛的輸入
2019-08-26 07:33:59
基于嵌入式WEB的網絡視頻監控系統該如何去設計?
基于嵌入式WEB技術的網絡視頻監控系統特征及原理是什么?基于嵌入式WEB技術的網絡視頻監控系統硬件設計基于嵌入式WEB技術的網絡視頻監控系統軟件設計
2021-06-02 07:15:51
基于ARM嵌入式系統的人機界面組態軟件設計方案
基于ARM嵌入式系統的人機界面組態軟件設計方案本文介紹基于ARM嵌入式系統的人機界面組態軟件設計方案,嵌入式系統具有RS232,RS485串口,單片機TTL電平串口,I2C通訊接口,以太網接口
2017-10-14 14:59:14
基于ARM嵌入式系統的人機界面組態軟件設計方案
本文介紹基于ARM嵌入式系統的人機界面組態軟件設計方案,嵌入式系統具有RS232,RS485串口,單片機TTL電平串口,I2C通訊接口,以太網接口,無線通訊,U盤存儲,語音播放等功能。可以配套
2016-08-19 09:46:20
基于ARM嵌入式系統的人機界面組態軟件設計方案
本文介紹基于ARM嵌入式系統的人機界面組態軟件設計方案,嵌入式系統具有RS232,RS485串口,單片機TTL電平串口,I2C通訊接口,以太網接口,無線通訊,U盤存儲,語音播放等功能。可以配套
2016-09-18 15:45:39
基于QT的嵌入式linux圖形應用軟件設計
對嵌入式數據庫或圖形軟件開發有興趣,可以進一步學習嵌入式linux數據庫開發或基于 QT的嵌入式linux圖形應用軟件設計。...
2021-11-05 08:11:52
基于SPB怎么實現嵌入式音頻處理系統設計?
的軟件構架。SPB中的軟件IP模塊可以屏蔽底層細節,為FPGA嵌入式設計的快速開發提供便利,提高研發效率。介紹了基于SPB的FPGA嵌入式設計關鍵技術,并在智能開發平臺NanoBoard 3000上實現了基于SPB的嵌入式音頻處理系統設計。
2020-03-11 07:12:23
如何對嵌入式軟件進行覆蓋測試?
嵌入式軟件的覆蓋測試原理是什么?嵌入式實時操作系統的覆蓋測試工具是什么?Logiscope在嵌入式操作系統DeltaCORE測試中的應用是什么?
2021-05-13 07:30:16
怎么實現基于RapidIO的雙主機節點嵌入式系統互聯的設計?
本文討論了一種基于RapidIO的具有雙主機節點的嵌入式系統互聯設計,給出系統設計方案及驅動軟件設計,并在具體應用環境中對設計方案進行了系統驗證。
2021-05-24 06:24:37
掌握嵌入式系統軟件設計方法
實驗目的(1)掌握嵌入式系統軟件設計方法,培養分析問題、解決問題、應用知識的能力和創新精神,全面提高綜合素質。(2)熟悉嵌入式Linux開發環境,學會基于UP-CUP6410-II型平臺的Linux
2021-11-09 09:05:20
求一種基于μC/OS-II的嵌入式構件系統設計
本文嘗試將構件化軟件設計思想引入嵌入式軟件設計中,提出了一種適用于嵌入式軟件的基于構件的軟件體系結構,并且在常用輸入設備鍵盤的應用實踐中,驗證了此體系結構的可行性。
2021-04-27 07:02:28
誠聘嵌入式軟件設計師
獵頭職位:嵌入式軟件設計師【成都】崗位職責:1.負責燃氣類產品的嵌入式開發及調試;2.參與產品開發方案的設計;3.協助硬件設計師完成產品硬件設計;4.負責項目研發過程中的技術文檔編寫及歸檔;5.參與
2017-03-13 10:29:11
采用構件技術實現嵌入式系統復用軟件設計
應用軟件設計時的集成和調試。為了方便軟件構件的管理,可以將系統級和應用級的軟件構件庫綜合成一個功能完備的軟件構件庫。它包括從嵌入式控制系統的系統層、支撐層和應用層所需的一切軟件構件,因而具有功能的完整性[1
2019-05-07 07:00:02
基于ARM的嵌入式系統軟件設計
嵌入式軟件的啟動代碼嵌入式軟件開發關鍵技術嵌入式實時操作系統程序的鏈接定位軟件調試技術http://“ARM”軟件設計基礎“ARM”軟件調試與運行啟動代
2006-03-25 15:03:06203
嵌入式系統軟件設計中的數據結構
根據嵌入式系統軟件設計需要的“數據結構”知識編寫而成。書中基本內容有:常用線性數據結構在嵌入式系統中的實現和相關算法;樹和圖在嵌入式系統中的實現和相關算法
2009-03-28 12:30:54294
嵌入式系統高可用性應用軟件設計Strategies of I
在簡單闡述了嵌入式系統特點的基礎上,本文介紹了嵌入式系統高可用性應用軟件設計的兩種策略:自啟動過程和主備用方式。詳細討論了兩種策略實現方法。結合自行開發的C
2009-05-31 17:00:5521
基于嵌入式的腦卒中康復儀的軟件設計
本文介紹一種新型嵌入式腦卒中康復治療儀系統的軟件設計。以Qt/Embedded為核心實現治療儀的軟件設計,利用Qt/Embedded的多線程技術來實現肌電信號的采集、實時描繪肌電信號以及
2009-08-14 09:30:2828
嵌入式軟件在計算機軟件設計中應用
文章主要是在計算機軟件設計中應用嵌入式實時軟件,滿足人們對計算機高性能的需求,不僅僅分析了嵌入式的軟件系統結構,同時也實現嵌入式實時軟件的動態性分配過程,體現指令執行的功能特點,并體現獨特性的緩存
2017-11-01 15:27:3314
評論
查看更多