siemens x
嵌入式系統(tǒng)

按鍵與菜單在嵌入式系統(tǒng)中的設(shè)計與應(yīng)用

2025China.cn   2011年08月04日

        在嵌入式系統(tǒng)中,按鍵是常用的人機交互接口,其硬件電路設(shè)計的質(zhì)量直接關(guān)系著最終產(chǎn)品的使用,決定著用戶對產(chǎn)品的第一印象,所以,決不可輕視按鍵設(shè)計在電路中的作用。下面介紹幾種常用的按鍵設(shè)計電路及其特點。


        一、 引言
        
        隨著微處理器的廣泛應(yīng)用,越來越多的儀器采用智能化的操作方式,微控制器已經(jīng)廣泛應(yīng)用到各個領(lǐng)域中,為了使儀器的操作更簡便,人機界面更友好,在現(xiàn)代儀器電路中經(jīng)常采用液晶與按鍵的搭配方式作為人機接口。液晶不僅功耗低,而且提供的可視化信息豐富。所以采用液晶提供菜單與按鍵反饋相組合的方式為理想的人機交互方式。根據(jù)實際不同的設(shè)計,本文主要介紹了在嵌入式系統(tǒng)中按鍵的軟、硬件設(shè)計及菜單和程序模式之間的關(guān)系。
     
   二、 按鍵的軟、硬件設(shè)計
        
        在嵌入式系統(tǒng)中,按鍵是常用的人機交互接口,其硬件電路設(shè)計的質(zhì)量直接關(guān)系著最終產(chǎn)品的使用,決定著用戶對產(chǎn)品的第一印象,所以,決不可輕視按鍵設(shè)計在電路中的作用。下面介紹幾種常用的按鍵設(shè)計電路及其特點。
        1. 端口按鍵一對一方式
        這種方式在所需按鍵較少的系統(tǒng)中經(jīng)常采用,其典型電路圖1所示。

        圖.1 簡單的按鍵接口

        
        這種電路簡單,成本低,在小型系統(tǒng)經(jīng)常采用,其中上拉電阻的主要作用是保證I/O引腳不會懸空(即I/O引腳有確定的電平)。由于在實際使用中一般按鍵按下的時間遠遠小于按鍵彈起的時間,而一般單片機的邏輯0輸入電流要大于邏輯1輸入電流,所以采用電阻上拉的方式可減小功耗。典型上拉電阻取值為10kΩ。
        上述電路的主要缺點是抗干擾能差,端口會出現(xiàn)抖動現(xiàn)象,容易產(chǎn)生誤判,必須在軟件中采用“防抖”處理。一般采用的方法為檢測到按鍵信號后延時大于 5ms(一般為10ms-20ms)重新讀取,并與前值對比若相同視為一次有效,否則丟棄。推薦的改進電路為采用MAX6816-MAX6818替換上拉電阻,在硬件中加入“防抖”處理。采用MAX6816改進后的電路與芯片輸入、輸出的效果對比分別如圖2、3所示。


        圖.3 MAX6816輸入、輸出的端口電平對比

        
        MAX6816-MAX6818分別為單、雙、八通道的消抖按鍵芯片,并且具有ESD保護功能。使用該芯片改進電路后,不僅簡化了軟件的設(shè)計(可直接視端口電平改變?yōu)橛行ё兓?,更提高了電路的抗干擾能力,使最終產(chǎn)品更容易通過EMC測試。
        2. 矩陣式鍵盤設(shè)計
        在所需按鍵較多的系統(tǒng)中常采用矩陣式按鍵設(shè)計,該方式可大大節(jié)約端口的占用(N為偶數(shù)時,N個端口最多可控制(N/2)2個按鍵),與一一對應(yīng)的按鍵設(shè)計相比其主要缺點是掃描速度相對較慢。典型電路如圖4所示。

        圖.4 矩陣式鍵盤接口

        

[DividePage:NextPage]


        其控制端口分為A、B兩組,A組用來驅(qū)動產(chǎn)生逐位送出的低電平信號,同時保持其它位為高電平。對A組的每位低電平信號都要在B組執(zhí)行一次掃描。由電路特性可知,每個按鍵對應(yīng)唯一的一組A、B組合,所以通過掃描可確定按鍵的位置。對矩陣式按鍵的掃描也要注意防抖問題,雖然矩陣式按鍵的掃描速度比一一對應(yīng)的方式慢,但嵌入式系統(tǒng)運行在微秒甚至更低的數(shù)量級上,所以機械抖動問題依然要靠軟件解決,在實際使用中也可根據(jù)需要由專用芯片改進設(shè)計。
        3. A/D采樣式具有優(yōu)先級的鍵盤編碼設(shè)計
        很多的新型51單片機、ARM等微控制器都集成了A/D功能,而且往往A/D通道較多。所以在數(shù)字端口資源緊張而模擬端口資源充裕的情況下可考慮采用模擬通道作為部分按鍵的接口。該方法可在不增加成本的情況下,可有效的擴充按鍵資源,設(shè)計電路如圖5所示,其中分壓電阻的選取要特別注意,一定要保證在不同按鍵按下時,A/D端口的得到電壓要有充分的間隙,并適當(dāng)減小接地電阻阻值。由電路分析可知,這種按鍵組合具有優(yōu)先權(quán)問題,KEY3的優(yōu)先權(quán)最高,所以當(dāng)KEY3按下時,KEY1、KEY2實際上被屏蔽了。


        圖.5 A/D采樣式優(yōu)先權(quán)編碼鍵盤接口

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

(轉(zhuǎn)載)

標(biāo)簽:嵌入式系統(tǒng) 微控制器 A | D采樣 我要反饋 
2024世界人工智能大會專題
即刻點擊并下載ABB資料,好禮贏不停~
優(yōu)傲機器人下載中心
西克
2024全景工博會
專題報道