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