摘 要: 介绍了触摸屏工作的基本原理,设计了基于S3C44BOX嵌入式微处理器的触摸屏硬件接口电路,研究了触摸屏程序的工作机制,在此基础上给出了其核心部分程序。
1 引言
触摸屏越来越广泛地应用于嵌入式系统中。
不同的应用领域触摸屏的设计方式也各不相同,一般有以下三种: ①应用触摸屏模块。触摸屏模块提供标准的硬件接口与应用系统(一般为PC 或X86架构的工控机) 相连,安装驱动程序后即可工作,基本无需开发; ②扩展触摸屏控制器。这是嵌入式系统中设计触摸屏普遍使用的方法。常用的触摸屏控制芯片有ADS7843 ,ADS7846 等。这些芯片内部集成了A/ D 转换器和触摸屏的驱动电路,同时要设计一定的软件; ③与前面方式②相仿,有些处理器集成了A/ D 转换器,通过I/ O 口模拟触摸屏的驱动信号也可实现触摸屏的控制。
随着芯片技术的发展,处理器内部的资源越来越丰富。如韩国三星半导体公司的32 位ARM处理器S3C44B0X 芯片,其内部集成了外部存储器控制器、LCD 控制器、4 个DMA 通道、2 通道异步UART 单元、1 个同步串行口(SIO) , 1 个多主I2C总线控制器、1 个I2S 总线控制器, 5 通道PWM 定时器及1 个内部定时器、71 个通用I/ O口、8 个外部中断源、实时时钟、8 通道10 位ADC等。由于其内部集成了10 位的A/ D 转换器,可以通过S3C44BOX 的I/ O 口模拟触摸屏的驱动信号实现触摸屏的控制。
2 触摸屏工作原理
电阻式触摸屏是一块4 层的透明的复合薄膜屏,如图1 所示,最下面是玻璃或有机玻璃构成的基层,最上面是一层外表面经过硬化处理从而光滑防刮的塑料层,中间是两层金属导电层,分别在基层之上和塑料层内表面,在两导电层之间有许多细小的透明隔离点把它们隔开。当手指触摸屏幕时,平常绝缘的两层导电层在触摸点位置就有了一个接触,触摸屏的两个金属导电层是触摸屏的两个工作面,在每个工作面的两端各涂有一条银胶,成为该工作面的一对电极,若在一个工作面的电极对上施加电压,则在该工作面上就会形成均匀连续的平行电压分布。如图2 所示,每个工作面有两个电极对,当在X 方向的电极对上施加一确定的电压,而Y 方向电极对上不加电压时,在X 平行电压场中,触点处的电压值可以在Y +(或Y2) 电极上反映出来,通过测量Y + 电极对地的电压大小,便可得知触点的X 坐标值。同理,当在Y电极对上加电压,而X 电极对上不加电压时,通过测量X + 电极的电压,便可得知触点的Y坐标。
图1 触摸屏的触摸示意图
图2 测量关系
3 S3C44BOX与触摸屏的接口电路
在该系统中没有使用专用的控制器,简而代之的是用了四个三极管(两个NPN 和两个PNP) ,外加一些偏流电阻、上拉电阻和滤波电容组成,如图3 所示,其中:TS_A ,TS_B ,TS_C和TS_D 分别由S3C44B0X 的GPC0 , GPC1 , GPC2 和GPC3 控制。X+ 和Y+ 分别连接到S3C44B0X的A/ D 转换输入接口AIN0 和AIN1 上。TS_A 和TS_C在X方向施加正向电压时,在Y方向检测到X坐标的对应值,同理,TS_B 和TS_D 在Y方向施加正向电压时,在X方向检测到Y坐标的对应值,分别由AIN0 和AIN1 采集。
图3 触摸屏的接口电路
为了减少系统功耗和触摸屏所占CPU 资源,只在有落笔时触摸屏控制器才启动扫描,通过A/D 转换得到坐标的对应值,因此需在外部设计落笔检测电路,如图4 所示。中断连在EXTINT2上,设置中断为上升沿触发,平时为低, 按下屏时变高产生中断。
图4 落笔检测电路
4 触摸屏的状态
在编写软件前, 要先对触摸屏的状态有所了解,在触摸屏的整个工作过程中,总共有3 个状态:空闲态、X 通道态和Y通道态。
在没有触摸的时候,触摸屏处于空闲态,此时,为了便于接收中断,应设置TS_A = 1 ,TS_B =1 ,TS_C = 0 和TS_D = 1.为了获得触点的X轴坐标,需要把触摸屏设置成X通道态,即TS_A= 0 ,TS_B = 1 ,TS_C = 1 和TS_D = 0.此时,通过测量Y + (AIN1) 获取X 通道上的坐标。
同理,为了获得触点的Y轴坐标,需要把触摸屏设置成Y通道态,即TS_A = 1 ,TS_B = 0 ,TS_C= 0 和TS_D = 1.此时,通过测量X+ (AIN0) 获取Y通道上的坐标。
5 系统的软件设计
整个系统软件包括触摸屏初始化、落笔中断服务程序,AD 测量子程序、滤波程序和坐标转换程序。当有触摸时, EXTINT2 变为高电平,产生中断。由S3C44B0X 响应该中断请求,进入落笔中断服务程序,在该程序中,启动AD 测量子程序,读取AD 转换结果,从而得到触点的坐标。整个过程,触摸屏在空闲态,X 通道态和Y 通道态之间转换,如图5 所示。
图5 触摸屏的状态转换
系统软件中,初始化程序、滤波程序和坐标转换程序是一般常规通用程序。AD 测量子程序是获得X 轴和Y轴坐标的关键部分,其程序如下:
/ / 获取当前的坐标
void TouchADC(uint16 3 x , uint16 3 y)
{
int i ;
rADCPSR = 10 ;
/ / 切换为X 通道态准备A/ D 转换
Set TouchX() ;
Delay(1000) ;
{
/ / 启动AIN1 通道A/ D 转换
rADCCON = 0x1 | (1 < < 2) ;
while (rADCCON & 0x1) ;
while ( ! (rADCCON & 0x40) ) ;
for (i = 0 ; i < rADCPSR ; i + + ) ;
3 x = rADCDAT ;
}
rADCPSR = 10 ;
/ / 切换为Y通道模式准备A/ D 转换
Set TouchY() ;
/ / 在X/ Y通道切换时要延时以使触摸屏稳定下来
Delay(1000) ;
{
/ / 启动AIN0 通道A/ D 转换
rADCCON = 0x1| (0 < < 2) ;
while (rADCCON & 0x1) ;
while ( ! (rADCCON & 0x40) ) ;
for (i = 0 ; i < rADCPSR ; i + + ) ;
3 y = rADCDAT ;
}
/ / 切换为空闲态,等待中断发生
Set TouchIdle() ;
/ / 输出显示X ,Y坐标数值
Out Put (0 ,″(X ,Y) = ( %3d , %3d) \ n″, 3 x , 3 y) ;
}
6 结语
触摸屏已成为现代嵌入式设备人机交互的首选输入设备。本文详细介绍了触摸屏的工作原理,以三星公司ARM7 内核芯片S3C44B0X 为基础,完成了触摸屏的软硬件设计,实践证明系统稳定可靠,满足了在复杂的多任务环境中触摸屏快速响应的要求。
参考文献:
[1].PC datasheethttp://www.dzsc.com/datasheet/PC+_2043275.html.
[2].S3C44B0X datasheethttp://www.dzsc.com/datasheet/S3C44B0X+_589522.html.
[3].SIOdatasheethttp://www.dzsc.com/datasheet/SIO_2032367.html.