通过ADS7846在PDA上实现个性化书法输入

发布者:蓝天飞行最新更新时间:2012-10-22 来源: 21IC 关键字: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显示屏上的像素点坐标。[page]

触摸压力测量是指对指尖或笔尖触及触摸屏时产生的压力值进行测量。触摸压力不是直接测出来的,而是转换为测量触点处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) BIt6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
S A2 A1 A0 MODE SER/DFR PD1 PD0

表2 差动参考电压方式下的模拟量选择

A[2:0] 参考电压(+REF,-REF) 模拟量输入 所测参数
001 Y+,Y- X+ Y
011 Y+,X- X- Z1
100 Y+,X- Y- Z2
101 X+,X- Y+ X

有关ADS7843驱动程序的资料很多,源代码也能很容易地找到。具有触摸压力测量功能的ADS7846的驱动程序,只需在原ADS7834驱动程序的合适位置加入采样Z1参数和Z2参数的代码就行了[4] .这部分的代码很简单,添加也很容易。笔者在MC9328MX1上实现的源代码如下:

spi_tx_data(0xB0); //输入采样Z1值的命令//

zl_upper = REG_SPI_RXDATA;

spi_tx_data(0x00);

zl_upper = REG_SPI_RXDATA;

spi_tx_data(0xc0); //输人采样Z2值的命令//

zl_lower = REG_SPI_RXDATA;

spi_tx_data(0x00);

z2_upper = REG_SPI_RXDATA;

spi_tx_data(0x00);

z2_lower = REG_SPI_RXDATA;

spi_tx_data(0x00); //输入采样Y值的命令//

x_upper = REG_SPI_RXDATA;

spi_tx_data(0x00);

x_upper = REG_SPI_RXDATA;

spi_tx_data(0x90); //输入采样X值的命令//

x_lower = RE G_SPI_RXDATA;

spi_tx_data(0x00);

y_upper = REG_SPI_RXDATA;

spi_tx_data(0x00);

y_upper = REG_SPI_RXDATA;

然后,计算出X,Y,Z1和Z2的值:

X=(((x_upper<<5)&0xFE0) ((x_lower>>3) & 0x1F));

Y=(((y_upper<<5)&0xFE0) ((y_lower>>3) & 0x1F));

Z1=(((z1_upper<<5)&0xFE0) ((z1_lower>>3) & 0x1F));

Z2=(((z2_upper<<5)&0xFE0) ((z2_lower>>3) & 0x1F));

此外,还应注意触摸抖动和连击问题。可以采用延迟测量法来解决,即在接收到触摸屏笔中断时延迟一段时间(抖动时30ms)后再测量,可消除抖动;测量完后再次延迟一段时间(连击延时300ms)后打开笔中断,可避免连击现象的出现。驱动程序主要包括初始化SPI寄存器、可编程定时器中断和笔中断。在笔中断中主要完成关笔中断、设置笔中断标志和将定时计数值设置为抖动延时,在定时器中断程序中主要实现坐标值的测量、延时功能。[page]

2.4 应用程序

一块触摸屏中并不一定每个点对压力的感应都很准确。另外笔尖在触摸屏上书写时,也会有秚动和干扰。这就造成了用同样的力在触摸屏上画一条线,显现时可能出现粗细不一样的现象。针对这个现象,在应用程序中适当做一些平滑处理。笔者采用算术平均法来平滑曲线,即如果发现采样点的压力值比前一个点大或小很多,则对该点和刚刚输入的前几个点压力值做算术平均,得到的值作为该点正确的压力值。但要注意,用来做平均的点不能取得太少,否则平滑作用不明显;也不能取得太多,否则线条粗细变化太慢,模拟不出书法效果。通过实验,发现取前三个点比较合适。做算术平均的源程序如下:

if(pressure-oldpressurel>50 oldpressurel-pressure >50) //如果发现触点的采样压力值比前一个点大或小很多//

pressure =(pressure+oldpressurel+oldpressure2+oldpressure3)>>2; /则对该点和前三个触点的压力值做算术平均,并把结果作为该点正确的压力值//

3 实验结果

经过实验,在LCD上显示出的结果如图2所示。

图2(a)为使用ADS7843,未采样触点压力值在LCD上的显示效果;图2(b)为使用ADS7846,采样触点压力值后,根据压力大小在LCD上显示出不同粗细曲线的效果。

如果使用多灰度级的LCD显示屏,还可以利用触点的压力大小(Rtouch)和笔尖在屏上接触的时间这两个参数,使画出曲线的顔色呈出出不同深浅。即触点的压力越大、笔尖在屏上相关区域接触的时间越长,这个区域显现的顔色就越深。具体调节公式如下:

式中,graylever为LCD上该点将要显现出的灰度值,(X,Y)为该点坐标,(Xddtime,Yoldtime)为同一笔划中一定时间间隔前触点的坐标。笔者在开发过程中,取时间间隔为100ms。A和B都是用来调整graylever变化范围的常量,可以通过实验根据具体情况设定。

这样,用指尖在触摸屏上作画时,LCD上也会显现出素描和国画的效果。

如果使用彩色LDC,可以结合GUI在LCD上创建一个供用户选择不同色彩的窗口,用户就可以挑选合适的顔色在触摸屏上画图,显示屏上也将会呈现色彩缤纷的作品。因此,本文介绍的方法将会为PDA及相关行业开拓出全新的功能,带来更加明媚的春天。

本文提出的方法已在MOTOROLA公司的DRAGONBALL(龙珠)系列MX1(ARM920T)上实现。该设计使得在PDA的触摸屏上写字时,能显示出毛笔或钢笔写出的书法效果,同时也显现出了书写人笔迹的个性风格,并具有反应速度快、实现成本低、程序编写特简单等突出特点。相信此方法将会在周期入式领域中得到广泛的应用。

关键字:ADS7846  书法  MC9328MX1  PDA 引用地址:通过ADS7846在PDA上实现个性化书法输入

上一篇:基于T6963CFG的LCD在嵌入式系统中的应用
下一篇:MPEG-2传输流解复用在内嵌ARM核的FPGA上的实现

推荐阅读最新更新时间:2024-03-16 13:11

基于ICM105C图像传感器实现设备采集系统和接口设计
目前数字摄像技术,主要采用两种方式:一种是使用CCD(电容耦合器件)图像传感器,另一种是使用CMOS(互补金属氧化物半导体)图像传感器。 CCD图像传感器具有读取噪声低、动态范围大、响应灵敏度高等优点。但CCD技术难以与主流的CMOS技术集成于同一芯片之中。因而CCD图像传感器具有体积大、功耗高等缺点。 CMOS图像传感器是近些年发展较快的新型图像传感器,由于采用了CMOS技术,可以将像素阵列与外围支持电路(如图像传感器核心、单一时钟、所有的时序逻辑、可编程功能和模数转换器)集成在同一块芯片上。因此与CCD相比,CMOS图像传感器将整个图像系统集成在一块芯片上,具有体积小、重量轻、功耗低、编程方便、易于控制等优点。对于手持
[单片机]
基于ICM105C图像传感器实现设备采集系统和接口设计
基于STM32的数字PDA系统软件系统设计
数字PDA系统整体由硬件电路和软件系统2部分组成,硬件电路由低功耗ARM微控制器STM32ZET6控制的PDA外围电路组成,软件系统则由硬件驱动程序、μC/OS-Ⅱ实时操作系统、FATFS文件系统、GUI等部分组成。数字PDA系统将整个软件系统进行了整合,提供一种基于页的机制方法,即每页都是一个线程,利用μC/OS-Ⅱ的信号量、邮箱机制实现多线程之间的任务切换。PDA系统采用页机制的设计,旨在减少增加应用程序时代码的修改量和提高整个PDA软件系统的稳定性,以及提高应用程序的开发速度。 以Cortex-M3为内核的处理器由于其低功耗以及低成本并且是32位处理器,越来越多的研究人员已经从51处理器、AVR等处理器开始转移到这个领域
[单片机]
基于STM32的数字<font color='red'>PDA</font>系统软件系统设计
亚马逊Kindle急剧升温 3G网络功不可没
据外电报道,近来亚马逊( Amazon )推出的 Kindle 电子书阅读器正在急剧升温。该阅读器使用户能够利用 Sprint Nextel 的 3G CDMA EV-DO 网络,购买下载亚马逊网站的电子图书和报刊,并无需另外支付数据流量费。据了解, Kindle 使用了高通的 EV-DO 芯片,可以实现随时随地高速接入互联网。 由于产品一经推出便备受追捧并屡次脱销, Kindle 的价格也一涨再涨。 Kindle 原本售价只有 399 美元,但近来 eBay 上的 Kindle 已经涨到 930 美元,最高价格甚至高达 1500 美元。 在
[焦点新闻]
基于触摸屏控制器动态签名认证的数据采集和预处理
引 言   由于触摸屏输入方便、轻薄、便于携带等优点,越来越多的电子产品用触摸屏作为人机界面的输入设备。在动态签名认证中,亦采用触摸屏作为输入设备对笔迹进行数据采集。本文主要从触摸屏工作原理、ADS7846的工作方式以及单片机89S51对 ADS7846的控制等方面,分析如何实现三维数据的采集。   系统主要由四线电阻式触摸屏、触摸屏控制器ADS7846、单片机89S51以及相应软件程序组成。系统框图如图1所示。 1 四线电阻式触摸屏   电阻触摸屏是采用电阻模拟量技术。它以一层玻璃作为基层,上面涂有一层透明氧化金属(ITO氧化铟)导电层,再盖有一层玻璃或是外表面硬化处理的光滑的塑料层;内表面也涂有一层ITO导电层。它们之
[单片机]
基于触摸屏控制器动态签名认证的数据采集和预处理
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved