按鍵與菜單在嵌入式系統中的設計與應用
4.采用專用的鍵盤芯片
采用專用芯片設計的鍵盤接口電路,具有操作簡便,可靠性好等優點,但會提高產品造價,所以在實際使用時可根據需要進行選取。8279作為常用的并口鍵盤控制芯片可控制8×8的鍵盤矩陣,但其本身為并口傳輸,而且控制線較多,所以占用很多外部資源。ZLG7290為新型的I2C通訊的鍵盤、LED控制芯片,最多可控制8×8的鍵盤矩陣。由于采用了串行總線的通訊方式,所以占用I/O資源少,效率高。關于采用芯片設計鍵盤的電路與操作可參考有關數據手冊,在此不再贅述。
隨著半導體工業的發展,CPLD以其功能強大、開發成本低和保密性好等優點已經成為硬件設計中不可缺少的組成部分之一。在數字電路設計中,設計者完全可以根據自己的實際需要編寫一片具有鍵盤掃描、液晶驅動、打印控制等諸多功能的CPLD芯片。
三、菜單的結構、程序設計模式及鍵盤的搭配設計
菜單與鍵盤一起可構成良好的人機交互界面,與LED和其它提示信號相比采用液晶提供的菜單方式可提供給用戶更多的幫助信息,更友好的交互方式。但如果菜單的結構設計混亂,提示信息不明確,則可能會讓用戶不知所措,會比沒有菜單的系統更難以使用,所以良好的菜單與程序流程設計是產品成功的重要保障。菜單設計務必要做到結構清晰、功能明確,幫助語句無歧義。良好的菜單設計除包括基本的工作流程選擇外,還應包括重要決策的再次確定和功能返回按鍵,以防止操作人員的失誤。在設計中對不同的功能可根據實際情況分組,采用子菜單方式,以簡化人機操作界面。“一鍵多意”式設計一定要注意區分“抖動”與“雙擊”——它們的時間間隔有著顯著的差別。在按鍵事件的處理上也分為檢測到按鍵事件即進行處理和待按鍵彈起后再進行處理兩種,可根據實際需要進行選取。
具有菜單提示的系統因交互信息豐富可采用兩套按鍵式結構,一套用來執行選擇功能即上、下、左、右鍵,另一套用來輸入數據、確定操作。減少按鍵的數量可降低產品的操作難度,良好的按鍵、菜單搭配還可防止產品的誤操作,屏蔽不應執行的動作,提高產品的容錯性。在實際設計中還要采用程序流程圖輔助設計。
在裸機編程中,菜單的結構一般與程序的結構相對應,多采用按鍵事件觸發式程序設計結構,在C語言中通常采用的按鍵散轉結構是switch case 結構。值得說明的是嵌入式C語言設計與臺式機不同,在沒有使用OS的嵌入式系統中嵌入式程序為一個超級循環結構,即程序一般一直運行直至系統掉電。所以在執行完散轉功能后,程序不是退出而是返回到某個初始狀態等待新的命令。為了防止程序受干擾誤入不正常的選擇狀態可在的正常的散轉功能后加入 “default : *(void(*)())0)(); ”語句,該語句使程序返回到最初狀態,即軟復位操作。在不啟用的中斷入口處,以及檢測到某些錯誤時也可使用“*(void(*)())0)();”語句使系統軟復位。
在嵌入式系統中,與裸機編程相對應的是操作系統的使用,在資源比較豐富的系統中常采用RTOS,在RTOS中按鍵與菜單的組合常常用來進行任務的切換。使用RTOS的好處主要是堆棧的管理、中斷的重入和不同任務之間的切換等問題都由系統來完成,而設計者只專注于任務的設計,可以縮短研發周期。但RTOS的使用并不是沒有代價的,首先RTOS的使用并不是免費的,而且操作系統本身也會占用MCU資源,,所以在很多小型單片機上并不適用。
另一種設計模式是時間觸發式模式,時間觸發式模式是基于定時器中斷設計的任務調度模式,它采用函數的指針方式調度滿足條件的任務執行。與RTOS相比,時間觸發式模式更適合功能較小的小型MCU(如51系列),它有更好的可預測性,占用更少的CPU資源,程序結構更明確、透明度高。在這種模式下,由定時器每隔一定的時間間隔調度刷新函數,確定可執行的函數(功能),再通過主函數中的調度函數根據函數指針依次調用具備條件的函數。在調度器(調度函數)中還可加入設置CPU閑置的語句,可在無任務時使CPU處于idle狀態,以降低系統的功耗和提高抗干擾的能力。在這種小型系統中,因功能相對簡單,菜單結構也可設計的盡量簡單,明確提出可執行的任務,減少CPU在刷新顯示上的時間。按鍵掃描子程可作為一項任務由調度器每隔一定的時間間隔調度,如果兩次調用的時間間隔大于5ms則可省略防抖功能。按鍵信息在這里同樣不會引起功能的立即執行(程序的跳轉),而是改變某個函數(功能)的條件位,使其在下次調度中得到執行。由于調度器兩次調度的時間間隔很短,所以并不會有明顯的延誤現象,可以滿足大多數的應用場合。
四、結束語
針對不同的硬件,本文介紹了在嵌入式系統中按鍵的軟、硬件設計及不同設計的優缺點,并討論了菜單設計和程序模式之間的關系。










評論