湘潭大学信息工程学院 韩建超 朱耀文 李春晓 陈 果 倪能聪 熊彬彬
基于ADS7843的四线式电阻屏驱动设计
湘潭大学信息工程学院 韩建超 朱耀文 李春晓 陈 果 倪能聪 熊彬彬
四线式电阻屏在现代电子设备中广泛应用。传统的驱动方法为CPU直接驱动,占用CPU的I/O资源较多,控制复杂且不稳定。设计的基于ADS7843的四线式电阻屏驱动, CPU只需通过串口向驱动芯片发出控制指令即可实现控制效果,占用CPU资源较少,通信效果稳定。以51单片机作为控制CPU进行实验验证,结果证明了驱动电路及程序的可靠性。该驱动电路简单有效易于实现,程序可靠便于移植,有一定的实用价值。
ADS7843;四线式电阻屏;驱动电路;51单片机;驱动程序
在现代电子产品及工业产品的设计中,电阻式触摸屏具有轻便小巧、功能可靠、坚固耐用等优点得到广泛的应用。尤其是其价格低廉、稳定性好、精度高、不受灰尘油污等影响的优势使其在工业触摸设备中占到很大的市场份额。文章主要介绍四线电阻式触摸屏的结构,及基于ADS7843的驱动电路和程序设计,并以51单片机作为控制CPU进行实验验证。
1.1 电阻屏基本结构
四线式电阻屏的基本结构是在一块以玻璃或丙烯酸为材料的基板上覆盖两层平整透明、均匀导电的ITO(导电玻璃)层;这两层ITO分别作为X(坐标)电极和Y(坐标)电极,他们被均匀排列的绝缘透明格点分开。其中下层的ITO附着在基板,上层的ITO附着在PET薄膜上。从X电极和Y电极的两端引出的 “导电条”分别作为电极的正负极,且两根导电条的位置相互垂直。引出端一共有X-,X+,Y-,Y+四条线,这就是四线电阻屏名称的由来。当在触摸屏表面用物体触碰或对其施加适当的压力时,发生可恢复性形变的上层ITO导电层将与下层ITO产生接触。再由ADC(模数转换器)将测得的电压转化为数字信号,经过算法处理就能得到触点的坐标也即触点的实际位置。电阻式触摸屏的结构如图1所示。
1.2 触点坐标计算
触摸屏控制的关键即是触点坐标的计算,触点感受的压力信号转换成模拟量电信号,转化之后以数字量形式进入控制器,进行计算。计算触点坐标(X,Y)主要有以下两步:
首先是计算Y坐标,给Y+电极施加驱动电压信号Vd,同时将Y-电极接地;将X+电极引出作为测量点,从而得到接触点实际电压值。由于ITO层是均匀导电的,触点电压与驱动电压Vd之比和触点Y坐标与屏幕高度之比相等。
图1 电阻式触摸屏结构
计算X坐标,的步骤与计算Y坐标相同,只需将X对应的点击进行操作即可。坐标计算的等效原理图如图2所示。
式中:H为屏幕高度,W为屏幕宽度。
图2 电阻屏坐标计算等效原理图
2.1 电阻屏驱动电路
ADS7843是一款具有同步串行接口取样功能的12位数模转换芯片,常被用于四线电阻式触摸屏的驱动电路中。在2.7V电压下以125KHz的频率进行工作时,其功耗仅为750uW,关闭模式下功耗更低。因为功耗小小效率高运行稳定,ADS7843在PAD、手机等以电池供电的小型手持设备中得到了广泛的应用。
ADS7843是能够连续近似记录(SAR)的A/D转换器,可通过连结触摸屏X+触摸信号输入到A/D转换器。同时将Y+和Y-的驱动打开,然后将X+的电压数字化,经过计算便可得到Y位置的坐标测量结果。据此也可将X方向的坐标计算出来。ADS7843驱动四线式电阻屏的接口电路如图3所示。
图3 ADS7843接口电路
2.2 驱动程序设计
经过ADS7843芯片转换得到的输出结果是二进制格式的。ADS7843支持参考电压固定模式和采取差动模式,参考电压来自驱动电极。需要说明一点,进行数制换算的结果,在两种不同参考电压输入模式中是不一样的。如果选取8位的转换精度,(为参考电压),完成一次转换的时间可以提前4个时钟周期,同时也可以将串口时钟的速率提高一倍。
一次电极电压切换和A/D转换的实现,需要CPU先通过串口向ADS7843发送控制字(表1为ADS7843的控制字);等待转换结束,再通过串口将电压转换值读出。一次标准的电压切换和A/D转换需要24个时钟周期。
表1 ADS7843的控制字
ADS7843的典型接口应用电路如图3所示,该电路可以方便的与单片机等微控制器相连接,实现触摸屏的驱动控制。假设接口与51单片机的普通I/O口相连,下面以24个时钟周期为完成一次转换的周期为例介绍电压切换和A/D转换过程控制程序的设计。程序流程框图如图4所示。
在Keil软件中,以C语言格式编写的控制程序如下:
// ADS7843启动
void ADS7843_start(void)
{DCLK=0;CS=1;DIN=1;CS=0;}
// ADS7843写数据
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读数据
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中断服务函数
void intr0_int() interrupt 0 usinG 2
{uint X=0,Y=0,i;uchar a[4],b[4];uchar buf[10];
EA=0; //关中断
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坐标完成,将程序中*部分替换成相关程序段,可以读Y坐标。略。*/
图4 软件程序流程框图
连接实物电路,将相关的程序烧写到51单片机中进行实验,结果证实了该驱动程序的可靠性。按照同样的方法,将主要程序段移植到AVR单片机和ARM处理器中进行实验,也得到了很好的效果。本文介绍了一种基于ADS7843的四线式电阻屏驱动电路,并详细的介绍了驱动程序的设计过程。该驱动程序适用于AVR单片机、ARM等嵌入式设备,具有高度的可移植性,有实用价值。
[1]吴爽,赵永滨.基于ADS7846的四线电阻式触屏接口设计[J].兵工自动化,2010.
[2]郭天祥.新概念51单片机C语言教程[M].北京:电子工业出版社,2009.
[3]陈康才,李春茂.电阻式触摸屏两点触摸原理[J].科学技术与工程,2012.
[4]王静.基于单片机的数据串口通信[D].湖北荆州:长江大学,2013.