51单片机系统中的触摸屏坐标算法3.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
51单片机系统中的触摸屏坐标算法 引言 人机对话的界面种类有很多,比如显示器、LED、LCD及带触摸屏的LCD等。其中后者是最近几年刚发展起来的一项新技术,它通过计算机技术处理声音、图像、视频、文字、动画等信息,并在这些信息间建立一定的逻辑关系,使之成为能交互地进行信息存取和输出的集成系统。换而言之,它能综合信息发布者的意愿和接受者对信息的需求及接受习惯,对信息进行收集、加工、整合并双向式传播。触摸屏系统符合简便、经济、高效的原则,具有人机交互性好、 操作简单灵活、输入速度快等特点。它与迅猛发展的计算机网络和多媒体技术相结合,使用者仅仅用手指触摸屏幕,就能进行信息检索、数据分析,甚至可以做出身临其境、栩栩如生的效果;较键盘输入简单、直观、快捷,具有丰富多采的表现能力,比以往任何传媒更具亲合力。   触摸屏和51单片机接口,可以使一些小系统的操作更加方便、快捷。使用触摸屏时最重要的问题是确定坐标位置,即确定触点位置是否在该键的有效区域之内。由于51系列单片机的汇编语言不具备其它高级语言所具有的丰富库函数及逻辑运算能力,所以如何用51单片机简捷准确地完成这一任务,便成为应用中迫切需要解决的问题。   在实际应用中,我们采用了ADS7843作为触摸屏的控制器。关于ADS7843的原理及工作方式,已经有很多文章发表,而如何确认坐标位置却很少提及。本文仅就坐标确定问题做如下分析。 1? 转换模式   ADS7843的转换精度有8位和12位两种,可以精确到X或Y方向上的1/256和1/4096。我们采用清华蓬远公司的PDA240160触摸显示屏,外形尺寸是61.6mm×42.4mm,所以没必要采用12位A/D转换,而只需要8位A/D转换就足以达到所需精度,即最小分度是X、Y长度方向的1/256。 2? 坐标确定   PDA240160触摸显示屏的坐标如图1。 图1? 触摸显示屏的坐标图   其中,(X,Y)是一个图表按键的中心坐标,(X’,Y’)是右下角坐标,(X”,Y”)是其左上角的坐标。在触及屏幕时,触点只要在(X’,Y’)和(X”,Y”)矩形区域内均认为是触摸该键有效。假设一个32×32点阵的图标按键中心坐标(X,Y)为(50,50),那么(X’,Y’)就是(35,40),(X”,Y”)就是(65,60)。在触摸时只要得到的键坐标在(X’,Y’)和(X”,Y”)之间,即认为是触摸到了该键。而在该键坐标范围内的值又是如此之多,如何来处理得到的坐标呢?最初我们采取散转方式,结果是程序太冗长、可读性差且可移植性不好,不能作为子程序来调用。经过探讨分析,我们最后采取了查表的方式。   首先,制作如下所示的坐标表(包含当前屏幕上的所有键的两个角坐标):   表中每一行均代表一个键值的两个角坐标(需要放置完图标按键后调用相关程序确定两个角的坐标值),最后的字符001~n是每个键值的标志(简写A)。这个标志很有用,在以后的程序中会看到。 3? 程序流程图与程序清单   程序流程图如图2 。 图2? 程序流程图 子程序清单见本刊网络补充版()。其中XA、YA存储的是A/D转换后的坐标值。程序已经调试通过,敬请读者验证。 程序清单: 《51单片机系统中的触摸屏坐标算法》 子程序如下: . MOV KEY_QUAN,KQ ;KQ:指定键盘的数目,比实际的数目大1 MOV DRTR,#TAB JGE: MOV COUNT3,KEY_QUAN J1: DJNZ COUNT3,J11 ;判断是否到表尾 LJMP PREPARE ;退出 J11: MOV A,#0 ;取出X’ MOVC A,@A+DPTR CJNE A,XA,J2 ;X’是否小于XA J2: JC J3 INC DPTR ;若X’不小于XA,则DPTR+5,取出下一个键值的X’ INC DPTR INC DPTR INC DPTR INC DPTR CLR A LJMP J1 J3: INC DPTR ;若X’小于XA,则DPTR+2,取出X” INC DPTR CLR A MOVC A,@A+DPTR CJNE A, XA, J4 ;X”是否大于XA J4: JNC J5 ;若X”不大于XA,则DPTR+3,取出下一个键值的X” INC DPTR INC DP

文档评论(0)

hong333666 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档