桃花源qm花论坛(品茶),凤楼阁论坛官网入口网址,一品楼品凤楼论坛最新动态,风楼阁全国信息2024登录入口

你的位置:首页 > 传感技术 > 正文

四线电阻式触摸屏控制器的应用研究

发布时间:2011-01-10 来源:桂林电子科技大学

 

 

中心议题:
  • 四线电阻式触摸屏控制器设计
解决方案:
  • 硬件组成电路介绍
  • 接口电路介绍
  • 触摸屏坐标读取的软件设计介绍

摘要:介绍以C8051为核心的触摸屏控制系统的设计,分析了在系统设计过程中出现的干扰信号、测量值偏差和信号采集中延时时间的设定不当等问题以及它们对系统控制效果的影响,并给出了解决方法。

 

 

 

 

1  引言

ADS7843是一种四线式触摸屏控制器,目前较多应用于电阻式触摸屏输入系统中。尽管有很多相关的典型应用和应用注意事项但是在实际使用过程中仍然会遇到一些问题。应用在通用的单片机中所出现的问题及解决方法,已有一些介绍。本文是对基于高速、流水线结构的 C8051的触摸屏控制系统设计中所遇到的问题进行分析处理,并给出了解决方法。

 

2  液晶触摸屏的系统设计

2.1  硬件组成

采用典型的四线电阻式触摸屏,其主要特点是精确度高,不受环境干扰,适用于各种场合控制器为四线电阻式触摸屏通用的 ADS7843控制芯片,具有 12位转换精度支持 SPI通讯协议;内建 512KByt e ROM,提供繁体或简体中文支持 2 Page显示模式,支持文本显示和图形显示 (320×240点 )两种方式,显示模块内建有 512KByt e的 16× 16中文显示字型 ROM(FontROM)与 8× 6的 A SCI I半型字型,除内建 8× 16和 16× 16的字号外,还提供字型放大的功能。

 

单片机采用 Cygnal的 C8051F020,高速、 流水线结构的 C8051兼容的 CIP - 51内核,64K字节的 FLA SH,4K +256字节的 RAM, 12位的 AD转换精度,硬件实现的 SPI、 S MBus/I2C接口5个通用的 16位定时器。70%的指令执行时间为一个或两个系统周期。

 

2 . 2  接口电路

如图 1。ADS7843串行接口的一次完整操作需要 3× 8=24个 DCL K时钟周期,前 8个脉冲接收 8位的命令,并在第 6个脉冲的上升沿开始 A / D转换器进入采样阶段从第 9个脉冲开始进入转换阶段,输出12位采样值,转换结束进入空闲阶段。直到 24DCL K结束,CS置高电平一次测量结束。如图 2所示。此外,ADS7843还支持其他的工作方式,这里不再详述。


 

 

2 . 3  工作原理

当用户在触摸屏上的有效区域内点击时触摸屏的 X方向、 Y方向输出电阻分别随 X和 Y呈线性变化,ADS7843控制器将其分别转换为 12位数据通过中断告知 C8051F020需要接收数据,C8051F020接收到数据后进行处理首先进行触点数据是否有效判断,包括两方面一是判断是否误操作即是否是由于人的抖动产生的错误数据;二是 ADS7843传过来得数据是否有效,由于刚开始的传过来的第一个坐标是用户开始接触触摸屏时产生的,电阻不准确,导致数据也不准,通常要去掉在接收过程中采用多次平均的方法,假如有一次接收的数据和平均值差别很大则这次测量就作废,需要重新测量一旦数据有效,C8051F020接着计算触点坐标落在液晶屏的位置,根据计算的结果判断执行相应的功能函数。使触摸屏和液晶屏有机的结合起来,建立一定的逻辑关系,交互地进行信息存取和输出。[page]

 

2 . 4  触摸屏坐标读取的软件流程

 

 

3  设计中出现的问题及解决方法

3 . 1  干扰信号

在测试时手指或触摸笔触摸时,会产生一定的干扰信号,干扰情况分为两种 (1)通过中断管脚会一直向 C8051F020发出中断请求。解决方法中断信号接缓冲器然后将输出管脚接 1 μF的钽电容,滤除中断干扰信号。 (2) ADS7843输出值不稳定。解决方法在 X +、 Y +管脚上连接 15pF钽电容滤波。经过测试验证,问题解决良好。连接电路见图 1

 

3 . 2 ADS7843的测量值偏差

当有触摸动作时,触摸点电阻膜会抖动或错误触发,解决方法先延时以消除抖动,采样 16,去掉采样的最先两个值和最后两个值,利用软件滤波去除采样中的抖动造成的偏差和误触发。利用中间连续采样的 12次值从采样的第 3次值到第 14个值,求出每次相邻两次采样值之差,求和后取平均值与预设值相比较,如果大于预设值,则此触摸动作无效,小于预设值则把采集数据的最小 6个差值对应的数据求平均值作为坐标值。可以消除抖动和误触发的无效值得到的坐标采样值精确度较高,相对于其他的滤波算法,该方法最优。

 

3 . 3  信号采集中的延时时间设定

因为 C8051F020的速度是普通 51芯片的 12,ADS7843在进行数据采集时,时钟信号高低电平持续的时间必须足够,方可保证能采集到坐标值。测试中发现,在高低电平后延迟 4“_n op_( ) ; ” 空指令时,触摸 X坐标线,可以采集到 X值坐标且有起始点,坐标值有线性变化;触摸 Y坐标时,采集到的 Y坐标值无起始点,在触摸屏上的 Y坐标上的值相差无几,几乎没有变化将延时指令由原来的 4“_nop_( ) ; ”改为 16发现测试结果正常。能同时读出 X、 Y值坐标且两坐标值均有起始点,且线性变化。因此在信号采集程序中,将时钟信号的延迟时间改为 16“_n op_( )  ” 。例程如下

void Ext _int 0( ) int err upt0

{ // 关中断

// 延时以消除抖动

// 去除初次不稳定值,软件滤波

// 以下程序为多次循环读取多组 X、 Y坐标值

Whit e Char T07843(0X90) ;  // 送控制字

While(BUSYT)  // 判忙

DCL K =1; _nop_( ) ; _nop_( ) ; _nop_( ) ; _nop_( ) ;

_nop_( )  _nop_( ) ; _nop_( )  _nop_( ) ;

_nop_( )  _nop_( ) ; _nop_( ) ; _nop_( ) 

_nop_( ) ; _nop_( ) ; _nop_( ) ; _nop_( ) ;

// 时钟信号足够时间来读取坐标值

DCL K =0; _nop_( )  _nop_( ) ; _nop_( )  _nop_( ) ;

_nop_( )  _nop_( ) ; _nop_( )  _nop_( ) ;

_nop_( ) ; _nop_( ) ; _nop_( )  _nop_( ) ;

_nop_( ) ; _nop_( )  _nop_( ) ; _nop_( ) ;

// 时钟信号足够时间来读取坐标值

X_pos[ r] =ReadFr omChar Fr om7843( ) ;  // 读 X

// 以下为读取坐标 Y值;

Whit e Char T07843(0XD0) 

// 下同读取 X值程序

// C80 51F0 20读取 ADS7843的 AD转换值

// 关中断,延时

// 开中断 }

 

4  结束语

经过反复测试后得出在系统控制中所产生的问题均被解决,触摸屏上每个设定的触摸键反应都很灵敏在触摸键的有效区域内都有反应。


特别推荐
技术文章更多>>
技术白皮书下载更多>>
热门搜索
?

关闭

?

关闭