请输入关键词进行检索 使用帮助
Google
 
通过ADS7846在PDA上实现个性化书法输入

 

摘要:目前,在嵌入式系统中通过触摸屏写出的文字,笔划粗细都是相同的,字迹显得僵硬,不如毛笔字或钢笔字潇洒大方且风格多样。提出了一种适用于PDA及其它嵌入式设备的低成本、高速度、简单可行的解决方法,使得在触摸屏上书写时,LCD屏上能显现出如同毛笔字或钢笔字的传统书法特色的文字,笔划粗细疏密有致,字迹亲切自然,同时也能显现出书写人笔迹的个性风格。

关键词:ADS7846 书法 MC9328MX1 PDA 嵌入式系统

书法艺术是中国传统文化的瑰宝。如果用笔尖或指尖在触摸屏上挥洒自如写字,LCD上能显示出犹如用毛笔或钢笔收写时的书法效果,并能显现出书写人独特个性的隽秀笔迹,那么就会使人体会到淋漓尽致的书法艺术。但现有的PDA(Personal Digital Assistant)通过触摸屏画出线条,显示屏上显示出的线条粗细都是相同的,无法写出笔划粗细相间的文字,也就无法模拟出毛笔或钢笔书写时笔锋的效果。为弥补以上不足,笔者采用能采样触点压力的ADS7846触摸屏控制器[1],编写了采样触点坐标值和压力值的驱动程序,实现了通过触摸屏输入,在液晶显示器上显示书法出良好的效果。就象手中拿着毛笔或钢笔在触摸屏上写字一样,无论是行书、草书、隶书还是楷书,都能显示出令人满意的效果,并且完全保留了书写人的字迹特点。

1 ADS7846触摸屏控制器原理和功能概述

基于四线电阻式触摸屏的输入系统由触摸屏、触摸屏控制器、微控制器及其相应软件构成。其中,触摸屏控制器相当于触摸屏与微控制器之间的接口。触摸屏体是一个四层的复合薄膜,,附着在显示器表面与显示器配合使用。复合薄膜的最下层是玻璃基层,最上层是光滑防刮的塑料层,中间为两层透明导电涂层。每一导电层为触摸屏的一个工作面,每个工作面的两端各涂有一条银胶,称为该工作面的一对电极,分别称为X“电极对”和Y“电极对”。当触摸屏控制器在X“电极对”上施加一确定的电压,而Y“电极对”上不加电压时,X“电极对"所在的工作面上就会形成均匀连续的平行电场。当用手指触及触摸屏表面时,触点处的电压反映了触点在X工作面上的位置,将该电压通过Y+(或Y-)电极引到触摸屏控制器,并经过A/D转换,便可得到触点电压的数字量,即X坐标。同理,在Y“电极对”上施加电压,以X+(或X-)电极为测量电极,便可测得Y坐标。微控制器根据触点坐标位置以及对应坐标位置上显示的内容,便可得知触摸者的意图。

ADS7846是Burr-Brown公司生产的一种四线式触摸屏控制器,在与触摸连用时,一旦笔尖或指尖点触在触摸屏上,便可迅速得到该点的位置信号,从而达到在触摸屏表面雪址的目的。ADS7846是典型的逐步逼近寄存器型A/D变换器,包含了取样/保持功能。ADS7846与其前代产品ADS7843相比,增加了片内温度测量、触摸压力测量、外模拟量测量和电池电压测量四个功能。

ADS7846的核心部件是一个具有采样和保持功能的12位逐次逼近式A/D转换器。内部的六选一模拟多路开关根据微控制器送来的命令字选择六个模拟量:X+、Y+、Y-、VBAT(电池电压)、TEMP(温度)和AUXIN(外模拟量)之一送入A/D转换器,转换后通过SPI接口将数字量送入微控制器。ADS7846还设置有触摸识别电路,当检测到有触摸时,该电路输出一个低电平信号,称为PENIRQ#(笔中断),ADS7846以这个信号向微控制器提出测量触点坐标的中断请求。触点坐标的公式如下:

式中,X和Y分别为触点在X工作面和Y工作面上产生的电压的数字量的测量值,可通过采样得到;(X,Y)反映了触点在触摸屏上的坐标的公式如下XMIX、YMIN、XMAX和YMAX分别为触摸屏上最小和最大坐标点在X工作面和Y工作面上产生的电压的数字量的实际测量值,它们是常量,可通过测量得到;(XMIN,YMIN)和(XMAX,YMAX)反映了触摸屏上最小、最大坐标点的坐标;w和H分别是LCD显示屏X轴和Y轴上的象素点总数;(X1,Y1)为触点映射到LCD显示屏上的像素点坐标。

触摸压力测量是指对指尖或笔尖触及触摸屏时产生的压力值进行测量。触摸压力不是直接测出来的,而是转换为测量触点处X工作面和Y工作面之间的接触电阻的大小来完成的。Rtouch的公式如下:

式中,Rtouch表示接触电阻;Rx是X+与X-两电极间的总电阻;Z1和Z2是触摸屏的内部参数,反映触点与X工作面和Y工作面间的关系。Z1和Z2两个参数及X的值可通过ADS7846提供的指令采样得到。而Rx并不需要去测量,因为各个触摸屏的这个参数并不一样,但在同一个触摸屏上它却是个定值,每个点的Rtouch都要乘以这个定值Rx,所以这个参数可以不考虑。所得到的Rtouch值的大小反应了测量触点压力的大小。Rtouch越大,压力越小,可以通过实验测出不同压力的Rtouch值。如果发现压力值分布范围太宽,可以给Rtouch除以一个合适的参数;如果发现压力值分布太窄,可以给Rtouch乘以一个合适的参数。笔者针对自己的触摸屏,通过试验发现用

比较合适,不同的压力与Rtouch的比值分布在80~170之间,这样就有足够的间隔来把压力划分为不同的等级。

2 设计原理与具体实现

2.1 设计思路

微处理器首先利用SPI总线通过ADS7846采样到笔尖在触摸屏上的触点坐标值及Z1值和Z2值;然后通过式(1)和式(2)计算出映射到LCD屏上的坐标值,用式(4)计算出Rtouch值;再利用GUI提供的API函数在LCD上画一条线段把前一个触点和当前触点连起来;最后在这条线段的两边扩展平行线,平行线的数量越多,这条线段越粗。平行线的数量由当前触点Rtouch的大小决定,即压力越大,线段越粗。这样就模拟出了用毛笔或钢笔书写时笔锋游转的效果。

2.2 电路设计

笔者以MOTOROLA公司的DRAGONBALL(龙珠)系列MC9328MX1(ARM92T)作为硬件平台[2],利用MC9328MX1提供的SPI总线对ADS7846进行控制和数据传输。接口示意图如图1所示。

由图1可以看出,ADS7846与其前代产品ADS7843的接口电路完全相同。如果需要在原来使用ADS7843的设备上增加片内温度测量、触摸压力测量、外模拟量测量和电池电压测量四个功能,只需将板上的ADS7843替换为ADS7846,然后改写驱动程序即可。因为ADS7846与ADS7843的引脚封装完全一致,所以不用改动电路,这使更换工作非常方便。

2.3 驱动程序

在应用中,采用差动参考电压方式测量坐标模拟量,测量命令字的设置和模拟量选择参见表1和表2。

表1 ADS7846的测量命令字

Bit7(MSB)
BIt6Bit5Bit4Bit3Bit2Bit1Bit0
本刊由产品互链网提供,资料仅供参考

 申请编辑员
 相关知识
 相关文章
Cimatron软件在电工电器上的应用
一种双MCU结构的嵌入式Internet接入服务器
集成电路封装制品中气孔气泡问题的分析
uC/OS-II在EP7312上的移植
适应实时多任务的微控制器高效指令支持
PHILIPS公司32位FLASH MCU的优势
嵌入式实时系统中断管理技术研究
ADμC812的串行外设接口(SPI)及其应用
基于VxWorks的多DSP系统的多任务程序设计
Home.Net模型/架构研究
欢迎成为编辑员
  本网为开放式知识库,成为编辑员可共同维护相关栏目知识。

产品互链网 © 版权所有 2001-2007 | 服务建立友谊 | 辽ICP备06016610号