湘潭大學(xué)信息工程學(xué)院 韓建超 朱耀文 李春曉 陳 果 倪能聰 熊彬彬
基于ADS7843的四線式電阻屏驅(qū)動設(shè)計
湘潭大學(xué)信息工程學(xué)院 韓建超 朱耀文 李春曉 陳 果 倪能聰 熊彬彬
四線式電阻屏在現(xiàn)代電子設(shè)備中廣泛應(yīng)用。傳統(tǒng)的驅(qū)動方法為CPU直接驅(qū)動,占用CPU的I/O資源較多,控制復(fù)雜且不穩(wěn)定。設(shè)計的基于ADS7843的四線式電阻屏驅(qū)動, CPU只需通過串口向驅(qū)動芯片發(fā)出控制指令即可實現(xiàn)控制效果,占用CPU資源較少,通信效果穩(wěn)定。以51單片機作為控制CPU進行實驗驗證,結(jié)果證明了驅(qū)動電路及程序的可靠性。該驅(qū)動電路簡單有效易于實現(xiàn),程序可靠便于移植,有一定的實用價值。
ADS7843;四線式電阻屏;驅(qū)動電路;51單片機;驅(qū)動程序
在現(xiàn)代電子產(chǎn)品及工業(yè)產(chǎn)品的設(shè)計中,電阻式觸摸屏具有輕便小巧、功能可靠、堅固耐用等優(yōu)點得到廣泛的應(yīng)用。尤其是其價格低廉、穩(wěn)定性好、精度高、不受灰塵油污等影響的優(yōu)勢使其在工業(yè)觸摸設(shè)備中占到很大的市場份額。文章主要介紹四線電阻式觸摸屏的結(jié)構(gòu),及基于ADS7843的驅(qū)動電路和程序設(shè)計,并以51單片機作為控制CPU進行實驗驗證。
1.1 電阻屏基本結(jié)構(gòu)
四線式電阻屏的基本結(jié)構(gòu)是在一塊以玻璃或丙烯酸為材料的基板上覆蓋兩層平整透明、均勻?qū)щ姷腎TO(導(dǎo)電玻璃)層;這兩層ITO分別作為X(坐標)電極和Y(坐標)電極,他們被均勻排列的絕緣透明格點分開。其中下層的ITO附著在基板,上層的ITO附著在PET薄膜上。從X電極和Y電極的兩端引出的 “導(dǎo)電條”分別作為電極的正負極,且兩根導(dǎo)電條的位置相互垂直。引出端一共有X-,X+,Y-,Y+四條線,這就是四線電阻屏名稱的由來。當在觸摸屏表面用物體觸碰或?qū)ζ涫┘舆m當?shù)膲毫r,發(fā)生可恢復(fù)性形變的上層ITO導(dǎo)電層將與下層ITO產(chǎn)生接觸。再由ADC(模數(shù)轉(zhuǎn)換器)將測得的電壓轉(zhuǎn)化為數(shù)字信號,經(jīng)過算法處理就能得到觸點的坐標也即觸點的實際位置。電阻式觸摸屏的結(jié)構(gòu)如圖1所示。
1.2 觸點坐標計算
觸摸屏控制的關(guān)鍵即是觸點坐標的計算,觸點感受的壓力信號轉(zhuǎn)換成模擬量電信號,轉(zhuǎn)化之后以數(shù)字量形式進入控制器,進行計算。計算觸點坐標(X,Y)主要有以下兩步:
首先是計算Y坐標,給Y+電極施加驅(qū)動電壓信號Vd,同時將Y-電極接地;將X+電極引出作為測量點,從而得到接觸點實際電壓值。由于ITO層是均勻?qū)щ姷?觸點電壓與驅(qū)動電壓Vd之比和觸點Y坐標與屏幕高度之比相等。
圖1 電阻式觸摸屏結(jié)構(gòu)
計算X坐標,的步驟與計算Y坐標相同,只需將X對應(yīng)的點擊進行操作即可。坐標計算的等效原理圖如圖2所示。
式中:H為屏幕高度,W為屏幕寬度。
圖2 電阻屏坐標計算等效原理圖
2.1 電阻屏驅(qū)動電路
ADS7843是一款具有同步串行接口取樣功能的12位數(shù)模轉(zhuǎn)換芯片,常被用于四線電阻式觸摸屏的驅(qū)動電路中。在2.7V電壓下以125KHz的頻率進行工作時,其功耗僅為750uW,關(guān)閉模式下功耗更低。因為功耗小小效率高運行穩(wěn)定,ADS7843在PAD、手機等以電池供電的小型手持設(shè)備中得到了廣泛的應(yīng)用。
ADS7843是能夠連續(xù)近似記錄(SAR)的A/D轉(zhuǎn)換器,可通過連結(jié)觸摸屏X+觸摸信號輸入到A/D轉(zhuǎn)換器。同時將Y+和Y-的驅(qū)動打開,然后將X+的電壓數(shù)字化,經(jīng)過計算便可得到Y(jié)位置的坐標測量結(jié)果。據(jù)此也可將X方向的坐標計算出來。ADS7843驅(qū)動四線式電阻屏的接口電路如圖3所示。
圖3 ADS7843接口電路
2.2 驅(qū)動程序設(shè)計
經(jīng)過ADS7843芯片轉(zhuǎn)換得到的輸出結(jié)果是二進制格式的。ADS7843支持參考電壓固定模式和采取差動模式,參考電壓來自驅(qū)動電極。需要說明一點,進行數(shù)制換算的結(jié)果,在兩種不同參考電壓輸入模式中是不一樣的。如果選取8位的轉(zhuǎn)換精度,(為參考電壓),完成一次轉(zhuǎn)換的時間可以提前4個時鐘周期,同時也可以將串口時鐘的速率提高一倍。
一次電極電壓切換和A/D轉(zhuǎn)換的實現(xiàn),需要CPU先通過串口向ADS7843發(fā)送控制字(表1為ADS7843的控制字);等待轉(zhuǎn)換結(jié)束,再通過串口將電壓轉(zhuǎn)換值讀出。一次標準的電壓切換和A/D轉(zhuǎn)換需要24個時鐘周期。
表1 ADS7843的控制字
ADS7843的典型接口應(yīng)用電路如圖3所示,該電路可以方便的與單片機等微控制器相連接,實現(xiàn)觸摸屏的驅(qū)動控制。假設(shè)接口與51單片機的普通I/O口相連,下面以24個時鐘周期為完成一次轉(zhuǎn)換的周期為例介紹電壓切換和A/D轉(zhuǎn)換過程控制程序的設(shè)計。程序流程框圖如圖4所示。
在Keil軟件中,以C語言格式編寫的控制程序如下:
// ADS7843啟動
void ADS7843_start(void)
{DCLK=0;CS=1;DIN=1;CS=0;}
// ADS7843寫數(shù)據(jù)
void ADS7843_wr(uchar dat)
{uchar count;DCLK=0;
for(count=0;count<8;count++)
{dat<<=1;DIN=CY;
DCLK=0;_nop_();_nop_();_nop_();_nop_();
DCLK=1;_nop_();_nop_();_nop_();_nop_(); }}
// ADS7843讀數(shù)據(jù)
uint ADS7843_rd(void)
{uchar count=0;uint date=0;
for(count=0;count<12;count++)
{date<<=1;
DCLK=1;_nop_();_nop_();_nop_();_nop_(); DCLK= 0;_nop_();_nop_();_nop_();_nop_();
if(DOUT==1) date++;}return(date);}
//外中斷0中斷服務(wù)函數(shù)
void intr0_int() interrupt 0 usinG 2
{uint X=0,Y=0,i;uchar a[4],b[4];uchar buf[10];
EA=0; //關(guān)中斷
delay_ms(1); //中斷延時以消抖
if(!PENIRQ) //判斷終端標志位
{ADS7843_start();delay_ms(1);
//送控制字,以差分方式讀X坐標
ADS7843_wr(0xD0);
DCLK=0; _nop_();_nop_();_nop_();_nop_();
X=ADS7843_rd(); //讀X軸坐標
for(i=0;i++;i<4){
DCLK=1;_nop_();_nop_();_nop_();
DCLK=0;_nop_();_nop_();_nop_();}
}EA=1; //開中斷 }
/*程序至此讀取X坐標完成,將程序中*部分替換成相關(guān)程序段,可以讀Y坐標。略。*/
圖4 軟件程序流程框圖
連接實物電路,將相關(guān)的程序燒寫到51單片機中進行實驗,結(jié)果證實了該驅(qū)動程序的可靠性。按照同樣的方法,將主要程序段移植到AVR單片機和ARM處理器中進行實驗,也得到了很好的效果。本文介紹了一種基于ADS7843的四線式電阻屏驅(qū)動電路,并詳細的介紹了驅(qū)動程序的設(shè)計過程。該驅(qū)動程序適用于AVR單片機、ARM等嵌入式設(shè)備,具有高度的可移植性,有實用價值。
[1]吳爽,趙永濱.基于ADS7846的四線電阻式觸屏接口設(shè)計[J].兵工自動化,2010.
[2]郭天祥.新概念51單片機C語言教程[M].北京:電子工業(yè)出版社,2009.
[3]陳康才,李春茂.電阻式觸摸屏兩點觸摸原理[J].科學(xué)技術(shù)與工程,2012.
[4]王靜.基于單片機的數(shù)據(jù)串口通信[D].湖北荊州:長江大學(xué),2013.