基于C8051 的电阻式触摸屏的校准
张旭
(四平职业大学电子工程学院, 吉林四平136000)
摘要:基于C8051F040 单片机,详细讲述了四线式电阻触摸屏与单片机的电路连接及基于此硬件系统的"三点法"校准触摸屏的方法。系统分为单片机模块,LCD 显示模块及四线式电阻触摸屏模块。在安装或使用过程中,LCD 与触摸屏之间容易产生较小的机械偏差,利用程序校准后的系统能够很好地显示触摸的内容。
关键词:C8051F040;触摸屏;三点法;校准
中图分类号:TP334.3 文献标识码:A 文章编号:1008-8725(2011)11-0055-03
0 引言
在现代生活中,触摸屏的使用越来越普遍,无论是手持设备(如手机、照相机、PDA ),还是办公设备(如银行取款机、读报机、车间控制器),都与触摸技术密切相关。触摸屏因其直观、易学和易操作而深受大众喜爱,在许多仪器中逐渐取代了老式的按键操作 设备。触摸屏分为电阻、电容、表面声波、红外线扫描和压力传感式等类,各类的工作原 理都不相同,其中以电阻触摸屏使用最广。电阻触摸屏一般以四线为主,所谓的四线是指 整个触摸系统只需要4 根线连接到控制器的I/O 上进行触摸操作的控制。
触摸屏必须与LCD 液晶显示屏合在一起使用才有意义,将触摸屏放在LCD 上,点击触 摸屏就等于点击了LCD,可以将LCD 上被点击的位置激活,从而产生相应的响应。
在生产触摸产品时,在将触摸屏与LCD 合在一起的安装过程中,总会存在一些不精确 的操作,使得触摸屏与LCD 不能完全吻合(机械偏差);或者在用户使用过程中,由于某些原因,使得触摸屏与LCD产生了机械偏差,两者之间产生平移或者成一定角度。偏差导 致用户点击的位置与所要产生的响应经常不能一致,如图2 所示的一种夸张的机械偏差意图,点PD 代表LCD 上有响应的点,点P 代表机械偏差后在触摸屏上要点击的点,也即必 须点击P 点的位置才能让LCD 上的PD 有响应,这显然不是用户所希望的。这时要么重新将触摸屏与LCD 对准,要么进行触摸屏的校准,而采用一键校准的操作显得更加方便和简 捷。所谓校准也就是即使触摸屏与LCD 屏平移和/或旋转了,通过校准,仍能精确地点击屏上的点而产生响应。
1 系统框图及硬件设计
系统框图见图1。系统由单片机模块、触摸屏模块及LCD 模块三部分构成。单片机模 块包括主芯片C8051F040 及其它的一些外围辅助电路。
C8051F040 芯片是由Cygnal 集成产品公司生产设计的混合信号系统级芯片(SoC), 具有与MCS-51 指令集完全兼容的高速CIP-51 内核;峰值速度可达25MIPS,在一个芯片内
集成了构成一个单片机数据采集或控制系统所需要的几乎所有模拟和数字外设及其它功能 部件,具有大容量的可在系统(ISP)和在应用(IAP) 编程的FLASH 存储器。同时,C8051F 单片机与MSC-51 指令集完全兼容,方便用户编程应用。
VCC 模块采用LM1117 芯片,通过5V 电源转换成3.3V 电源供给C8051F040 使用。
JTAG 接口是用户程序下载口,利用C8051 芯片的TMS,TCK,TDI,TDO 四个接口与10 针的接头相连,通过USB 转换器与电脑相连,在电脑上编写的程序可以方便地下载到C8051F040 中。
晶振采用22.1184 MHz 的振源,与单片机的XTAL1 和XTAL2 相连,供给单片机工作时钟。
触摸屏和LCD 模块均使用的是单片机的固定I/O 口,其中触摸屏模块利用AD7843 芯片[2]驱动3.5寸的四线式电阻触摸屏,AD7843 的DCLK,CS,DIN,BUSY,DOUT 和PENTRQ 与单片机的P1.0~P1.5 相连,AD7843 的X+,X-,Y+,Y-四个引脚与四线式触摸屏相连;LCD 模块利用11 个I/O 与单片机相连,其中DB0~DB7 与单片机的P2.0~P2.7 相连,CS,RS,WR 与P3.4~P3.6 相连。
2 “三点法”校准的基本原理
2.1 校准算法介绍
触摸屏与LCD 之间的机械偏差会导致错误点击或点击不中。
为了容易理解,先分析LCD 和触摸屏的左下角在同一点的情况,仅仅是触摸屏绕着该点旋转了一个小角度,如图2 所示。分析时,可以以LCD 的左下角为坐标原点,将LCD 定义为XOY 坐标系。
如图2, 在坐标系XOY 中,点PD 是LCD 上的点,P 是旋转后的触摸屏上的对应点,也即点击P 点可以让PD 点产生响应。设点PD 的坐标为(XD,YD),其与原点O 的距离为RD,设P 点的坐标为(X,Y),其与O 点的距离为R。由上图可得如下关系式:
θD=θ-θq
PD=(XD,YD)=(RDcosθD,RDsinθD)=(RDcos(θ-θq),RDsin
(θ-θq))=(RD(cosθcosθq+sinθsinθq),RD(sinθcosθqcosθsinθq)) (1)
若θq 比较小,也即触摸屏只与LCD 有一个小角度(小于15°)的旋转偏差。则有:sinθq=θq,cosθq=1
代入(1)式有:PD=(RD(cosθ+θq•sinθ),PD(sinθ-θq•cosθ)
故有:XD=RDcosθ+θqRDsinθ,YD=RDsinθ-θqRDcosθ
触摸屏和LCD 屏所用的尺寸虽然相同,但是分辨率却不同,比如触摸屏的分辨率为2048*2048,而LCD 的分辨率为320*240,这样导致的结果是空间上相同长度的线段在触摸屏上和在LCD 上代表的长度是不同的。可设:
X 方向上:RD=KXR
Y 方向上:RD=KYR
其中KX, KY 是某一常系数,与触摸屏和LCD 屏的分辨率有关。则根据
XD=RDcosθ+θqRDsinθ
YD=RDsinθ-θqRDcosθ
可以有:
XD=KXRcosθ+θqKXRsinθ
YD=KYRsinθ-θqKYRcosθ
又因为P=(X,Y)=(Rcosθ,Rsinθ)
所以:XD=KXX+θqKXY,YD=-θqKYX+KYY
可设:A=KX,B=θqKX,D=-θqKY,E=KY
于是:XD=AX+BY,YD=DX+EY (2)
上面分析的只是触摸屏与LCD 屏在同一原点下有个小角度的旋转的情况,对于在旋转基础上再加上有平移的情况,设在X 方向上平移了C 距离,在Y 方向上平移了F 距离,根据坐标平移的原理,(2)式可以变换如下:
XD=AX+BY+C,YD=DX+EY+F (3)
(3)式中,(X,Y)是触摸屏上的坐标,(XD,YD)是LCD 上的坐标。
2.2 校准算法验证
从上面(3)式可以看出,XD 与(X,Y)之间存在A,B,C 三个未知变量,YD 与(X,Y)之间存在D,E,F 三个未知变量。因此只需点击LCD 上事先设定好的3 个(XD,YD)点,在触摸屏得到3 组(X,Y)点,即可解出A~F 的值,也即知道触摸屏与LCD 之间的坐标关系,以此即可校准触摸屏。设在LCD 上事先设定的3 个比较分开的点为:(XD1,YD1),(XD2,YD2),(XD3,YD3),透过触摸屏点击这3个点得到的触摸屏上的坐标点分别对应为(X1,Y1),(X2,Y2),(X3,Y3)。
于是得到关系方程组:
XD1=AX1+BY1+C
YD1=DX1+EY1+F
XD2=AX2+BY2+C
YD2=DX2+EY2+F
XD3=AX3+BY3+C
YD3=DX3+EY3+F
解上面的六元一次方程组,即可得到A~F 的值。当A~F 的值已知时,(3)式也就确定了,产生了机械偏差后的触摸屏与LCD 之间就有了明确的关系。当透过触摸屏点击LCD 上未知某处时,通过得到的触摸屏(X,Y)点代入(3)式,即可解出LCD上精确对应的点(XD,YD),让此处产生响应。
3 软件实现
基于C8051F040 单片机的触摸屏校准程序,采用的是新华龙电子有限公司Silicon Labs IDE 软件。
它是一套完整的软件程序设计软件,提供了用于开发和测试项目的所有工具。使用Silicon Labs IDE编译、链接和运行程序时,必须提前在电脑里安装完整版Keil 8051 工具,在Tool Chain Integration 对话框中为Keil 8051 工具重新设置路径。
在Silicon Labs IDE 工具中编写C8051F040 的外围程序,首先让C8051F040 能够工作,同时识别LCD 和触摸屏,并能在LCD 上写数据,能够识别触摸屏上的触点坐标[5-6]。在此基础上,再编写触摸屏的校准程序,流程图如图3 所示。
nclick="window.open('/file/uploads/allimg/120315/3_120315115231_1.jpg')" border="0" alt="图3 触摸屏校准程序流程图" src=//sjb.91mobiles.cn/skin/default/image/nopic.gif _fcksavedurl=//sjb.91mobiles.cn/skin/default/image/nopic.gif />
图3 触摸屏校准程序流程图
4 结论
基于C8051F040 单片机,设计了在此单片机上如何进行四线式触摸屏和LCD 屏的硬件连接,分析了基于此硬件系统的触摸屏校准程序的算法实现及软件编写。实验发现,该方法能够很好地针对触摸屏与LCD 屏之间存在旋转偏差角度小于15°的系统进行一键校准,校准后的系统能够达到点击后精确响应的用户要求。
参考文献:
[1] 潘琢金.C8051F 单片机应用解析[M].北京:北京航空航天大学出版社,2002.
[2] ADS7843. Datasheet. BURR-BROWN.1998.
[3] 胡冰,吴升艳.ADS7843 触摸屏接口[J].国外电子元器件,2002(7):27-29.
[4] 周超,王琛,方彦军.基于W77E58 的LCD 控制及触摸屏接口设计[J].仪表技术与传感器,2009(3):70-71.
[5] 黄彬.基于单片机的液晶触摸屏控制系统[J].工业控制计算机,2005(7):50-51.
[6] LCD-320G240D. Datasheet. VISHAY. 2002.