还剩31页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
工学院毕业设计(论文)题目触摸式LCD人机接口设计专业电子信息工程班级电信072班姓名陶*年学号1665070218指导教师*朝胜日期
2010.12目录TOC\o1-3\h\z\u1触摸屏的概况及简介
11.1概况
11.2简介22系统器件介绍和工作原理
22.1TFTLCD简介22.2XPT2046芯片
42.
2.1芯片功能
42.
2.2芯片功能特性
42.
2.3XPT管脚描述
52.
2.4XPT极限参数
62.
2.5基本原理描述
62.3压力传感器63硬件设计
73.1单片机最小系统模块设计
73.
1.1复位电路
83.
1.2时钟电路
93.2触摸屏硬件设计
93.3基于XPT2406的控制电路144系统软件设计
144.1触屏校准作用
144.2主程序流程图
154.3C语言的简介
164.4关键代码165下载与调试196结论21致谢22____23附录25触摸式LCD人机接口设计工学院__072陶万年指导老师:徐朝胜摘要本文介绍了触摸屏的软硬件实现方案,同时介绍了如何实现人机交互系统模拟对TFTLCDThinFilmTransistor-LiquidCrystalDisplay模块的触摸屏设计,最终实现一个手写的功能介绍了触摸屏TFTLCD的硬件设计和基于芯片xpt2406控制触摸屏的控制电路,以及软件的C编程关键字触摸屏TFTLCDxpt2406c编程1触摸屏的概况及简介
1.1概况随着多媒体信息查询的与日俱增,人们越来越多地谈到触摸屏,因为触摸屏不仅适用于中国多媒体信息查询的国情,而且触摸屏具有坚固耐用、反应速度快、节省空间、易于交流等许多优点利用这种技术,我们用户只要用手指轻轻地碰计算机显示屏上的图符或文字就能实现对主机操作,从而使人机交互更为直截了当,这种技术大大方便了那些不懂电脑操作的用户触摸屏作为一种最新的电脑输入设备,它是目前最简单、方便、自然的一种人机交互方式它赋予了多媒体以崭新的面貌,是极富吸引力的全新多媒体交互设备触摸屏在我国的应用范围非常广阔,主要是公共信息的查询;如__局、税务局、银行、电力等部门的业务查询;城市街头的信息查询;此外应用于__办公、工业控制、军事指挥、电子游戏、点歌点菜、多媒体教学、房__预售等将来,触摸屏还要走入家庭 随着使用电脑作为信息来源的与日俱增,触摸屏以其易于使用、坚固耐用、反应速度快、节省空间等优点,使得系统设计师们越来越多的感到使用触摸屏的确具有相当大的优越性触摸屏出现在中国市场上至今只有短短的几年时间,这个新的多媒体设备还没有为许多人接触和了解,包括一些正打算使用触摸屏的系统设计师,还都把触摸屏当作可有可无的设备,从发达国家触摸屏的普及历程和我国多媒体信息业正处在的阶段来看,这种观念还具有一定的普遍性事实上,触摸屏是一个使多媒体信息或控制改头换面的设备,它赋予多媒体系统以崭新的面貌,是极富吸引力的全新多媒体交互设备发达国家的系统设计师们和我国率先使用触摸屏的系统设计师们已经清楚的知道,触摸屏对于各种应用领域的电脑已经不再是可有可无的东西,而是必不可少的设备它极大的简化了计算机的使用,即使是对计算机一无所知的人,也照样能够信手拈来,使计算机展现出更大的魅力解决了公共信息市场上计算机所无法解决的问题随着城市向信息化方向发展和电脑网络在国民生活中的渗透,信息查询都已用触摸屏实现--显示内容可触摸的形式出现
1.2简介我们一般液晶所用的触摸屏,最多的就是电阻式触摸屏了(多点触摸属于电容式触摸屏,比如M8,IPhone等支持多点触摸的手机所用的屏就是电容式的触摸屏),ALIENTEKTFTLCD自带的触摸屏属于电阻式触摸屏,下面简单介绍下电阻式触摸屏的原理电阻式触摸屏利用压力感应进行控制电阻触摸屏的主要部分是一块与显示器表面非常配合的电阻薄膜屏,这是一种多层的复合薄膜,它以一层玻璃或硬塑料平板作为基层,表面涂有一层透明氧化金属(透明的导电电阻)导电层,上面再盖有一层外表面硬化处理、光滑防擦的塑料层、它的内表面也涂有一层涂层、在他们之间有许多细小的(小于1/1000英寸)的透明隔离点把两层导电层隔开绝缘当手指触摸屏幕时,两层导电层在触摸点位置就有了接触,电阻发生变化,在X和Y两个方向上产生__,然后送触摸屏控制器控制器侦测到这一接触并计算出(X,Y)的位置,再根据获得的位置模拟鼠标的方式运作这就是电阻技术触摸屏的最基本的原理电阻屏的特点有1)是一种对外界完全隔离的工作环境,不怕灰尘、水汽和油污2)可以用任何物体来触摸,可以用来写字画画,这是它们比较大的优势3)电阻触摸屏的精度只取决于A/D转换的精度,因此都能轻松达到4096*4096从以上介绍可知,触摸屏都需要一个AD转换器,一般来说是需要一个控制器的ALIENTEKTFTLCD模块选择的是四线电阻式触摸屏,这种触摸屏的控制芯片有很多,包括ADS
7843、ADS
7846、TSC
2046、XPT2046和AK4182等这几款芯片的驱动基本上是一样的,也就是你只要写出了ADS7843的驱动,这个驱动对其他几个芯片也是有效的而且封装也有一样的,完全PINTOPIN所以在替换起来,很方便ALIENTEKTFTLCD模块自带的触摸屏控制芯片为XPT2046XPT2046是一款4导线制触摸屏控制器,内含12位分辨率125KHz转换速率逐步逼近型A/D转换器XPT2046支持从
1.5V到
5.25V的低电压I/O接口XPT2046能通过执行两次A/D转换查出被按的屏幕位置,除此之外,还可以测量加在触摸屏上的压力内部自带
2.5V参考电压可以作为辅助输入、温度测量和电池监测模式之用,电池监测的电压范围可以从0V到6VXPT2046片内集成有一个温度传感器在
2.7V的典型工作状态下,关闭参考电压,功耗可小于
0.75mWXPT2046采用微小的封装形式TSSOP-16QFN-
160.75mm厚度和VFBGA-48工作温度范围为-40℃~+85℃该芯片完全是兼容ADS7843和ADS7846的,关于这个芯片的详细使用,可以参考这两个芯片的datasheet2系统器件介绍和工作原理
2.1TFTLCD简介
2.
1.1工作原理随着微电子技术不断创新和发展,高性能ARM嵌入式系统已广泛应用于各个领域中人们在可视化效果的追求方面也与日俱增,高性能rFr—LCD不仅可以显示华丽的界面和高分辨力多媒体,同时,还具有低压、低功耗、体积小、重量轻和超薄等诸多优点所以具有高品质因数液晶屏的嵌入式系统被广泛运用于手持设备、数字机顶盒、地学核仪器中嵌入式__系统是一种软件和硬件的结合体,是由硬件层、中间层、软件层和功能层有机结合实现1个或多个特定功能的功能体n未来嵌入式操作系统发展,软件与硬件的无缝结合是必然的趋势,尤其是本设计中用到的嵌入式Linux操作系统,它与硬件芯片的结合程度比任何其他操作系统更要紧密嵌入式系统中TFT液晶软硬件设计TFT.LCD的每个像素点都是由集成在自身上的TFT来控制的,每个像素点都是有源像素点当嵌入式处理器给出像点时钟、数据使能__和RGB数据__时,要经过液晶配套芯片IZ9FC22数据扫描来进行时序匹配多路矩阵电压源__X1664来控制TFT开启/关闭,TFT开启时,数据通过源极驱动器加载到显示电极,显示电极和公共电极间的电压差再作用于液晶,进而达到TFT—LCD显示的目的
2.
1.2TFTLCD结构TFT-LCD的结构如图一所示,主要元件之功能说明如下图2-1TFT-LCD的结构彩色滤光片(CFcolorfilter)彩色的LCD需要用到彩色滤光片(colorfilter),液晶面板透过驱动IC的电压改变,使液晶分子排排站立或呈扭转状,形成闸门來选择背光源光线穿透与否,穿透的光线,再经由彩色滤光片的处理,才能表现出彩色的画面彩色滤光片之制作是于玻璃基板上,将红、绿、蓝三原色之有机材料,制作在每一个尽素之内,如图图2-2彩色滤光片黑色阵列在彩色滤光片上用来遮住R、G、B各Pixel间之空隙,可大幅减少LCD光点间彼此因光害所产生的干扰,使画面更清晰,提升了阅读上的舒适度,同时也减轻了__使用所造成的眼部压力及疲累感配向膜配向膜是用来将液晶分子做定位的工作,其前后两片光罩上的配向膜需互成九十度方能将液晶分子依序旋转,其制作方式是利用棉刷依一定方向刷过,也有使用蒸度的方式配向,不过成本较高偏光板液晶显示器均须使用上下两片偏光板,其功能即在于將非偏极光转为偏极光,而液晶显示器就是利用此偏极光加上液晶扭转特性來达到控制光线的通过与否,以形成明暗透明电极液晶显示器之液晶分子须有上__之电极来感应,控制其旋转,而电极必须是透明且能导电之材质,目前使用ITO(铟锡氧化物)背光光源由于液晶本身不会发光,必须在液晶显示面板后方加上背光源(大部分是冷阴极管或LED),光线穿透玻璃基板、液晶、彩色滤光片、偏光板等相关材料,进入人的眼睛形成影像玻璃基板玻璃在TFT-LCD产业中扮演的角色好比是半导体产业中的晶体,因此TFT-LCD产业对玻璃基板表面精度之要求极高TFT-LCD的制程需要真空蒸镀与蚀刻,所以基板玻璃必须要能忍受強酸強碱之腐蚀、高温的制程环境,并且必须具备比矽晶体更精密的表面平整度与平面起伏度2.2XPT2046芯片
2.
2.1芯片功能XPT2046是一款4导线制触摸屏控制器,内含12位分辨率125KHz转换速率逐步逼近型A/D转换器XPT2046支持从
1.5V到
5.25V的低电压I/O接口XPT2046能通过执行两次A/D转换查出被按的屏幕位置,除此之外,还可以测量加在触摸屏上的压力内部自带
2.5V参考电压可以作为辅助输入、温度测量和电池监测模式之用,电池监测的电压范围可以从0V到6VXPT2046片内集成有一个温度传感器在
2.7V的典型工作状态下,关闭参考电压,功耗可小于
0.75mWXPT2046采用微小的封装形式TSSOP-16QFN-
160.75mm厚度和VFBGA-48工作温度范围为-40℃~+85℃
2.
2.2芯片功能特性具有4线制触摸屏接口具有触摸压力测量功能能直接测量电源电压(0V~6V)低功耗(260μA)可单电源工作,工作电压范围为
2.2V—
5.25V支持
1.5V~
5.25V电平的数字I/O口内部自带+
2.5V参考电压具有125KHz的转换速率采用QSPI™和SPI™ 3线制通信接口具有可编程的8位或12位的分辨率具有1路辅助模拟量输入能够自动掉电封装小,节约电路__TSSOP-16QFN-
160.75mm厚度和VFBGA-48全兼容TSC2046,ADS7843/7846和AK
41822.
2.3XPT管脚描述表2-1管脚描述QFN引脚号TSSOP引脚号VFBGA引脚号名称说明113A5BUSY忙时__线当为高电平时为高阻状态214A4DIN串行数据输入端当为低电平时,数据在DCLK上升沿锁存进来315A3片选__控制转换时序和使能串行输入输出寄存器,高电平时ADC掉电416A2DCLK外部时钟__输入51B1和C1VCC电源输入端62D1XPXP位置输入端73E1YPYP位置输入端84G2XNXN位置输入端95G3YNYN位置输入端106G4和G5GND接地117G6VBAT电池监视输入端128E7AUXADC辅助输入通道139D7VREF参考电压输入/输出1410C7IOVDD数字电源输入端1511B7PENIRQ笔接触中断引脚1612A6DOUT串行数据输出端数据在DCLK的下降沿移出,当高电平时为高阻状态
2.
2.4XPT极限参数表格2-2极限参数名称参数VCC和IOVDD电压-
0.3V至+6V模拟输入__电压-
0.3V至+VCC+
0.3V数字输入__电压-
0.3V至IOVDD+
0.3V功耗250mW最大结温+150℃工作温度-40℃~+85℃贮存温度-65℃~+150℃焊接温度(小于10秒)+300℃注在极限值之外或任何其他条件下,芯片的工作性能不予保证
2.
2.5基本原理描述XPT2046是一种典型的逐次逼近型模数转换器(SARADC),包含了采样/保持、模数转换、串口数据输出等功能同时芯片集成有一个
2.5V的内部参考电压源、温度检测电路,工作时使用外部时钟XPT2046可以单电源供电,电源电压范围为
2.7V~
5.5V参考电压值直接决定ADC的输入范围,参考电压可以使用内部参考电压,也可以从外部直接输入1V~VCC范围内的参考电压(要求外部参考电压源输出阻抗低)X、Y、Z、VBAT、Temp和AUX模拟__经过片内的控制寄存器选择后进入ADC,ADC可以配置为单端或差分模式选择VBAT、Temp和AUX时应该配置为单端模式;作为触摸屏应用时,应该配置为差分模式,这可有效消除由于驱动开关的寄生电阻及外部的干扰带来的测量误差,提高转换精度
2.3压力传感器压力传感器是工业实践中最为常用的一种传感器,而我们通常使用的压力传感器主要是利用压电效应制造而成的,这样的传感器也称为压电传感器我们知道,晶体是各向异性的,非晶体是各向同性的某些晶体介质,当沿着一定方向受到机械力作用发生变形时,就产生了极化效应;当机械力撤掉之后,又会重新回到不带电的状态,也就是受到压力的时候,某些晶体可能产生出电的效应,这就是所谓的极化效应科学家就是根据这个效应研制出了压力传感器压电传感器中主要使用的压电材料包括有石英、酒石酸钾钠和磷酸二氢胺其中石英(二氧化硅)是一种天然晶体,压电效应就是在这种晶体中发现的,在一定的温度范围之内,压电性质一直存在,但温度超过这个范围之后,压电性质完全消失(这个高温就是所谓的“居里点”)由于随着应力的变化电场变化微小(也就说压电系数比较低),所以石英逐渐被其他的压电晶体所替代而酒石酸钾钠具有很大的压电灵敏度和压电系数,但是它只能在室温和湿度比较低的环境下才能够应用磷酸二氢胺属于人造晶体,能够承受高温和相当高的湿度,所以已经得到了广泛的应用在现在压电效应也应用在多晶体上,比如现在的压电陶瓷,包括钛酸钡压电陶瓷、PZT、铌酸盐系压电陶瓷、铌镁酸铅压电陶瓷等等压电效应是压电传感器的主要工作原理,压电传感器不能用于静态测量,因为经过外力作用后的电荷,只有在回路具有无限大的输入阻抗时才得到保存实际的情况不是这样的,所以这决定了压电传感器只能够测量动态的应力压电传感器主要应用在加速度、压力和力等的测量中压电式加速度传感器是一种常用的加速度计它具有结构简单、体积小、重量轻、使用寿命长等优异的特点压电式加速度传感器在飞机、汽车、船舶、桥梁和建筑的振动和冲击测量中已经得到了广泛的应用,特别是__和宇航领域中更有它的特殊地位压电式传感器也可以用来测量发动机内部燃烧压力的测量与真空度的测量也可以用于军事工业,例如用它来测量枪炮子弹在膛中击发的一瞬间的膛压的变化和炮口的冲击波压力它既可以用来测量大的压力,也可以用来测量微小的压力压电式传感器也广泛应用在生物医学测量中,比如说心室导管式微音器就是由压电传感器制成的,因为测量动态压力是如此普遍,所以压电传感器的应用就非常广除了压电传感器之外,还有利用压阻效应制造出来的压阻传感器,利用应变效应的应变式传感器等,这些不同的压力传感器利用不同的效应和不同的材料,在不同的场合能够发挥它们独特的用途3硬件设计总体设计框如图3-1所示图3-
13.1单片机最小系统模块设计所谓单片机最小系统是指能维持单片机运行行的最简单配置系统最小系统包括晶体振荡电路、复位开关、接插口和电源部分,本系统单片机采用AT__C51或其兼容系列,如图3-3采用12MHz高精度的晶振,以获得较稳定的时钟频率,减小测量误差单片机用P
1.0端口输出超声波转化器所需的40KHz方波__,利用外中断0口检测超声波接受电路输出的返回__图3-2最小系统模块单元图单片机为系统的主控单元,系统通过P0口将模数转换后数字__输入CPU,由CPU比较判断温度值,运算功能是由运算部件完成的,运算部件的功能是实现数据的算术逻辑运算、位变址处理和数据传送操作单片机中通过控制部件完成各项控制功能控制部件是单片机的神经中枢,它包括时钟电路、复位电路、指令寄存器、译码以及信息传送控制部件它以主振频率为基准发出CPU的时序,对指令进行译码,然后发出各种控制__,完成一系列定时控制的微操作,用来控制单片机各部分的运行其中有一些控制__线能简化应用系统__控制逻辑,如控制地址锁存的地址锁存__ALE,控制片外程序存储器运行的片内外存储器选择__EA,以及片外取指__PSEN复位电路的好坏对系统的启动、停止有极大的影响;精准的时钟电路是保证控制精度的前提因此单片机模块中对复位电路与时钟电路的设计非常重要
3.
1.1复位电路图3-3单片机的复位电路单片机的复位引脚RESET出现2个机器周期以上的高电平时,单片机就执行复位操作本系统采用的复位方式为上电自动复位和开关复位相结合的方式电源接通后,单片机自动复位,并且在系统运行期间,用按键手动操作也能使单片机复位上电后电容充电,使RESET持续一段时间的高电平当单片机已在运行当中时,按下复位按键后松开,也能使RESET为一段时间的高电平,从而实现开关复位操作
3.
1.2时钟电路单片机的时钟__通常用两种电路形式得到内部振荡方式和外部振荡方式本控制器采用的是单片机外接石英晶体的内部时钟方式因为这种方式得到的时钟__比较稳定在AT__C51内部有一个高增益的反向放大器,其输入端引脚XTAL1和XTAL2用于外接石英晶体和微调电容,构成振荡器,再由内部的时钟发生器对振荡__进行二分频,向CPU提供时钟__图3-5中电容C
1、C2对振荡频率起微调作用,同时两个电容器起稳定振荡频率、快速起振的作用电容容量的选择范围一般为30pF±10pF,振荡器的振荡频率选择范围为
1.2MHz~12MHz,典型值为6MHz或12MHz本模块中电容C
1、C2选择30pF,振荡频率选择12MHz图3-4单片机时钟电路
3.2触摸屏硬件设计本节实验功能简介开机的时候先通过24C01的数据判断触摸屏是否已经校准过,如果没有校准,则执行校准程序,校准过后再进入手写程序如果已经校准了,就直接进入手写程序,此时可以通过按动屏幕来实现手写输入屏幕上会有一个清空的操作区域(RST),__这个地方就会将输入全部清除,恢复白板状态程序会设置一个强制校准,就是通过按KEY0来实现,只要按下KEY0就会进入强制校准程序,这个强制校准程序是必须的所要用到的硬件资源如下1)ADS78432)DS0(外部LED0)3)KEY04)TFTLCD液晶模块5)24C01原理图如下
3.2-1所示图3-5TFTLCD模块图
3.2-1TFTLCD模块采用2*17的
2.54公排针与外部连接,接口图如下图
3.2-2所示图3-6ALIENTEK
3.2寸TFTLCD模块接口图该接口同目前主流的几款STM32__板的接口完全兼容,所以模块除了用在ALIENTEKMiniSTM32__板上,也可以用在其他__板上,当然你也可以使用其他接口一样的LCD模块放到我们的ALIENTEKMiniSTM32__板上使用ALIENTEKTFTLCD模块采用80并口口方与外部链接,采用16位数据线(低了速度太慢,用彩色就没什么效果了)该模块的80并口有如下一些__线CS TFTLCD片选__WR向TFTLCD写入数据RD从TFTLCD读取数据D[15:0]16位双向数据线RST硬复位TFTLCDRS命令/数据标志(0,读写命令;1,读写数据)80并口在上一节我们已经有详细的介绍了,这里我们就不在介绍,需要说明的是,TFTLCD模块的RST__线和OLED模块一样,也是直接接到STM32的复位脚上,并不由软件控制,这样可以省下来一个IO口另外我们还需要一个背光控制线来控制TFTLCD的背光所以,我们总共需要的IO口数目为21个模块的控制器为ILI9320,该控制器自带显存,其显存总大小为172820(240*320*18/8),即18位模式(26万色)下的显存量模块的16位数据线与显寸的对应关系为565方式,如下图所示图3-716位数据与显存对应关系图最低5位代表蓝色,中间6位为绿色,最高5位为红色数值越大,表示该颜色越深接下来,我们介绍一下ILI9320的几个重要命令,因为ILI9320的命令很多,我们这里不可能一一介绍,有兴趣的大家可以找到ILI9320的datasheet看看里面对这些命令有详细的介绍这里我们要介绍的命令列表如下表格3-1ILI9320常用命令表R0,这个命令,有两个功能,如果对它写,则最低位为OSC,用于开启或关闭振荡器而如果对它读操作,则返回的是控制器的型号这个命令最大的功能就是通过读它可以得到控制器的型号,而我们代码在知道了控制器的型号之后,可以针对不同型号的控制器,进行不同的初始化因为93xx系列的初始化,其实都比较类似,我们完全可以用一个代码兼容好几个控制器R3,入口模式命令我们重点__的是I/D
0、I/D
1、AM这3个位,因为这3个位控制了屏幕的显示方向AM控制GRAM更新方向当AM=0的时候,地址以行方向更新当AM=1的时候,地址以列方向更新I/D[1:0]当更新了一个数据之后,根据这两个位的设置来控制地址计数器自动增加/减少1,其关系如下图图3-8GRAM显示方向设置图通过这几个位的设置,我们就可以控制屏幕的显示方向了R7,显示控制命令该命令CL位用来控制是8位彩色,还是26万色为0时26万色,为1时八位色D
1、D
0、BASEE这三个位用来控制显示开关与否的当全部设置为1的时候开启显示,全0是关闭我们一般通过该命令的设置来开启或关闭显示器,以降低功耗R32,R33,设置GRAM的行地址和列地址R32用于设置列地址(X坐标,0~239),R33用于设置行地址(Y坐标,0~319)当我们要在某个指定点写入一个颜色的时候,先通过这两个命令设置到改点,然后写入颜色值就可以了R34,写数据到GRAM命令,当写入了这个命令之后,地址计数器才会自动的增加和减少该命令是我们要介绍的这一组命令里面唯一的单个操作的命令,只需要写入该值就可以了,其他的都是要先写入命令编号,然后写入操作数R80~R83,行列GRAM地址位置设置这几个命令用于设定你显示区域的大小,我们整个屏的大小为240*320,但是有时候我们只需要在其中的一部分区域写入数据,如果用先写坐标,后写数据这样的方式来实现,则速度大打折扣此时我们就可以通过这几个命令,在其中开辟一个区域,然后不停的丢数据,地址计数器就会根据R3的设置自动增加/减少,这样就不需要频繁的写地址了,大大提高了刷新的速度命令部分,我们就为大家介绍到这里,我们接下来看看要如何才能驱动ALIENTEKTFTLCD模块,这里TFTLCD模块的初始化和我们前面介绍的OLED模块的初始化框图是一样的,只是初始化代码部分不同接下来我们也是将该模块用来来显示字符和数字通过以上介绍,我们可以得出TFTLCD显示需要的相关设置步骤如下1)设置STM32与TFTLCD模块相连接的IO这一步,先将我们与TFTLCD模块相连的IO口设置为输出,具体使用哪些IO口,这里需要根据连接电路以及TFTLCD模块的设置来确定2)初始化TFTLCD模块其实这里就是上和上面OLED模块的初始化过程差不多通过向TFTLCD写入一系列的设置,来启动TFTLCD的显示为后续显示字符和数字做准备3)通过函数将字符和数字显示到TFTLCD模块上这里就是通过我们设计的程序,将要显示的字符送到TFTLCD模块就可以了,这些函数将在软件设计部分向大家介绍通过以上三步,我们就可以使用ALIENTEKTFTLCD模块来显示字符和数字了,并且可以显示各种颜色的背景
3.3基于XPT2406的控制电路XPT2046控制电路如
3.3-1所示图3-9xpt2046控制电路4系统软件设计
4.1触屏校准作用我们传统的鼠标是一种相对定位系统,只和前一次鼠标的位置坐标有关而触摸屏则是一种绝对坐标系统,要选哪就直接点哪,与相对定位系统有着本质的区别绝对坐标系统的特点是每一次定位坐标与上一次定位坐标没有关系,每次触摸的数据通过校准转为屏幕上的坐标,不管在什么情况下,触摸屏这套坐标在同一点的输出数据是稳定的不过由于技术原理的原因,并不能保证同一点触摸每一次采样数据相同,不能保证绝对坐标定位,点不准,这就是触摸屏最怕出现的问题漂移对于性能质量好的触摸屏来说,漂移的情况出现并不是很严重所以很多应用触摸屏的系统启动后,进入应用程序前,先要执行校准程序通常应用程序中使用的LCD坐标是以像素为单位的比如说左上角的坐标是一组非0的数值,比如(20,20),而右下角的坐标为(620,460)这些点的坐标都是以像素为单位的,而从触摸屏中读出的是点的物理坐标,其坐标轴的方向、XY值的比例因子、偏移量、缩放因子都与LCD坐标不同,所以,可以在IAL的某个函数(比如wait_event函数)中把物理坐标首先转换为像素坐标,然后再赋给POS结构,达到坐标转换的目的.触摸屏校正思路在IAL的某个函数(比如wait_event函数)中加入调试信息,__板上运行Calibrate程序,那么触摸屏上任何一点的坐标就可以在主机监视屏上回显出来于是,就采集到了4个角的物理坐标,假设是
6.4英寸屏,640X480分辨率,则它们的像素坐标分别是
(2020)、
(20460)、620460和62020这样,使用待定系数法就可以算出坐标系之间的平移关系比如Vx=xFactor*Px+xOffsetVy=yFactor*Py+yOffset
4.2主程序流程图主程序流程图如下图4-1所示图4-
14.3C语言的简介C语是一种计算机程序设计语言它既具有高级语言的特点,又具有汇编语言的特点它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序因此,它的应用范围广泛,不仅仅是在软件__上,而且各类科研都需要用到C语言,具体应用比如单片机以及嵌入式系统__C语言具有下列特点1)C是中级语言它把高级语言的基本结构和语句与低级语言的实用性结合起来C语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元2)C是结构式语言结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此__这种结构化方式可使程序层次清晰,便于使用、维护以及调试C语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化3)C语言功能齐全具有各种各样的数据类型,并引入了指针概念,可使程序效率更高另外C语言也具有强大的图形功能,支持多种显示器和驱动器而且计算功能、逻辑判断功能也比较强大,可以实现决策目的的游戏4)C语言适用范围大适合于多种操作系统,如Windows、DOS、UNIX等等;也适用于多种机型C语言对编写需要硬件进行操作的场合,明显优于其它解释型高级语言,有一些大型应用软件也是用C语言编写的C语言具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画它是数值计算的高级语言
4.4关键代码//初始化液晶接口voidLCD_Portvoid{IO0SET_bit.P0_21=1;//WRIO0SET_bit.P0_20=1;//RDIO0DIR_bit.P0_20=1;//RDIO0DIR_bit.P0_21=1;//WRIO0DIR_bit.P0_30=1;//RSIO0DIR_bit.P0_17=1;//CSIO0DIR_bit.P0_11=1;IO0DIR_bit.P0_12=1;}//延时voidDelayMsunsignedshortk{unsignedshorti;unsignedintj;fori=k;i0;i--forj=1000;j0;j--;}//向HC573写入数据voidWrite_HC573unsignedshortDat{unsignedchardat;dat=unsignedcharDat0xFF;IO1SET|=unsignedintdat16;IO1CLR|=~unsignedintdat160XFF16;IO0SET_bit.P0_11=1;IO0CLR_bit.P0_11=1;dat=unsignedcharDat80xFF;IO1SET|=unsignedintdat16;IO1CLR|=~unsignedintdat160XFF16;IO0SET_bit.P0_12=1;IO0CLR_bit.P0_12=1;}//向液晶屏写入数据voidTFTWriDataunsignedshortch{LCD_RS_H;//RS=1LCD_CS_L;//CS=0Write_HC573ch;LCD_WR_L;//WR=0LCD_WR_H;//WR=1LCD_CS_H;//CS=1}//向液晶屏写入命令voidTFTWriComunsignedshortch{LCD_RS_L;//RS=0Write_HC573ch;LCD_WR_L;//WR=0LCD_CS_L;//CS=0LCD_WR_H;//WR=1LCD_CS_H;//CS=1}//写入控制字voidwrite_comunsignedshortaddressunsignedshortnum{TFTWriComaddress;TFTWriDatanum;}//液晶屏初始化voidTftInitvoid{LCD_RESET_L;//低电平复位Delayn_____;LCD_RESET_H;#defineDelayNSDelaynwrite_com0x00000x0001;DelayNS1000;//打开晶振write_com0x00030xA8A4;DelayNS1000;//0xA8A4write_com0x000C0x0000;DelayNS1000;write_com0x000D0x080C;DelayNS1000;write_com0x000E0x2B00;DelayNS1000;write_com0x001E0x00B0;DelayNS1000;write_com0x00010x2B3F;DelayNS1000;//驱动输出控制320*2400x6B3Fwrite_com0x00020x0600;DelayNS1000;write_com0x00100x0000;DelayNS1000;write_com0x00110x6070;DelayNS1000;//0x4030//定义数据格式16位色write_com0x00050x0000;DelayNS1000;write_com0x00060x0000;DelayNS1000;write_com0x00160xEF1C;DelayNS1000;write_com0x00170x0003;DelayNS1000;write_com0x00070x0233;DelayNS1000;//0x0233write_com0x000B0x0000;DelayNS1000;write_com0x000F0x0000;DelayNS1000;//扫描开始地址write_com0x00410x0000;DelayNS1000;write_com0x00420x0000;DelayNS1000;write_com0x00480x0000;DelayNS1000;write_com0x00490x013F;DelayNS1000;write_com0x004A0x0000;DelayNS1000;write_com0x004B0x0000;DelayNS1000;write_com0x00440xEF00;DelayNS1000;write_com0x00450x0000;DelayNS1000;write_com0x00460x013F;DelayNS1000;write_com0x00300x0707;DelayNS1000;write_com0x00310x0204;DelayNS1000;write_com0x00320x0204;DelayNS1000;write_com0x00330x0502;DelayNS1000;write_com0x00340x0507;DelayNS1000;write_com0x00350x0204;DelayNS1000;write_com0x00360x0204;DelayNS1000;write_com0x00370x0502;DelayNS1000;write_com0x003A0x0302;DelayNS1000;write_com0x00__0x0302;DelayNS1000;write_com0x00230x0000;DelayNS1000;write_com0x00240x0000;DelayNS1000;write_com0x00250x8000;DelayNS1000;write_com0x004f0;//行首址0write_com0x004e0;//列首址0}5下载与调试在代码编译成功之后,我们通过下载代码到ALIENTEKMiniSTM32__板上,可以看到LCD显示如下内容图5-1程序运行效果如果已经校准过了,则在等待
1.5s之后进入手写界面,同时DS0开始闪烁,界面如下图所图5-2手写界面此时,我们就可以在该界面下用笔或者手指输入信息了如果没有校准过,则会自动进入校准程序(当你发现精度不行的时候,也可以通过按KEY0进入校准程序),如下图所示,在校准完成之后自动进入手写界面图5-3校准界面6结论本文完成了基于xpt2046控制的触摸屏软件硬件的设计,实现了用xpt2046控制TFTLCD以及实现人机交汇,在实际应用中该系统可靠稳定,达到预期效果致谢本论文是在我院指导老师徐朝胜老师的精心指导下完成的,在整个毕业设计过程中徐老师给了我很大的帮助,从选题,开题,到设计方案的确定及最终论文的撰写,修改,最终完成,都离不开徐老师的精心指导特别是我在设计过程中遇到困难不能解决时,徐老师总会在百忙之中抽出宝贵的时间,耐心的给我讲解,让我真正的理解其中的原理,能够__的找到解决问题的途径在此我对他表示真诚的感谢!借此机会,我还要感谢校__,和大学四年的授课老师,在大学四年中,是他们为我提供一个良好的学习环境,教给了我很多知识,和学习的方法正是因为有了他们默默无闻的奉献,我才能成为一个优秀的大学毕业生除此之外,我还要感谢曾经给予我很多帮助和支持的07__的全体同学,在他们的热心帮助下,使我增长了不少知识,积累了不少经验所以在这里,我要向所有关心和帮助过我的人表示我最诚挚的祝福和感谢!____
[1]何咏、马孝江、王永刚;基于DSP的人机接口技术;机床与液压;
2004.No.11;P110~112
[2]朱宇翔、程明霄、李明;基于DSP的液晶显示器的软硬件设计及实现;微型机与应用;2005年第2期;P15~17
[3]触摸屏技术与应用__成都吉锐触摸电脑有限公司编写组电子科技大学出版社
[4]程芳真、蒋滋康,触摸屏在电站仿真中的应用,计算机应用研究,
1999.4
[5]许荣斌、谢莹、朱永红,触摸屏常用校准算法分析,工业控制计算机,
2006.4
[6]龚丽娟、陆以勤、吕锦触,触摸屏数据处理算法研究及实现,微计算机信息,
2006.9
[7]宋成,孙广富.触摸屏在53C2410上的应用实例〔J].单片机及嵌入式系统应用,
2005.1
[8]触摸屏技术浅谈[J].现代物理知识200403
[9]触摸屏——让电脑盲也可使用计算机[J].科学中国人199601
[10]触摸屏的选择与应用[J].三明高等专科学校学报1998S3
[11]感触随心——三星Anycall感触系列手机[J].新华__200812
[12]孔玮.全新的多媒体设备——触摸屏[J].__工程学院学报200006
[13]TexasInstruments.LiteratureNumber.SPRS174NApril2001–Revised__y
2006.TMS320F2810TMS320F2811TMS320F2812TMS320C2810TMS320C2811TMS320C2812DIGITALSIGNALPRO__SSORSDATA__NUAL
[14]Touch-screenTechnologyandItsPerfor__n______ysisLIURui(Tian___ElectromechanicalVocationalandTechnicalCollege;Tian___300131;China)
[15]ApplicationofMultimediaTouchScreeninSchoolInfor__tionServi__SystemZHANGBing;WANGQian-fei(ModernEducationTechnologyInfor__tion__nter;JiangxiUniversityofScien__andTechnology;Ganzhou341000;China
[16]ApplicationofMultimediaTouchScreeninSchoolInfor__tionServi__SystemZHANGBing;WANGQian-fei(ModernEducationTechnologyInfor__tion__nter;JiangxiUniversityofScien__andTechnology;Ganzhou341000;China
[17]XPT2046datasheet
[18]TFTLCDdatasheetAbstract:Thispaperintrodu__stouch-screenhardwareandsoftwareimplementationsanddescribeshowtoimplementhu__n-computerinteraction.SimulationofTFTLCDThinFilmTransistor-LiquidCrystalDisplaymoduletouchscreendesignandulti__telythefunctionofahand-written.TFTLCDintrodu__dtouch-screenhardwaredesignandchip-basedtouch-screencontrolxpt2406controlcircuitandsoftwareCprogramKeywords:touchscreenTFTLCDxpt2406cprogramming附录源代码/******************************************************************CopyrightC2008-2009力天电子,LiTianTech.Co.Ltd.ModuleName:TFT_LCDFileName:TFT_LCD.cAuthor:HECHENGCreateDate:2009/10/19Version:
1.0Function:实现液晶屏驱动功能Description:无Support:___.LT
430.com__:330508762******************************************************************/#includeNXP\IOLPC
2148.h#includehc
595.h#includepic.h/*系统设置Fosc、Fcclk、Fcco、Fpclk必须定义*/#defineFosc12000000//晶振频率10MHz~25MHz,应当与实际一至#defineFcclkFosc*5//系统频率,必须为Fosc的整数倍1~32,且=60MHZ#defineFccoFcclk*2//CCO频率,必须为Fcclk的
2、
4、
8、16倍,范围为156MHz~320MHz#defineFpclkFcclk/4*4//VPB时钟频率,只能为Fcclk/4的1~4倍//液晶屏接口宏定义#defineRED0xf800#defineGREEN0x07e0#defineBLUE0x001f#defineWHITE0xffff#defineBLACK0x0000#defineYELLOW0xFFE0#defineCH375DataOutIO1DIR|=0XFF16//D0~D7#defineCH375DataInIO1DIR=~0XFF16//D0~D7#defineLCD_RS_HIO0SET_bit.P0_30=1#defineLCD_RS_LIO0CLR_bit.P0_30=1#defineLCD_WR_HIO0SET_bit.P0_21=1#defineLCD_WR_LIO0CLR_bit.P0_21=1#defineLCD_RD_HIO0SET_bit.P0_20=1#defineLCD_RD_LIO0CLR_bit.P0_20=1#defineLCD_CS_LIO0CLR_bit.P0_17=1#defineLCD_CS_HIO0SET_bit.P0_17=1#defineLCD_RESET_LHC595_DATA=~17;Write595#defineLCD_RESET_HHC595_DATA|=17;Write595//函数声明voidLCD_Portvoid;voidTftInitvoid;voidDispOneColorunsignedshortColor;voidTFTWriComunsignedshortch;voidDisp__allPicunsignedshortxunsignedshortyunsignedshortwunsignedshorthconstunsignedchar*str;voidDispPic240_320constunsignedchar*str;voidPLL_Initvoid;//主函数void__invoid{PLL_Init;//初始化系统时钟HC595_Init;//初始化hc595LCD_Port;//初始化液晶接口CH375DataOut;//CH375接口输出方式TftInit;//初始化液晶屏DispOneColorBLUE;//全屏显示一种颜色//Disp__allPic0010966pic2;//X坐标,Y坐标,__X轴长度,__Y轴长度,__数组//Disp__allPic148092175pic;//X坐标,Y坐标,__X轴长度,__Y轴长度,__数组DispPic240_320Pic2;//显示一副图像while1;//stop}//系统时钟初始化voidPLL_Initvoid{/*设置系统各部分时钟*/PLLCON=1;#ifFcclk/4/Fpclk==1VPBDIV=0;#endif#ifFcclk/4/Fpclk==2VPBDIV=2;#endif#ifFcclk/4/Fpclk==4VPBDIV=1;#endif#ifFcco/Fcclk==2PLLCFG=Fcclk/Fosc-1|05;#endif#ifFcco/Fcclk==4PLLCFG=Fcclk/Fosc-1|15;#endif#ifFcco/Fcclk==8PLLCFG=Fcclk/Fosc-1|25;#endif#ifFcco/Fcclk==16PLLCFG=Fcclk/Fosc-1|35;#endifPLLFEED=0xaa;PLLFEED=0x55;whilePLLSTAT110==0;PLLCON=3;PLLFEED=0xaa;PLLFEED=0x55;}//初始化液晶接口voidLCD_Portvoid{IO0SET_bit.P0_21=1;//WRIO0SET_bit.P0_20=1;//RDIO0DIR_bit.P0_20=1;//RDIO0DIR_bit.P0_21=1;//WRIO0DIR_bit.P0_30=1;//RSIO0DIR_bit.P0_17=1;//CSIO0DIR_bit.P0_11=1;IO0DIR_bit.P0_12=1;}//延时voidDelayMsunsignedshortk{unsignedshorti;unsignedintj;fori=k;i0;i--forj=1000;j0;j--;}//向HC573写入数据voidWrite_HC573unsignedshortDat{unsignedchardat;dat=unsignedcharDat0xFF;IO1SET|=unsignedintdat16;IO1CLR|=~unsignedintdat160XFF16;IO0SET_bit.P0_11=1;IO0CLR_bit.P0_11=1;dat=unsignedcharDat80xFF;IO1SET|=unsignedintdat16;IO1CLR|=~unsignedintdat160XFF16;IO0SET_bit.P0_12=1;IO0CLR_bit.P0_12=1;}//向液晶屏写入数据voidTFTWriDataunsignedshortch{LCD_RS_H;//RS=1LCD_CS_L;//CS=0Write_HC573ch;LCD_WR_L;//WR=0LCD_WR_H;//WR=1LCD_CS_H;//CS=1}//向液晶屏写入命令voidTFTWriComunsignedshortch{LCD_RS_L;//RS=0Write_HC573ch;LCD_WR_L;//WR=0LCD_CS_L;//CS=0LCD_WR_H;//WR=1LCD_CS_H;//CS=1}//写入控制字voidwrite_comunsignedshortaddressunsignedshortnum{TFTWriComaddress;TFTWriDatanum;}//液晶屏初始化voidTftInitvoid{LCD_RESET_L;//低电平复位Delayn_____;LCD_RESET_H;#defineDelayNSDelaynwrite_com0x00000x0001;DelayNS1000;//打开晶振write_com0x00030xA8A4;DelayNS1000;//0xA8A4write_com0x000C0x0000;DelayNS1000;write_com0x000D0x080C;DelayNS1000;write_com0x000E0x2B00;DelayNS1000;write_com0x001E0x00B0;DelayNS1000;write_com0x00010x2B3F;DelayNS1000;//驱动输出控制320*2400x6B3Fwrite_com0x00020x0600;DelayNS1000;write_com0x00100x0000;DelayNS1000;write_com0x00110x6070;DelayNS1000;//0x4030//定义数据格式16位色write_com0x00050x0000;DelayNS1000;write_com0x00060x0000;DelayNS1000;write_com0x00160xEF1C;DelayNS1000;write_com0x00170x0003;DelayNS1000;write_com0x00070x0233;DelayNS1000;//0x0233write_com0x000B0x0000;DelayNS1000;write_com0x000F0x0000;DelayNS1000;//扫描开始地址write_com0x00410x0000;DelayNS1000;write_com0x00420x0000;DelayNS1000;write_com0x00480x0000;DelayNS1000;write_com0x00490x013F;DelayNS1000;write_com0x004A0x0000;DelayNS1000;write_com0x004B0x0000;DelayNS1000;write_com0x00440xEF00;DelayNS1000;write_com0x00450x0000;DelayNS1000;write_com0x00460x013F;DelayNS1000;write_com0x00300x0707;DelayNS1000;write_com0x00310x0204;DelayNS1000;write_com0x00320x0204;DelayNS1000;write_com0x00330x0502;DelayNS1000;write_com0x00340x0507;DelayNS1000;write_com0x00350x0204;DelayNS1000;write_com0x00360x0204;DelayNS1000;write_com0x00370x0502;DelayNS1000;write_com0x003A0x0302;DelayNS1000;write_com0x00__0x0302;DelayNS1000;write_com0x00230x0000;DelayNS1000;write_com0x00240x0000;DelayNS1000;write_com0x00250x8000;DelayNS1000;write_com0x004f0;//行首址0write_com0x004e0;//列首址0}//显示一种颜色voidDispOneColorunsignedshortColor{unsignedchari;unsignedintj;write_com0x004f0;//行首址0write_com0x004e0;//列首址0TFTWriCom0x22;LCD_RS_H;//RS=1LCD_CS_L;//CS=0Write_HC573Color;forj=0;j320;j++fori=0;i240;i++{LCD_WR_L;//WR=0LCD_WR_H;//WR=1}LCD_CS_H;//CS=1}//清屏voidDispClearvoid{DispOneColorBLACK;}//设置RAM地址voidSet_ra__ddrunsignedshortxunsignedshorty{write_com0x004fy;//行首址write_com0x004ex;//列首址}//显示一个小__voidDisp__allPicunsignedshortxunsignedshortyunsignedshortwunsignedshorthconstunsignedchar*str{unsignedshortijtemp;forj=0;jh;j++{Set_ra__ddrxy+j;TFTWriCom0x22;fori=0;iw;i++{//send_data*unsignedshort*str[j*w+i*2];//高位在前temp=str[j*w+i*2+1]8;//低位在前temp|=str[j*w+i*2];TFTWriDatatemp;}}}//显示一副240x320分辨率的__voidDispPic240_320constunsignedchar*str{inti;Set_ra__ddr00;TFTWriCom0x22;fori=0;i240*320;i++{TFTWriData*unsignedshort*str[2*i];}}XPT2046最小系统TFTLD模块否开始硬件初始化刷新并不断检测触摸屏状延时读取坐标点的坐标值获取初始值的坐标值触摸屏仍被触摸吗是触摸屏被触摸么。