摘要:觸摸屏作為人機界面應用于氣相色譜儀控制系統,在彩色LCD的配合下可實現可視化控制。本系統是基于S3C44B0嵌入式開發平臺,但是此處理器無SPI總線接口寄存器,只能通過軟件模擬SPI,實現與ADS7846通信。文中給出了觸摸屏數據采集的流程和用C語言實現的模擬SPI通信程序。
1、引言
氣相色譜儀是應用面極廣,數量較大的分析儀器中zui重要的一大類科學儀器。在石油、天然氣、精細化工、冶金、電力、醫學、衛生、糧油、食品、環保、氣體、技術監督和國防科研等領域中,幾乎成為現代分析化學實驗室*的分析儀器之一。隨著氣相色譜儀的普及,客戶對系統的要求逐步提高,不僅要求其有良好的運轉性能,而且需要實時、直觀地顯示工作狀態,要求操作人員根據實際情況方便地調整系統的工作參數,數據的采集、分析、判斷、參數顯示。為此,我們設計開發了可視化的控制系統,能夠可視化地顯示系統狀態、提供*圖形化的操作方法,而且成本較低。
2、氣相色譜儀原理及系統結構
色相色譜儀技術的基本原理是(如圖1):當氣體樣品通過一定的進樣方式送入色譜系統后,樣品中混合物的各組分在流動相(載氣)的帶動下,通過稱為色譜柱的固定相,利用各組分在流動相中具有不同的吸附能力,當二相作相對運動時,樣品中各組分就會在二相中反復多次(103~106)受到上述各種作用力的作用,從而使混合物中各組分獲得分離,被分離后的單一組分隨載氣進入檢測器的系統,獲得非電量轉換,將化學成分轉變成與其濃度成正比的電信號,然后通過這些電信號的不同來分析樣品成分。
圖1氣相色譜儀系統結構框圖
如圖1所示,該氣相色譜儀的控制系統主要由嵌入式控制系統(MCU)、一個溫度檢測器、一個載氣流量檢測控制器和一個樣品流量檢測控制、再加一個高阻抗放大器(帶光電隔離器)組成,其主要特點是MCU外接了帶觸摸屏的彩色LCD作為人機界面。本系統的工作原理是首先通過觸摸屏上不同的觸點使MCU分別向載氣和樣品流量控制器發送參數設定指令,為了達到可靠性,此命令通過RS485串口總線發送;啟動這個檢測系統后,可以通過觸摸屏實時的發送查詢各檢測器狀態的指令,當溫度檢測器,流量檢測控制器收到指令后,符合自己的,則把自己的狀態信息也通過RS485串口總線發送到MCU,MCU收到數據后在彩色LCD顯示相應的信息,如溫度曲線、流量曲線等;色譜儀的檢測器把檢測到的信息通過高阻抗放大器變化以后把檢測到的結果顯示在LCD上,直觀的查看樣品的成分。同時,MCU通過以太網把收到的數據傳到PC機上,做備份;PC終端也可通過MCU對系統進行參數設定。為了協調MCU和各檢測控制器的通信,我們自己制定了一套內部通信協議。整個系統都是按照LCD上的提示,通過觸摸屏來控制的。
3、硬件實現
我們開發了ARM7開發板(處理器為SAMSUNG公司的ARM7TDMI內核的S3C44B0,數據位寬是32位,主頻可達66MHZ)作為中低端嵌入式系統的硬件平臺。此處理器內建了LCD控制器(zui大支持256色STN,使用DMA);2個異步串口控制器(支持IrDA1.0,16字節的FIFO);提供復合功能的71個通用I/O端口,供我們外接其他設備。
本系統的觸摸屏采用了AMD公司的電阻式觸摸屏AMT9502型,該電阻觸摸屏的屏體部分是一塊與顯示器表面非常配合的多層復合薄膜,由一層有機玻璃作為基層,表面涂有一層透明的導電層,上面再蓋有一層外表面硬化處理、光滑防刮的塑料層,它的內表面涂有一層透明導電層,在兩層導電層之間有許多細小(小于1/1000英寸)的透明隔離點把它們隔開絕緣。當筆觸摸屏幕時,兩層導電層在觸摸點位置就有了接觸,電阻發生變化,在X和Y兩個方向上產生信號,然后送觸摸屏控制器,計算出(X,Y)的位置。
觸摸屏控制芯片采用的是TI公司的模數轉換芯片ADS7846,此芯片是一種典型的12位取樣的逐步近似寄存器(SAR)A/D轉換器。除了基本的觸摸點位置的測量外,還可進行觸摸壓力的測量。芯片內部提供的2.5v參考電壓可用于輔助輸入,電池監控器和溫度測量。其自動節電功能可以保證很低的功率損耗,對于低功耗的嵌入式系統電路非常適合。本文只應用其作為觸摸屏控制器的基本功能。
ADS7846經過A/D把坐標值傳給MCU,MCU經過處理后在LCD上顯示相應的信息或通過RS485發出相應的指令;ADS7846同時能接收MCU發來的命令并加以執行。ADS7846和外部進行數據交換是使用SPI總線,而S3C44B0沒有SPI總線接口,所以只能采用通用I/O口軟件模擬SPI,詳細硬件接線如圖2。
圖2.觸摸屏硬件連接圖
4、軟件實現
為了獲得一個坐標值,ADS7846與MCU之間需經過3個SPI的時鐘傳送(見圖4)。*次從DIN向ADS7846發送測量命令字(見表1,設置見表2)。當ADS7846接收到命令字的前五位后,A/D轉換器進入采樣階段??刂谱止澼斎胪戤吅?,等待BUSY為低后,在每個DCLK的下降沿,A/D轉換的坐標值從高位到低位逐位從DOUT引腳向MCU輸出。12位的A/D轉換結果數據在第13個DCLK時鐘傳送完畢。因此,有效數據是前12位,后面4位補0。
圖3ADS794624個Clock的時序轉換圖
表1ADS7846測量命令字(8bit)
表2差分方式下(SER/DFRlow)命令字與測量坐標值的關系
1)S3C44B0的初始化處理
由于S3C44B0沒有SPI接口,本文采用通用IO口模擬SPI,具體寄存器設置如下:
通常ADS7846工作在筆中斷模式,ADS7846檢測到筆落下時,通過發出中斷信號,S3C44B0的EINT3在下降沿觸發的情況下,進入中斷服務子程序。我們在程序中定義了兩個全局變量,一個用來記錄經ADS7846轉換后輸出觸點的X和Y坐標值,另一個用來表示筆的當前工作狀態:
staticstructpen_position{
unsignedshortx;
unsignedshorty;
unsignedcharpen_state;
}first,second;
其中pen_state的值反映筆的狀態,為0是表示筆抬起,為1時筆落下。在對I/O寄存器的適當配置后,首先,S3C44B0通過DIN向ADS7846發送一個空命令字0x80(PD1,PD0都為0)來啟動中斷功能,使為高,才能響應筆中斷的產生。C語言實現發送命令字程序如下:
voidSend_controlbit(intcmd)
?。?hellip;…
for(i=0;i#lt;8;i)
?。?br />
rPDATF=(cmd#gt;#gt;(7-i));/*通過PF0逐位輸出控制比特*/
Delay(20);//delay20ns
rPDATG|=0x40;/*使PG6為1,即DCLK為高*/
Delay(220);/*delay220ns*/
rPDATG#=0xBF;/*使PG6為0,即DCLK為低*/
Delay(200);/*delay200ns*/
}
?。?br />
2)數據的采集
圖5數據采集流程
為了使系統實時的響應外部中斷處理,在進入筆中斷服務程序以后,把pen_state變為1,立即跳出中斷,程序隨即進入坐標值轉換和讀取階段,具體流程見圖5。要完成X、Y坐標值的轉換和讀取,MCU需分別向ADS7846發測量命令字,X坐標測量命令字(0xD3)、Y坐標測量命令字(0x93)。讀取坐標值的C程序如下:
intTouch_GetXY()
?。?hellip;…
for(i=;i#lt;16;i)
?。鹯PDATG|=0x40;/*DCLK為高*/
temp=(rPDATF#gt;#gt;7);
temp#=0x1;/*通過PF7逐位讀取坐標值*/
data|=temp#lt;#lt;(15-i);/*把數據暫存在temp1*/
Delay(220);/*delay220ns*/
rPDATG#=0xBF;/*DCLK為低*/
Delay(220);/*delay220ns*/
}
data#=0xffff;
data=(data#gt;#gt;4);/*剔除后面4個0*/
return(data);/*返回坐標值*/
?。?br />
由于筆與觸摸屏接觸的壓力大小、時間長短,會導致觸點的抖動,這對于采集正確的觸點位置值有一定的影響。本文采用兩次采樣的方法來消除觸點的抖動,在程序中定義了一個計數器count,計算采樣次數,當讀取兩次后跳出采樣程序。得到兩次坐標值分別為(fisrt.x,first.y)、(second.x,second.y),然后比較其差值,如果小于一定的值,則有效,并取其平均值;否則判為采樣錯誤,重新采樣。
通過觸摸屏和LCD的配合,此種方法取得了較好的實際效果,基本上消除了觸點抖動的影響。
5、總結
本文所介紹的程序已經在S3C44B0平臺上經過實際驗證,并與彩色LCD相配合,可提供可視化的人機界面。本系統應用到了氣相色譜儀工作站上,操作者可以直觀的查看溫度檢測器、流量控制器的運行狀況,同時可以實時地修改控制參數,系統穩定性良好。