触摸屏在S3C2410上的应用实例

上一篇 / 下一篇  2007-09-10 19:13:42 / 个人分类:嵌入式开发

F] @3n7[4Ec0来源:单片机及嵌入式系统应用  作者:国防科技大学 宋 成 孙广富

5V5W'g:U^2n.h6f@!j0木铎校园 BBS 社区V `Ak5? t6Vk6z

  摘要:给出S3C2410上触摸屏的实现原理、硬件结构和软件程序;对软件进行优化,改进软件滤波的实现方法。其算法使用C语言实现,可移植到任何操作系统的触摸屏驱动程序中。

   关键词:触摸屏 S3C2410 滤波

F_J?F-Mq+Y0

引言

'Nw9_g5X[0

随着个人数字助理(PDA)、瘦容户机等的普及,触摸屏作为终端与用户交互的媒介,在我们的生活中使用得越来普遍。触摸屏分为电阻式、电容式、声表面波式和红外线扫描式等类型,使用得最多的是4线电阻式触摸屏。木铎校园 BBS 社区5N/a'HW3Sd/[:U

本文以三星公司ARM9内核芯片S3C2410触摸屏接口为基础,通过外接4线电阻式触摸屏构成硬件基础。在此基础上,开发了触摸屏面图板程序。

$xl-A S(g0

1 触摸屏原理

v#K `-uq:yP I_m2i0

S3C2410接4线电阻式触摸屏的电路原理如图1所示。整个触摸屏由模向电阻比和纵向电阻线组成,由nYPON、YMON、nXPON、XMON四个控制信号控制4个MOS管(S1、S2、S3、S4)的通断。S3C2410有8个模拟输入通道。其中,通道7作为触摸屏接口的X坐标输入(图1的AIN[7]),通道5作为触摸屏接口的Y坐标输入(图1的AIN[5])。电路如图2所示。在接入S3C2410触摸屏接口前,它们都通过一个阻容式低通滤器滤除坐标信号噪声。这里的滤波十分重要,如果传递给S3C2410模拟输入接口的信号中干扰过大,不利于后续的软件处理。在采样过程中,软件只用给特殊寄存器置位,S3C2410的触摸屏控制器就会自动控制触摸屏接口打开或关闭各MOS管,按顺序完成X坐标点采集和Y坐标点采集。
.Z*G,B8Am c@0
木铎校园 BBS 社区8p,mD MH7x V*_Xd

 木铎校园 BBS 社区$r6H VxwN

2 S3C2410触摸屏控制器木铎校园 BBS 社区}Js8F#k

S3C2410触摸屏控制器有2种处理模式:木铎校园 BBS 社区PC _V8}`:i5V

①X/Y位置分别转换模式。触摸屏控制器包括两个控制阶段,X坐标转换阶段和Y坐标转换阶段。木铎校园 BBS 社区[*q8V1P(p W

②X/Y位置自动转换模式。触摸屏控制器将自动转换X和Y坐标。

F-Et7D`|o kZ-G0

本文使用X/Y位置自动转换模式。木铎校园 BBS 社区t|,aLt5M g;z/o

3 S3C2410触摸屏编程木铎校园 BBS 社区${T:xZ3[

由于触摸屏程序中参数的选取优化需要多次试验,而加入操作系统试验参数,每次编译下载耗费时间过多,不易于试验的进行,因而我们直接编写裸机触摸屏程序。三星公司开放了S3C2410测试程序2410test(可在三星网站下载),提供了触摸屏接口自动转换模式的程序范例ts_auto.c,见本刊网站www.dpj.com.cn。本文在此范例的基础上编写了触摸屏画图板程序——在显示屏上画出触摸笔的流走痕迹。木铎校园 BBS 社区K v y"|%V$agY7J ])k

针对坐标点采样时产生的噪声,本文采用噪声滤波算法,编写了相应的噪声滤波程序,滤除干扰采样点。整个触摸屏画图板程序的处理流程如图3所示。

/~,D3z*z5q,_%l?%y1W"Q0

3.1 程序初始化

OI:} s2\F-[ X0

初始化触摸屏控制器为自动转换模式。其中寄存器ADCDLY的值需要根据具体的试验选取,可运行本文提供的程序看画线的效果来选取具体的参数。触摸屏中断处理程序Adc_or_TsAuto是判断触摸屏是否被按下了。触摸屏被按下,给全局变量Flag_Touch赋值为Touch_Down,否则赋值为Touch_Up。木铎校园 BBS 社区toA Gj#rA\wg
木铎校园 BBS 社区(`3H{F'v4[9K

 

l yc-\RwO[T }0

初始化脉宽调制计时器(PWM TIMER),选择计时器4为时钟,定义10ms中断1次,提供触摸屏采样时间基准,即10ms触摸屏采样1次。计数器中断处理程序Timer4Intr中判断Flag_Touch被赋值为Touch_Down,则给全局变量gTouchStartSample置位,以控制触摸屏采样。

z;d!Ql)h0

之后清除触摸屏中断和计时器中断屏蔽位,接受中断响应,同时计时器开始计时。木铎校园 BBS 社区dvg0H0fZ ]}&D

3.2 触摸屏采样程序木铎校园 BBS 社区 iC$j2l`{9U iF

如果gTouchStartSample为TRUE,触摸屏接口开始对坐标X和Y的模拟量进行采样,根据试验选取适合的的采集次数。本文中使用9次采集,分别记入到ptx[TouchSample]和pty[TouchSample]数组中,TouchSample为采集次数。

+_*RG a6G*F0J0

为了减少运算量,将ptx[]和pty[]分别分三组取平均值,存储在px[3]和py[3]中。这里以处理X坐标为例:

T,F/bRA:v-wS9|'?0

px[0]=(ptx[0]+ptx[1]+ptx[2])/3;

JxMWlr0@0

px[1]=(ptx[3]+ptx[4]+ptx[5])/3;

0X'AL~;]@q0

px[2]=(ptx[6]+ptx[7]+ptx[8])/3;木铎校园 BBS 社区!S7{:RS*r ~+K#F Y

计算以上三组数据的差值:木铎校园 BBS 社区QO'WBO6m$Y

dlXDiff0=px[0]-px[1];木铎校园 BBS 社区6u@ aA oZ

dlXDiff1=px[1]-px[2];

-?*Q`Xi,Uf0

dlXDiff2=px[2]-px[0];木铎校园 BBS 社区U$\?Pczf1]Nt

然后对上述差值取绝对值,所得结果简称绝对差值:木铎校园 BBS 社区&h Wb-V*s4[a

dlXDiff0=dlXDiff0>0?dlXDiff0:-dlXDiff0;

z|cq5T!?{,T0

dlXDiff1=dlXDiff1>0?dlXDiff1:-dlXDiff1;木铎校园 BBS 社区2^(d0v&oc-z5t4o

dlXDiff2=dlXDiff2>0?dlXDiff2:-dlXDiff2;木铎校园 BBS 社区a!sM$OHgh _

判断上述计算的色对差值是否都超过差值门限,如果这3个绝对差值都超过门限值,判定这次采样点为野点,抛弃采样点,程序返回等待下次采样。其中的差值门限需要根据试验测试得到,本文取值为2。木铎校园 BBS 社区2}#y{\7JR;j9t

找出其中绝对差值最小的2组数据,再将它们作平均,同时赋值给tmx:木铎校园 BBS 社区v]1z,rq

if(dlXDiff0<dlXDiff1){木铎校园 BBS 社区N"sjh'r M*Yn)`0II2r

if(dlXDiff2<dlXDiff0){

8`5M6y#h ny0

tmx=((px[0]+px[2]>>1);木铎校园 BBS 社区(g hLpE5d8J7[

}木铎校园 BBS 社区)`K Csl;W1X)p+s

else{

DSG"l*L(RFn$k0

tmx=((px[0]+px[1])>>1);

Q;W)J%z(p `9]:v#}'[0

}木铎校园 BBS 社区'vq+o_'W E

}木铎校园 BBS 社区#NW*S0tD]R Ei(R

else if(dlXDiff2<dlXDiff1){木铎校园 BBS 社区;U.A@e6RHI

tmx=((px[0]+px[2])>>1);

f0j;K I"ewQ,t0_*eIh0

}

rT ]2f"\g0

else{木铎校园 BBS 社区/Gp*mEN0?@7Pf

tmx=((px[1]+px[2])>>1);木铎校园 BBS 社区 z+?u0h!n,p

}木铎校园 BBS 社区C]&`*LPSN*{0h
木铎校园 BBS 社区O0l7m!Z1A%u S F
木铎校园 BBS 社区5l*liUvO"G L

 木铎校园 BBS 社区7hKH$}\ w9f0B

   函数Touch_Coordinate Conversion完成触摸屏采样值转换成显示坐标,根据不同的硬件有不同的转换方法。本触摸屏采样坐标及显示坐标如图4、图5所示。其中TOUCH_MAX_X和TOUCH_MIN_X是触摸屏X坐标采样值的最大和最小值;Y坐标同理。可以运行本文程序,同时使用触摸笔在触摸屏的4个角取得最大最小采样值。这里使用的是320×240的TFT屏,所以TOUCH_X值为320。下面是X坐标的转换程序:木铎校园 BBS 社区 mP4X4nXTI$_ S

Touch_CoordinateConversio(int*px){木铎校园 BBS 社区+ED_I!U)x_r`

TmpX=(tmx>=TOUCH_MAX_X)?(TOUCH_MAX_X):*px;

6d-_\\ Z-[? U0

TmpX-=TOUCH_MIN_X;木铎校园 BBS 社区e's|mp5W

TmpX=(TmpX)?TmpX:0;木铎校园 BBS 社区5j B8t C n1d'r$j

*px=(TmpX*TOUCH_X)/(TOUCH_MAX_X-TOUCH_MIN_X);木铎校园 BBS 社区J[NtgM Z }#x*F

}木铎校园 BBS 社区4r*Y$p2v'Wt;Cw|QE

3.3 坐标滤波程序

oqsabp.R0

坐标滤波程序Touch_Pen_filtering,考虑人机界面中对触摸屏的操作有3种:

Z ~hU'}j0

*触摸笔在触摸屏上的位置不变;

OuXOcp0

*触摸笔在触摸屏上连续滑过;木铎校园 BBS 社区-Rh-Qcu5v*m+J'k\w:U

*触摸笔在触摸屏上有大幅度的跳跃。

Z7v.u7L/s#VJ'H0

假设三次连续采样时刻为T1、T2、T3(T3>T2>T1),采样间隔为10ms。由于采样间隔远小于人的反应时间,所以在前两种操作模式下,如果采样点有效,将T1和T3时刻的采样值作平均。其平均值和T2时刻的采样值比较一般不会大于某个门限,否则判定此次采样点为野点。而对于第三种模式下,采样点数据会有很大的跳变。跳变过程中的数据是不稳定的,虽然记入了数据,但被判定成无效的采样点,所以需要在程序中定义一个静态数组x[2]记录相邻的两次采样数据。只有当前后数据持续稳定一段时间,才认为这时的采样点有效。程序中使用的间隔门限FILTER_LIMIT是需要经过试验来选取的。这里只给出X坐标的滤波过程。

G)LI_Gt O4D~0

//*px为T3时刻的采样值,count是记录连续有效采样点次数的静态变量,标志当前数据持续稳定时间,一旦发现大于//FILTER_LIMIT,count的值又要从0开始计数。

%T SR)D!s3^Q1{M0

Int Touch_Pen_filtering(int *px){

.eU&N%dduBaqG4v0

BOOL retVal;木铎校园 BBS 社区ct/QJU.n9Q

Static int count=0;木铎校园 BBS 社区[#L(RLfr

count++;

/^b oF lI0

//如果连续有效采样点次数大于2次,开始进行滤波算法

0SZ*]bZrPl.O0

if(count>2){

` W!]!K0^.Cq;eB"Hf0

count=2;

F3h r:H d0i:b9f0

//将T3时刻采样值和T1时刻采样值作平均木铎校园 BBS 社区xo!fO"fU {h4n

TmpX=(x[0]+*px)/2;木铎校园 BBS 社区Pu.B;@2RJaZDK

//计算平均值和T2时刻采样值的差值

!P&S]'j9j6Z0

dx=(x[1]>TmpX)?(x[1]-TmpX):(TmpX-x[1]);木铎校园 BBS 社区&p+J/` y-c9j RuEVL

H]3vZ^1N O7M0

&W;t*I4qC/Q'h0

  //如果差值大于门限值,说明T3的采样值无效,判为野点返回值为FALSE。为了避免过大的跳跃,认为触摸笔坐标沿变,使用T2时刻采样值来代替本次采样点,同时静态变量x[]中的数据不变,count重新开始记录连续有效采样点次数

$QP&a/D Ik;SJ0

if((dx>FIL TER_LIMIT)){

srsURO,e0]K [0

*px=x[1];木铎校园 BBS 社区Qz%j_y(MG

retVal=FLASE;

T`] n$a0

count=0;木铎校园 BBS 社区 uLR3hg1fB-H Q

}木铎校园 BBS 社区[G(rW lH&m[

//否则采样点有效返回值为TRUE,将T3的采样点记入到x[1]中,T2的采样点移到x[0]中

_!LS$[W0

else{

3F8H*[n#LO(q0

x[0]=x[1];

4evhg@{0

x[1]=*px;木铎校园 BBS 社区Pm iX)T"R oE-i

retVal=TRUE;木铎校园 BBS 社区LW$S v&U"RgD

}

p Go?Rr7m0

}木铎校园 BBS 社区4^"r"AH!UV

else{

;SC_#O[Yx0

//连续有效采样次数小于2,将T3的采样值记入到x[1],T2的采样值移动到x[0],并不进行滤波处理木铎校园 BBS 社区'H^ zM;R{iN%[ M J

x[0]=x[1];

!eo'j"scA!ec{0

x[1]=*px;木铎校园 BBS 社区{ }WL*h1bR j L,J

retVal=FLASE;

SW(r;n R5K O9h JV0

}

!Q,HcHnsl0nm5|$`)g0

return retVal;木铎校园 BBS 社区^h"u`.b(V[-H-` J

}木铎校园 BBS 社区cl1t%A8Zh y

3.4 后续处理

"v}3\)WeV0

经过上述的筛选和滤波,如果被判定采样值有效,则将其滤波值送给操作系统进行后续处理,否则程序返回,等待下一次采样。在2410 test程序中,可以结合LCD的画点函数,将有效的采样点在LCD上画出,以此检验参数设置是否合理。木铎校园 BBS 社区/C`A8Jg

结语木铎校园 BBS 社区)O DI U-rkC

本文以三星公司ARM9内核芯片S3C2410和4线电阻式触摸屏为硬件基础。基于此硬件结构,开发了触摸屏画图板程序。通过软件滤波,提高了系统性能,得到了很好的处理效果,有很强的实用性。用此算法实现的Windows CE触摸屏驱动,在汉王手写输入软件的测试下得到了很高的识别率。软件使用C语言实现,可以方便地移植到任何操作系统上。

E {2F@ X}S0

TAG:

引用 删除 Guest   /   2008-08-16 13:45:14
深圳市巅峰视觉影视广告工作室,是影视广告、多媒体、平面包装设计等行业中迅速崛起的一家专业工作室。
    主要从事:影视节目贸易交流\影视广告摄制\企业专题片摄制\企业会展摄制\会议庆典摄影摄像\个人MTV拍摄制作\婚庆礼仪摄影摄像\光盘批量复制等项目。
    拥有多套数字影视制作设备,提供电视广告片、企业专题片的创意、拍摄与后期制作,电视栏目摄制包装、文化活动的策划与制作。云集众多经验丰富的高级摄影师、设计师和制作人员以及后期非编系统,成功地服务于众多的知名企业及事业单位服务的良好业绩。

    真诚合作、互惠共赢,为您提供最好的服务是我们永远的追求!

联系人:唐先生
13632503918(谢绝无关推销)
业务QQ:260826543

深圳市巅峰视觉影视广告

网址:http://www.szdf88.cn
引用 删除 Guest   /   2008-07-08 20:55:05
暨华教育服务中心联系方式13242851818电子邮件;jheduzx@126.com公司网站;http://www.jheduzx.cn 客服QQ;504875656本中心免试入学,电子注册,上网查询,快速取证、社会认可,学制短,提供全日制学籍档案。毕业证书对求职,应聘、出国留学移民、技能考核、晋级、资格评定、升职、涨薪等都具有效力。毕业证书可在学校官方网站永久查询,有档案,有学籍,有成绩单,有完整的手续。专业齐全,可以任意选报。真实、合法、快速、便捷、学费低!是您最理想的选择!



联系方式  13242851818
电子邮件; jheduzx@126.com
公司网站; http://www.jheduzx.cn
客服QQ;   504875656

网络推广

网址:http://www.aaaaa.cn
 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

关于作者