引言:
許多儀器的前面板通常是由諸多的旋鈕、按鍵組成的混合界面。傳統的儀器前面板上通常有兩種旋鈕,一種是電位器,用于調節連續變化的量;另一種是檔位開關,用于調節間隔變化的量。它們嵌入在測量電路中,可以直接改變儀器的參數和設置。而在現代智能儀器[1]中,這兩類調節均可以通過數字旋鈕由微控制器將用戶操作的變化量反饋給儀器的主處理器,再由主處理器改變儀器的參數和設置。所以,智能儀器上的數字旋鈕和傳統儀器上的旋鈕在原理和處理方法上有很大不同。為了節省成本,面板處理往往采用體積小、性價比高的單片機(MCU)。運用單片機不但經濟靈活,并可充分利用MCU邏輯處理的優勢,大大簡化外圍連線,對旋鈕按鍵混合控制系統[2]的處理尤為突出。
設計采用LPC900系列的P89LPC922Flash單片機來實現軟件處理。P89LPC922采用高性能的處理器結構,6倍于標準80C51器件的速率,并自帶波特率發生器。充分考慮單片機的資源和處理速度,分模塊設計——按鈕電路,旋鈕電路,串口電路,掃描電路。用protel完成電路原理圖,制作電路板,在KeilC環境下編寫軟件。軟件和硬件相結合,協同實現整個面板。
1 硬件設計及原理
1.1 旋鈕電路設計
1.1.1 數字旋鈕的工作原理
本設計選用常見的編碼器EC16系列作為數字旋鈕,如圖1。4、5腳供固定之用,3腳接VCC(+5V),1、2腳在轉動時輸出連續脈沖。這種旋鈕只有兩種操作,即正旋和反旋。通過示波器可以觀察到如圖所示的旋鈕轉動時1、2腳的波形。
每次轉動1、2腳都會產生脈沖信號,正旋時1腳先變高,反旋時2腳先變高。也就是說,正旋和反旋輸出信號的相位不同,只要檢測出相位,就可以識別正旋和反旋。
1.1.2鑒相電路設計
本文設計的鑒相電路見圖2,附箭頭所指數字標號對應的波形(以正旋為例)。旋鈕的1、2腳分別與D觸發器的D端和CLK端連接,根據上面所述旋鈕的工作原理,正旋時1腳(D)先變高,2腳(CLK)上升沿時Q端輸出1,反旋轉時輸出0, 端則相反。因此根據Q、 輸出為10還是01就可以判斷出轉動方向。但是,如果繼續正旋,Q、 將維持現狀(圖2中的④③),因此還必須檢測脈沖個數來反映轉動量。這時不用考慮1、2腳的相位,可將2個信號相與產生新的信號(圖2中的⑤),可利用該信號分別和Q、 相與即可分辨出每次旋鈕的轉動。
最后的輸出為⑥和⑦,正旋時⑦線有脈沖,⑥線一直為低,反旋則兩根線相反。至此完成了鑒相,下面要解決如何與單片機接口的問題。
1.2 掃描電路設計
用戶操作面板時,為了能及時準確地識別哪個按鈕和哪個旋鈕動作,將按鈕和旋鈕統一掃描和編碼,發送給主機。綜合按鈕和旋鈕特點,根據實際需要采用了8×8的矩陣式鍵盤結構[3],前4行為按鈕,后4行為旋鈕。以列信號為掃描輸出信號,行信號為檢測輸入信號。
掃描電路的核心是單片機。一般掃描電路用一個I/O口輸出掃描信號,另一個I/O口讀入檢測信號。P89LPC922只有兩組I/O雙向口:P0口和P1口。P1口需要定義一些讀寫控制信號,所以只用一個P0口輸出掃描信號及輸入檢測信號,這樣P0口就存在讀寫控制和時序問題。既要輸出列值又要讀入行值,必須要有數據鎖存器和緩沖器之類的芯片配合完成。設計時采用了數據鎖存器74ALS373和總線接收/發送器74ALS245。單片機的引腳P1.4控制74ALS245的輸出使能端,如圖3中的②;P1.7控制74ALS373的數據鎖存端,如圖3中的①;P1.3控制74ALS245的數據傳送方向,如圖3中的③(這里為恒為低,從245到單片機的P0口)。
掃描電路的工作原理是:單片機先讓②為高,使74ALS245輸出為高阻態,然后從P0口輸出列掃描數據,再給①高電平,延時后將①變低,使74ALS373鎖存列掃描信號,將②變低使74ALS245輸出有效,由于數據方向恒定,這樣行值數據就從245輸入到單片機的P0口。
為了將按鈕和旋鈕的掃描統一起來,我們把正旋和反旋當做不同的兩個按鈕按下,旋鈕的正旋或反旋也對應唯一的行值和列值。這里的巧妙之處就是采用了三態緩沖器74LS240,每個旋鈕電路的輸出信號⑥和⑦(即前面圖2鑒相電路輸出)分別接到74LS240的兩組輸入端,兩組數據的輸出都接到4根行線,由列掃描線控制輸出哪一組數據。比如:掃描第二列,⑦對應那組輸出到4根行線供單片機讀入,此時⑥對應那組的輸出被禁止。若第二列有旋鈕正旋,則其對應的⑦上有脈沖,經240反相后,單片機檢測到低電平數據,與按鈕按下的情況一致。圖3中只用了一片74LS240,可以接4個旋鈕,這個電路可以擴充到四片74LS240接16個旋鈕。
1.3 與主機通信電路設計
用串口與PC機通信要用串口連線,我們將其3、5腳引出,通過一片MAX232,即可與單片機的串口連接,其電路相對簡單,這里不多做敘述了。外部晶振頻率選用高頻晶振12MHZ,用922自帶的波特率發生器,設置波特率為9600,每個字節發送時間約1ms,可以滿足高速率和準確性的要求。波特率太低影響速度,太高影響串口數據傳輸的正確性。
2 軟件實現
2.1 按鍵的抗干擾處理
通常當按鍵按下以后(不考慮人的操作因素),會有一個5-10ms的抖動期,用軟件延時來進行去抖處理。當按鍵釋放后才向主機發送數據,具體方法是用狀態機,將按鍵過程分成以下幾個狀態S0—S4,如圖4所示:
沒有按鈕動作時,檢測線都為高電平,保持在S0狀態;掃描面板,當某個按鈕按下(相應檢測線為低電平)進入S1狀態;完成去抖延時(T0中斷20次)后進入S2狀態,再次掃描面板,檢測到低電平且為同一個按鈕(行、列線相同)進入S3狀態,沒有檢測到低電平或者不為同一個按鈕則再次進入S0狀態;按鈕釋放后進入S4狀態,給主機發送按鈕編號,發送完成進入S0狀態。
2.2 旋鈕的抗干擾處理
與檔位開關一樣,旋鈕轉動一周會有若干停頓點。停頓點較少的旋鈕[2][4]在停止轉動時1、2腳總會處于一個穩定的低電平。而停頓點較多的旋鈕在停止轉動時則電平狀態不定,1、2腳有可能處于高電平也可能處于低電平(如圖1),所以不可用與之類似的任何檢測電平狀態的方法來判斷旋鈕的轉動。
用示波器分析波形后得知,不管1、2腳最終狀態如何,只要轉動旋鈕就會有電平變化,從高到低,或從低到高,所以選用動態的邊沿掃描。除了在剛上電的時候需要掃描獲得每個旋鈕的初始狀態,每過一段時間都要定時掃描旋鈕狀態,一旦有電平變化(上升沿/下降沿),就認為是一次有效的轉動。定時的時間確定為1ms[5],因為即使很快轉動旋鈕的情況下,每次脈沖高電平寬度一般都有十幾到幾十毫秒。在設計時可用1個字的位向量pre_knob和cur_knob分別保存最近的兩次掃描結果,每位對應一個旋鈕。低電平時相應位置1,高電平置0,用下降沿判斷(即10時)認為對應位的旋鈕有轉動。
2.3 旋鈕轉動量的計算
旋鈕轉動量的計算方法也是本文討論的一個重點。旋鈕轉動的時候,可以轉動一個停頓點就發一次,但會增加通信量和主機的處理負擔,而且單片機的任務非常單一,即檢測前面板的動作,資源利用也不多,因此可以用單片機計算出旋鈕轉動量后一起發送給主機。
方法是:給每個旋鈕配置1個字節的發送緩沖保存轉動量。每當旋鈕轉動一個停頓點,單片機就檢測發送緩沖是否為空,不為空則將緩沖中的轉動量加1,若為空則發送旋鈕編號給主機,等待主機響應,此時旋鈕繼續轉動,轉動量不斷增加,主機響應后再將發送緩沖里的轉動量發送給主機,發送完成后清空緩沖。
3 結論
完成硬件和軟件設計之后,仿真調試,燒錄單片機,將電路板與PC機連接,操作電路板上的按鈕和旋鈕,結果表明按鈕和旋鈕識別及時準確,完全符合實時操作的要求。并已應用于課題組的數字存儲大功率半導體管特性曲線圖示儀中。
本文采用的面板設計具有成本低、周期短、可擴展、設計靈活、安全可靠等優點。可以根據實際需要增加功能按鍵,而不需要重做軟件設計。可以為相關領域研究人員提供一種可供參考的面板設計方法。
-
處理器
+關注
關注
68文章
19833瀏覽量
233945 -
芯片
+關注
關注
459文章
52308瀏覽量
437875 -
單片機
+關注
關注
6065文章
44946瀏覽量
648263
發布評論請先 登錄
iPhone 5前面板暗藏神秘芯片,NFC?指紋識別?

基于P89LPC922的新型數顯測速控制系統設計
EXE關閉前面板怎么實現?
P89LPC906/P89LPC907/P89LPC908,
基于單片機的智能儀器前面板的設計實現
基于P89LPC922單片機的汽車后車窗控制器設計
基于P89LPC922的數顯測速系統

華為P40前面板諜照疑似曝光,前置打孔攝像頭設計
基于CC1100和P89LPC922微控制器實現無線傳輸測試系統的設計

評論