ADS7843可以通過連接觸摸屏X+將觸摸信號輸入到A/D轉換器,同時打開Y+和Y-驅動,然後再數字化X+的電壓,從而得到當前Y位置的測量結果,同理,也可以得到X坐標的邏輯坐標。當得到X、Y的邏輯坐標后,通過SPI介面將數據傳送給LM3S3748進行數據處理。其ADS7843的外部電路如圖3所示。
1.4 RS232串口電路
RS232串口主要用於手柄控制器與核心板的通信,這類似於人機介面中的鍵盤介面。它們之間通過Modbus協議進行通信。其RS232串口通信電路如圖4所示。
2 系統軟體設計
2.1 觸摸屏軟體設計
ADS7843具有兩種工作模式,分別為單端基準模式和差分基準模式。同時還可以對其進行12位或8位轉換模式的選擇。本設計採用差分基準模式和12位轉換模式,即:
WriteCharTo7843(0xD0);∥送控制字10010000,
即用差分方式+12位轉換模式,讀X坐標;
……
WriteCharTo7843(0x90);∥送控制字11010000,
即用差分方式+12位轉換模式,讀Y坐標;
CPU採用中斷方式對坐標進行讀取。當未對屏幕進行觸摸時,ADS7843的引腳PENIRQ為高電平輸出,當對屏幕有觸摸動作時,引腳PENIRQ變為低電平輸出,每當CPU檢測到這個引腳的下降沿時,系統進入中斷讀取坐標。其坐標值讀取的流程如圖5所示。當CPU在每一次獲取邏輯坐標的過程中,實際上分別對X、Y坐標進行了11次讀取,然後將讀取到的邏輯坐標值分別存入兩個數組,並且對這兩個數組中的值進行冒泡排序,使其從小到大依次排列后,再去掉最大和最小的兩個數值,並將中間值作為基準,餘下數值與基準值進行求差的絕對值運算。設計中可設定一個閥值(此閥值可根據實驗設置為5),如果絕對值大於閥值,則拋棄此值,最後將剩餘數值求和平均,並將其作為最終邏輯坐標值。這就是流程圖中「數據處理」所完成的功能。
系統中的主程序流程圖如圖6所示。其中觸摸屏校準處理採用了一種較為通用的校準演算法。由於電阻式觸摸屏有一個共性,那就是電壓成線性均勻分佈,所以,只要求出邏輯坐標與物理坐標的比例係數,就可以實現邏輯坐標與物理坐標的轉換。首先可確定5個物理坐標點。並依次在屏幕上用「+」顯示,同時將其坐標值用數組Set_x[4]保存起來(以X坐標為例)。校準過程中讀出的邏輯坐標值則用數組Read_X[3]存儲。最後求出邏輯坐標與物理坐標的比例係數:
K1=(Read_x[1]-Read_x[0])/Set_X[1]-Set_x[0]);
K2=(Read_X[3]-Read_X[2])/Set_X[3]-Set_x[2]);
KX=(K1+K2)/2; ∥對兩次運算的值求平均得到最終的X比例係數
求得比例係數后,再以設置的第5點作為基準點(Set_X[4]),這樣就可求出任意觸摸點的物理坐標:
X=(ReadX-Read_X[5])/KX+Set_X[4];
同理,也可求出Y軸的物理坐標。
2.2 Modbus通信協議
本系統採用Modbus作為手柄控制器與核心板之間的通信協議。Modbus通信使用主-從技術,即僅一設備(主設備)能初始化傳輸(查詢),其它設備(從設備)根據主設備查詢提供的數據作出相應反應,主機查詢和從機回復的消息結構如圖7所示。主設備可單獨和從設備通信,也可以廣播方式和所有從設備進行通信。如果單獨通信,則從設備返回一消息作為回應;而如果是以廣播方式查詢。則不作任何回應。Modbus協議建立了主設備查詢格式,包括設備(或廣播)地址、功能代碼、所有要發送的數據錯誤檢測域。從設備回應消息也由Modbus協議構成,包括確認要行動的域、任何要返回的數據、和錯誤檢測域。如果在消息接收過程中發生錯誤,或從設備不能執行其命令,那麼,從設備將建立一個錯誤消息並把它作為回應發送出去。
Modbus協議有ASCII和RTU兩種傳輸模式,但在同一個Modbus網路上的所有設備都必須選擇相同的傳輸模式和串口參數。本設計採用RTU模式,即在消息中的每8 Bit位元組都包含兩個4 Bit的十六進位字元,因而在同樣的波特率下,可比ASCII方式傳送更多的數據。RTU模式的消息結構如圖8所示。當手柄控制器檢測到有按鍵被按下時,就將被按下鍵的鍵碼按RTU消息幀的結構並通過串口發送給核心板。核心板接收到手柄控制器發送的信息后,首先進行CRC校驗,校驗正確后,核心板將根據鍵碼進行相應操作,並且回應手柄控制器,若CRC校驗出錯,則核心板回應手柄控制器錯誤信息,從而完成一次通信后,系統便等待下一次通信。
3 結束語
本文所設計的人機介面通過實際使用證明其通訊穩定可靠,操作簡單方便,完全可以滿足醫用數據採集系統的要求。並且該設計具有很強的移植性,可以根據使用系統的複雜性進行完善。因而具有相當廣泛的使用範圍。