摘要:觸摸屏作為人機(jī)界面應(yīng)用于氣相色譜儀控制系統(tǒng),在彩色lcd的配合下可實(shí)現(xiàn)可視化控制。本系統(tǒng)是基于s3c44b0嵌入式開發(fā)平臺(tái),但是此處理器無(wú)spi總線接口寄存器,只能通過軟件模擬spi,實(shí)現(xiàn)與ads7846通信。文中給出了觸摸屏數(shù)據(jù)采集的流程和用c語(yǔ)言實(shí)現(xiàn)的模擬spi通信程序。
1、引言
氣相色譜儀是應(yīng)用面極廣,數(shù)量較大的分析儀器中zui重要的一大類科學(xué)儀器。在石油、天然氣、精細(xì)化工、冶金、電力、醫(yī)學(xué)、衛(wèi)生、糧油、食品、環(huán)保、氣體、技術(shù)監(jiān)督和國(guó)防科研等領(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)都是按照l(shuí)cd上的提示,通過觸摸屏來控制的。
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;
}first,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語(yǔ)言實(shí)現(xiàn)發(fā)送命令字程序如下:
voidsend_controlbit(intcmd)
{……
for(i=0;i#lt;8;i)
{
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*/
}
}
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()
{……
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*/
}
data#=0xffff;
data=(data#gt;#gt;4);/*剔除后面4個(gè)0*/
return(data);/*返回坐標(biāo)值*/
}
由于筆與觸摸屏接觸的壓力大小、時(shí)間長(zhǎng)短,會(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)定性良好。