




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、工 学 院 毕 业 设 计( 论 文 )题 目:触摸式lcd人机接口设计 专 业: 电 子 信 息 工 程 班 级: 电 信 072 班 姓 名: 学 号: 指导教师: 日 期: 2010 .12 目录1触摸屏的概况及简介11.1概况11.2 简介22系统器件介绍和工作原理22.1 tftlcd简介222 xpt2046芯片42.2.1 芯片功能42.2.2 芯片功能特性42.2.3 xpt管脚描述52.2.4 xpt极限参数62.2.5 基本原理描述62.3压力传感器63硬件设计73.1 单片机最小系统模块设计73.1.1 复位电路83.1.2 时钟电路93.2 触摸屏硬件设计93.3 基于
2、xpt2406的控制电路144 系统软件设计144.1触屏校准作用144.2主程序流程图154.3 c语言的简介164.4关键代码165 下载与调试196 结论21致谢22参考文献23附录25触摸式lcd人机接口设计工学院电信072指导老师: 摘要:本文介绍了触摸屏的软硬件实现方案,同时介绍了如何实现人机交互。系统模拟对tftlcd(thin film transistor-liquid crystal display)模块的触摸屏设计,最终实现一个手写的功能。介绍了触摸屏tftlcd的硬件设计和基于芯片xpt2406控制触摸屏的控制电路,以及软件的c编程。关键字:触摸屏 tftlcd xpt
3、2406 c编程1触摸屏的概况及简介1.1概况 随着多媒体信息查询的与日俱增,人们越来越多地谈到触摸屏,因为触摸屏不仅适用于中国多媒体信息查询的国情,而且触摸屏具有坚固耐用、反应速度快、节省空间、易于交流等许多优点。利用这种技术,我们用户只要用手指轻轻地碰计算机显示屏上的图符或文字就能实现对主机操作,从而使人机交互更为直截了当,这种技术大大方便了那些不懂电脑操作的用户。 触摸屏作为一种最新的电脑输入设备,它是目前最简单、方便、自然的一种人机交互方式。它赋予了多媒体以崭新的面貌,是极富吸引力的全新多媒体交互设备。触摸屏在我国的应用范围非常广阔,主要是公共信息的查询;如电信局、税务局、银行、电力等
4、部门的业务查询;城市街头的信息查询;此外应用于领导办公、工业控制、军事指挥、电子游戏、点歌点菜、多媒体教学、房地产预售等。将来,触摸屏还要走入家庭。 随着使用电脑作为信息来源的与日俱增,触摸屏以其易于使用、坚固耐用、反应速度快、节省空间等优点,使得系统设计师们越来越多的感到使用触摸屏的确具有相当大的优越性。触摸屏出现在中国市场上至今只有短短的几年时间,这个新的多媒体设备还没有为许多人接触和了解,包括一些正打算使用触摸屏的系统设计师,还都把触摸屏当作可有可无的设备,从发达国家触摸屏的普及历程和我国多媒体信息业正处在的阶段来看,这种观念还具有一定的普遍性。事实上,触摸屏是一个使多媒体信息或控制改头
5、换面的设备,它赋予多媒体系统以崭新的面貌,是极富吸引力的全新多媒体交互设备。发达国家的系统设计师们和我国率先使用触摸屏的系统设计师们已经清楚的知道,触摸屏对于各种应用领域的电脑已经不再是可有可无的东西,而是必不可少的设备。它极大的简化了计算机的使用,即使是对计算机一无所知的人,也照样能够信手拈来,使计算机展现出更大的魅力。解决了公共信息市场上计算机所无法解决的问题。 随着城市向信息化方向发展和电脑网络在国民生活中的渗透,信息查询都已用触摸屏实现-显示内容可触摸的形式出现。1.2 简介 我们一般液晶所用的触摸屏,最多的就是电阻式触摸屏了(多点触摸属于电容式触摸屏,比如m8,iphone等支持多点
6、触摸的手机所用的屏就是电容式的触摸屏),alientek tftlcd自带的触摸屏属于电阻式触摸屏,下面简单介绍下电阻式触摸屏的原理。 电阻式触摸屏利用压力感应进行控制。电阻触摸屏的主要部分是一块与显示器表面非常配合的电阻薄膜屏,这是一种多层的复合薄膜,它以一层玻璃或硬塑料平板作为基层,表面涂有一层透明氧化金属(透明的导电电阻)导电层,上面再盖有一层外表面硬化处理、光滑防擦的塑料层、它的内表面也涂有一层涂层、在他们之间有许多细小的(小于1/1000英寸)的透明隔离点把两层导电层隔开绝缘。当手指触摸屏幕时,两层导电层在触摸点位置就有了接触,电阻发生变化,在x和y两个方向上产生信号,然后送触摸屏控
7、制器。控制器侦测到这一接触并计算出(x,y)的位置,再根据获得的位置模拟鼠标的方式运作。这就是电阻技术触摸屏的最基本的原理。电阻屏的特点有:1)是一种对外界完全隔离的工作环境,不怕灰尘、水汽和油污。2)可以用任何物体来触摸,可以用来写字画画,这是它们比较大的优势。3)电阻触摸屏的精度只取决于a/d转换的精度,因此都能轻松达到4096*4096。从以上介绍可知,触摸屏都需要一个ad转换器, 一般来说是需要一个控制器的。alientek tftlcd模块选择的是四线电阻式触摸屏,这种触摸屏的控制芯片有很多,包括:ads7843、ads7846、tsc2046、xpt2046和ak4182等。这几款
8、芯片的驱动基本上是一样的,也就是你只要写出了ads7843的驱动,这个驱动对其他几个芯片也是有效的。而且封装也有一样的,完全pintopin。所以在替换起来,很方便。alientek tftlcd模块自带的触摸屏控制芯片为xpt2046。xpt2046是一款4导线制触摸屏控制器,内含12位分辨率125khz转换速率逐步逼近型a/d转换器。xpt2046支持从1.5v到5.25v的低电压i/o接口。xpt2046能通过执行两次a/d转换查出被按的屏幕位置, 除此之外,还可以测量加在触摸屏上的压力。内部自带2.5v参考电压可以作为辅助输入、温度测量和电池监测模式之用,电池监测的电压范围可以从0v到
9、6v。xpt2046片内集成有一个温度传感器。在2.7v的典型工作状态下,关闭参考电压,功耗可小于0.75mw。xpt2046采用微小的封装形式:tssop-16,qfn-16(0.75mm厚度)和vfbga48。工作温度范围为-40+85。该芯片完全是兼容ads7843和ads7846的,关于这个芯片的详细使用,可以参考这两个芯片的datasheet。2系统器件介绍和工作原理2.1 tftlcd简介2.1.1工作原理 随着微电子技术不断创新和发展,高性能arm嵌入式系统已广泛应用于各个领域中。人们在可视化效果的追求方面也与日俱增,高性能 rfrlcd不仅可以显示华丽的界面和高分辨力多媒体,同
10、时,还具有低压、低功耗、体积小、重量轻和超薄等诸多优点。所以具有高品质因数液晶屏的嵌入式系统被广泛运用于手持设备、数字机顶盒、地学核仪器中。嵌入式开发系统是一种软件和硬件的结合体,是由硬件层、中间层、软件层和功能层有机结合实现1个或多个特定功能的功能体n 。未来嵌入式操作系统发展,软件与硬件的无缝结合是必然的趋势,尤其是本设计中用到的嵌入式linux操作系统,它与硬件芯片的结合程度比任何其他操作系统更要紧密。 嵌入式系统中tft液晶软硬件设计tftlcd的每个像素点都是由集成在自身上的tft来控制的,每个像素点都是有源像素点。当嵌入式处理器给出像点时钟、数据使能信号和rgb数据信号时,要经过液
11、晶配套芯片iz9fc22数据扫描来进行时序匹配。多路矩阵电压源max1664来控制tft开启关闭,tft开启时,数据通过源极驱动器加载到显示电极,显示电极和公共电极间的电压差再作用于液晶,进而达到tftlcd显示的目的。2.1.2 tftlcd结构 tft-lcd的结构如图一所示,主要元件之功能说明如下: 图2-1tft-lcd的结构彩色滤光片(cf。color filter) 彩色的lcd需要用到彩色滤光片(color filter),液晶面板透过驱动ic的电压改变,使液晶分子排排站或呈扭转状,形成闸门选择背光源光线穿透与否,穿透的光线,再经由彩色滤光片的处,才能表现出彩色的画面。彩色滤光片
12、之制作是于玻璃基板上,将红、绿、蓝三原色之有机材料,制作在每一个尽素之内,如图图2-2彩色滤光片黑色阵列在彩色滤光片上。用来遮住r、g、b各pixel间之空隙,可大幅减少lcd光点间彼此因光害所产生的干扰,使画面更清晰,提升了阅读上的舒适度,同时也减轻了长期使用所造成的眼部压力及疲累感。配向膜 配向膜是用来将液晶分子做定位的工作,其前后两片光罩上的配向膜需互成九十方能将液晶分子依序旋转,其制作方式是用棉刷依一定方向刷过,也有使用蒸度的方式配向,过成本较高。 偏光板 液晶显示器均须使用上下两片偏光板,其功能即在于將非偏极光转为偏极光,而液晶显示器就是利用此偏极光加上液晶扭转特性达到控制光线的通过
13、与否,以形成明暗。透明电极 液晶显示器之液晶分子须有上下方之电极来感应,控制其旋转,而电极必须是透明且能导电之材质,目前使用ito(铟锡氧化物)。背光光源 由于液晶本身会发光,必须在液晶显示面板后方加上背光源(大部分是冷阴极管或led),光线穿透玻璃基板、液晶、彩色滤光片、偏光板等相关材料,进入人的眼睛形成影像。玻璃基板 玻璃在tft-lcd产业中扮演的角色好比是半导体产业中的晶体,因此tft-lcd产业对玻璃基板表面精度之要求极高。tft-lcd的制程需要真空蒸镀与蚀刻,所以基板玻璃必须要能忍受強酸強碱之腐蚀、高温的制程环境,并且必须具备比矽晶体精密的表面平整与平面起伏度。 22 xpt20
14、46芯片2.2.1 芯片功能xpt2046是一款4导线制触摸屏控制器,内含12位分辨率125khz转换速率逐步逼近型a/d转换器。xpt2046支持从1.5v到5.25v的低电压i/o接口。xpt2046能通过执行两次a/d转换查出被按的屏幕位置, 除此之外,还可以测量加在触摸屏上的压力。内部自带2.5v参考电压可以作为辅助输入、温度测量和电池监测模式之用,电池监测的电压范围可以从0v到6v。xpt2046片内集成有一个温度传感器。 在2.7v的典型工作状态下,关闭参考电压,功耗可小于0.75mw。xpt2046采用微小的封装形式:tssop-16,qfn-16(0.75mm厚度)和vfbga
15、48。工作温度范围为-40+85。2.2.2 芯片功能特性 具有4线制触摸屏接口 具有触摸压力测量功能 能直接测量电源电压(0v6v) 低功耗(260a) 可单电源工作,工作电压范围为2.2v5.25v 支持1.5v5.25v电平的数字i/o口 内部自带2.5v参考电压 具有125khz的转换速率 采用qspi 和 spi 3线制通信接口 具有可编程的8位或12位的分辨率 具有1路辅助模拟量输入 能够自动掉电 封装小,节约电路面积:tssop-16,qfn-16(0.75mm厚度)和vfbga48 全兼容tsc2046,ads7843/7846和ak4182 2.2.3 xpt管脚描述表2-1
16、 管脚描述qfn引脚号 tssop引脚号 vfbga引脚号 名称 说明 1 13 a5 busy 忙时信号线。当 为高电平时为高阻状态 2 14 a4 din 串行数据输入端。当 为低电平时,数据在dclk上升沿锁存进来 3 15 a3 片选信号。控制转换时序和使能串行输入输出寄存器,高电平时adc掉电 4 16 a2 dclk 外部时钟信号输入 5 1 b1和c1 vcc 电源输入端 6 2 d1 xp xp位置输入端 7 3 e1 yp yp位置输入端 8 4 g2 xn xn位置输入端 9 5 g3 yn yn位置输入端 10 6 g4和g5 gnd 接地 11 7 g6 vbat 电池
17、监视输入端 12 8 e7 aux adc辅助输入通道 13 9 d7 vref 参考电压输入/输出 14 10 c7 iovdd 数字电源输入端 15 11 b7 penirq 笔接触中断引脚 16 12 a6 dout 串行数据输出端。数据在dclk的下降沿移出,当 高电平时为高阻状态 2.2.4 xpt极限参数表格2-2 极限参数名称参数vcc和iovdd电压-0.3v至+6v模拟输入信号电压0.3v至vcc0.3v数字输入信号电压0.3v至iovdd0.3v功耗250mw最大结温150工作温度4085贮存温度-65150焊接温度(小于10秒)300注:在极限值之外或任何其他条件下,芯片
18、的工作性能不予保证。2.2.5 基本原理描述 xpt2046是一种典型的逐次逼近型模数转换器(sar adc),包含了采样/保持、模数转换、串口数据 输出等功能。同时芯片集成有一个2.5v的内部参考电压源、温度检测电路,工作时使用外部时钟。xpt2046可以单电源供电,电源电压范围为2.7v5.5v。参考电压值直接决定adc的输入范围,参考电压可以使用内部参考电压,也可以从外部直接输入1vvcc范围内的参考电压(要求外部参考电压源输出阻抗低)。x、y、z、vbat、temp和aux模拟信号经过片内的控制寄存器选择后进入adc,adc可以配置为单端或差分模式。选择vbat、temp和aux时应该
19、配置为单端模式;作为触摸屏应用时,应该配置为差分模式,这可有效消除由于驱动开关的寄生电阻及外部的干扰带来的测量误差,提高转换精度。2.3压力传感器 压力传感器是工业实践中最为常用的一种传感器,而我们通常使用的压力传感器主要是利用压电效应制造而成的,这样的传感器也称为压电传感器。我们知道,晶体是各向异性的,非晶体是各向同性的。某些晶体介质,当沿着一定方向受到机械力作用发生变形时,就产生了极化效应;当机械力撤掉之后,又会重新回到不带电的状态,也就是受到压力的时候,某些晶体可能产生出电的效应,这就是所谓的极化效应。科学家就是根据这个效应研制出了压力传感器。压电传感器中主要使用的压电材料包括有石英、酒
20、石酸钾钠和磷酸二氢胺。其中石英(二氧化硅)是一种天然晶体,压电效应就是在这种晶体中发现的,在一定的温度范围之内,压电性质一直存在,但温度超过这个范围之后,压电性质完全消失(这个高温就是所谓的“居里点”)。由于随着应力的变化电场变化微小(也就说压电系数比较低),所以石英逐渐被其他的压电晶体所替代。而酒石酸钾钠具有很大的压电灵敏度和压电系数,但是它只能在室温和湿度比较低的环境下才能够应用。磷酸二氢胺属于人造晶体,能够承受高温和相当高的湿度,所以 已经得到了广泛的应用。在现在压电效应也应用在多晶体上,比如现在的压电陶瓷,包括钛酸钡压电陶瓷、pzt、铌酸盐系压电陶瓷、铌镁酸铅压电陶瓷等等。压电效应是压
21、电传感器的主要工作原理,压电传感器不能用于静态测量,因为经过外力作用后的电荷,只有在回路具有无限大的输入阻抗时才得到保存。实际的情况不是这样的,所以这决定了压电传感器只能够测量动态的应力。压电传感器主要应用在加速度、压力和力等的测量中。压电式加速度传感器是一种常用的加速度计。它具有结构简单、体积小、重量轻、使用寿命长等优异的特点。压电式加速度传感器在飞机、汽车、船舶、桥梁和建筑的振动和冲击测量中已经得到了广泛的应用,特别是航空和宇航领域中更有它的特殊地位。压电式传感器也可以用来测量发动机内部燃烧压力的测量与真空度的测量。也可以用于军事工业,例如用它来测量枪炮子弹在膛中击发的一瞬间的膛压的变化和
22、炮口的冲击波压力。它既可以用来测量大的压力,也可以用来测量微小的压力。压电式传感器也广泛应用在生物医学测量中,比如说心室导管式微音器就是由压电传感器制成的,因为测量动态压力是如此普遍,所以压电传感器的应用就非常广。除了压电传感器之外,还有利用压阻效应制造出来的压阻传感器,利用应变效应的应变式传感器等,这些不同的压力传感器利用不同的效应和不同的材料,在不同的场合能够发挥它们独特的用途。3硬件设计总体设计框如图3-1所示:xpt2046最小系统tftld模块 图3-13.1 单片机最小系统模块设计所谓单片机最小系统是指能维持单片机运行行的最简单配置系统。最小系统包括晶体振荡电路 、复位开关、接插口
23、和电源部分,本系统单片机采用at89c51或其兼容系列,如图3-3。采用12mhz高精度的晶振,以获得较稳定的时钟频率,减小测量误差。单片机用p1.0端口输出超声波转化器所需的40khz方波信号,利用外中断0口检测超声波接受电路输出的返回信号。 图3-2最小系统模块单元图单片机为系统的主控单元,系统通过p0口将模数转换后数字信号输入cpu,由cpu比较判断温度值,运算功能是由运算部件完成的,运算部件的功能是实现数据的算术逻辑运算、位变址处理和数据传送操作。单片机中通过控制部件完成各项控制功能。控制部件是单片机的神经中枢,它包括时钟电路、复位电路、指令寄存器、译码以及信息传送控制部件。它以主振频
24、率为基准发出cpu的时序,对指令进行译码,然后发出各种控制信号,完成一系列定时控制的微操作,用来控制单片机各部分的运行。其中有一些控制信号线能简化应用系统外围控制逻辑,如控制地址锁存的地址锁存信号ale,控制片外程序存储器运行的片内外存储器选择信号ea,以及片外取指信号psen。复位电路的好坏对系统的启动、停止有极大的影响;精准的时钟电路是保证控制精度的前提。因此单片机模块中对复位电路与时钟电路的设计非常重要。3.1.1 复位电路 图3-3单片机的复位电路单片机的复位引脚reset出现2个机器周期以上的高电平时,单片机就执行复位操作。本系统采用的复位方式为上电自动复位和开关复位相结合的方式。电
25、源接通后,单片机自动复位,并且在系统运行期间,用按键手动操作也能使单片机复位。上电后电容充电,使reset持续一段时间的高电平。当单片机已在运行当中时,按下复位按键后松开,也能使reset为一段时间的高电平,从而实现开关复位操作。3.1.2 时钟电路单片机的时钟信号通常用两种电路形式得到:内部振荡方式和外部振荡方式。本控制器采用的是单片机外接石英晶体的内部时钟方式。因为这种方式得到的时钟信号比较稳定。在at89c51内部有一个高增益的反向放大器,其输入端引脚xtal1和xtal2用于外接石英晶体和微调电容,构成振荡器,再由内部的时钟发生器对振荡信号进行二分频,向cpu提供时钟信号。图3-5中电
26、容c1、c2对振荡频率起微调作用,同时两个电容器起稳定振荡频率、快速起振的作用。电容容量的选择范围一般为30pf10pf,振荡器的振荡频率选择范围为1.2mhz12mhz,典型值为6mhz或12mhz。本模块中电容c1、c2选择30pf,振荡频率选择12mhz。图3-4单片机时钟电路3.2 触摸屏硬件设计本节实验功能简介:开机的时候先通过24c01的数据判断触摸屏是否已经校准过,如果没有校准,则执行校准程序,校准过后再进入手写程序。如果已经校准了,就直接进入手写程序,此时可以通过按动屏幕来实现手写输入。屏幕上会有一个清空的操作区域(rst),点击这个地方就会将输入全部清除,恢复白板状态。程序会
27、设置一个强制校准,就是通过按key0来实现,只要按下key0就会进入强制校准程序,这个强制校准程序是必须的。 所要用到的硬件资源如下: 1)ads7843。 2)ds0(外部led0)。 3)key0。 4)tftlcd液晶模块。 5)24c01。 原理图如下3.2-1所示:图3-5tftlcd模块图3.2-1 tftlcd模块采用2*17的2.54公排针与外部连接,接口图如下图3.2-2所示 图3-6alientek 3.2寸tftlcd模块接口图该接口同目前主流的几款stm32开发板的接口完全兼容,所以模块除了用在alientek ministm32开发板上,也可以用在其他开发板上,当然你
28、也可以使用其他接口一样的lcd模块放到我们的alientek ministm32开发板上使用。alientek tftlcd模块采用80并口口方与外部链接,采用16位数据线(低了速度太慢,用彩色就没什么效果了)。该模块的80并口有如下一些信号线: cs:tftlcd片选信号。 wr:向tftlcd写入数据。 rd:从tftlcd读取数据。 d15:0:16位双向数据线。 rst:硬复位tftlcd。 rs:命令/数据标志(0,读写命令;1,读写数据)。 80并口在上一节我们已经有详细的介绍了,这里我们就不在介绍,需要说明的是,tftlcd模块的rst信号线和oled模块一样,也是直接接到stm
29、32的复位脚上,并不由软件控制,这样可以省下来一个io口。另外我们还需要一个背光控制线来控制tftlcd的背光。所以,我们总共需要的io口数目为21个。模块的控制器为ili9320,该控制器自带显存,其显存总大小为172820(240*320*18/8),即18位模式(26万色)下的显存量。模块的16位数据线与显寸的对应关系为565方式,如下图所示: 图3-7 16位数据与显存对应关系图最低5位代表蓝色,中间6位为绿色,最高5位为红色。数值越大,表示该颜色越深。接下来,我们介绍一下ili9320的几个重要命令,因为ili9320的命令很多,我们这里不可能一一介绍,有兴趣的大家可以找到ili93
30、20的datasheet看看。里面对这些命令有详细的介绍。这里我们要介绍的命令列表如下:表格3-1 ili9320常用命令表r0,这个命令,有两个功能,如果对它写,则最低位为osc,用于开启或关闭振荡器。而如果对它读操作,则返回的是控制器的型号。这个命令最大的功能就是通过读它可以得到控制器的型号,而我们代码在知道了控制器的型号之后,可以针对不同型号的控制器,进行不同的初始化。因为93xx系列的初始化,其实都比较类似,我们完全可以用一个代码兼容好几个控制器。r3,入口模式命令。我们重点关注的是i/d0、i/d1、am这3个位,因为这3个位控制了屏幕的显示方向。am:控制gram更新方向。当am=
31、0的时候,地址以行方向更新。当am=1的时候,地址以列方向更新。i/d1:0:当更新了一个数据之后,根据这两个位的设置来控制地址计数器自动增加/减少1, 其关系如下图: 图3-8 gram显示方向设置图 通过这几个位的设置,我们就可以控制屏幕的显示方向了。 r7,显示控制命令。该命令cl位用来控制是8位彩色,还是26万色。为0时26万色,为1时八位色。d1、d0、basee这三个位用来控制显示开关与否的。当全部设置为1的时候开启显示,全0是关闭。我们一般通过该命令的设置来开启或关闭显示器,以降低功耗。r32,r33,设置gram的行地址和列地址。r32用于设置列地址(x坐标,0239),r33
32、用于设置行地址(y坐标,0319)。当我们要在某个指定点写入一个颜色的时候,先通过这两个命令设置到改点,然后写入颜色值就可以了。r34,写数据到gram命令,当写入了这个命令之后,地址计数器才会自动的增加和减少。该命令是我们要介绍的这一组命令里面唯一的单个操作的命令,只需要写入该值就可以了,其他的都是要先写入命令编号,然后写入操作数。r80r83,行列gram地址位置设置。这几个命令用于设定你显示区域的大小,我们整个屏的大小为240*320,但是有时候我们只需要在其中的一部分区域写入数据,如果用先写坐标,后写数据这样的方式来实现,则速度大打折扣。此时我们就可以通过这几个命令,在其中开辟一个区域
33、,然后不停的丢数据,地址计数器就会根据r3的设置自动增加/减少,这样就不需要频繁的写地址了,大大提高了刷新的速度。命令部分,我们就为大家介绍到这里,我们接下来看看要如何才能驱动alientek tftlcd模块,这里tftlcd模块的初始化和我们前面介绍的oled模块的初始化框图是一样的,只是初始化代码部分不同。接下来我们也是将该模块用来来显示字符和数字。通过以上介绍,我们可以得出tftlcd显示需要的相关设置步骤如下: 1)设置stm32与tftlcd模块相连接的io。这一步,先将我们与tftlcd模块相连的io口设置为输出,具体使用哪些io口,这里需要根据连接电路以及tftlcd模块的设置
34、来确定。2)初始化tftlcd模块。其实这里就是上和上面oled模块的初始化过程差不多。通过向tftlcd写入一系列的设置,来启动tftlcd的显示。为后续显示字符和数字做准备。3)通过函数将字符和数字显示到tftlcd模块上。这里就是通过我们设计的程序,将要显示的字符送到tftlcd模块就可以了,这些函数将在软件设计部分向大家介绍。通过以上三步,我们就可以使用alientek tftlcd模块来显示字符和数字了, 并且可以显示各种颜色的背景。3.3 基于xpt2406的控制电路xpt2046控制电路如3.3-1所示:图3-9 xpt2046控制电路4 系统软件设计4.1触屏校准作用 我们传统
35、的鼠标是一种相对定位系统,只和前一次鼠标的位置坐标有关。而触摸屏则是一种绝对坐标系统,要选哪就直接点哪,与相对定位系统有着本质的区别。绝对坐标系统的特点是每一次定位坐标与上一次定位坐标没有关系,每次触摸的数据通过校准转为屏幕上的坐标,不管在什么情况下,触摸屏这套坐标在同一点的输出数据是稳定的。不过由于技术原理的原因,并不能保证同一点触摸每一次采样数据相同,不能保证绝对坐标定位,点不准,这就是触摸屏最怕出现的问题:漂移。对于性能质量好的触摸屏来说,漂移的情况出现并不是很严重。所以很多应用触摸屏的系统启动后,进入应用程序前,先要执行校准程序。通常应用程序中使用的lcd坐标是以像素为单位的。比如说:
36、左上角的坐标是一组非0的数值,比如(20,20),而右下角的坐标为(620,460)。这些点的坐标都是以像素为单位的,而从触摸屏中读出的是点的物理坐标,其坐标轴的方向、xy值的比例因子、偏移量、缩放因子都与lcd坐标不同,所以,可以在ial的某个函数(比如wait_event函数)中把物理坐标首先转换为像素坐标,然后再赋给pos结构,达到坐标转换的目的.触摸屏校正思路:在ial的某个函数(比如wait_event函数)中加入调试信息,开发板上运行calibrate程序,那么触摸屏上任何一点的坐标就可以在主机监视屏上回显出来。于是,就采集到了4个角的物理坐标,假设是6.4英寸屏,640x480分
37、辨率,则它们的像素坐标分别是(20,20)、(20,460)、(620,460)和(620,20)。这样,使用待定系数法就可以算出坐标系之间的平移关系。比如:vx = xfactor*px + xoffset vy = yfactor*py + yoffset4.2主程序流程图主程序流程图如下图4-1所示否开始硬件初始化刷新并不断检测触摸屏状延时读取坐标点的坐标值获取初始值的坐标值触摸屏仍被触摸吗是触摸屏被触摸么图4-14.3 c语言的简介c语是一种计算机程序设计语言。它既具有高级语言的特点,又具有汇编语言的特点。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不
38、依赖计算机硬件的应用程序。因此,它的应用范围广泛,不仅仅是在软件开发上,而且各类科研都需要用到c语言,具体应用比如单片机以及嵌入式系统开发。c 语言具有下列特点:1)c是中级语言。它把高级语言的基本结构和语句与低级语言的实用性结合起来。c 语言可以像汇编语言一样对位、字节和地址进行操作, 而这三者是计算机最基本的工作单元。2)c是结构式语言。结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。c 语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构
39、化。3)c语言功能齐全。具有各种各样的数据类型,并引入了指针概念,可使程序效率更高。另外c语言也具有强大的图形功能,支持多种显示器和驱动器。而且计算功能、逻辑判断功能也比较强大,可以实现决策目的的游戏。4)c语言适用范围大。适合于多种操作系统,如windows、dos、unix等等;也适用于多种机型。c语言对编写需要硬件进行操作的场合,明显优于其它解释型高级语言,有一些大型应用软件也是用c语言编写的。c语言具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画。它是数值计算的高级语言。4.4关键代码/初始化液晶接口void lcd_port(void)
40、io0set_bit.p0_21 = 1; /wr io0set_bit.p0_20 = 1; /rd io0dir_bit.p0_20 = 1; /rd io0dir_bit.p0_21 = 1; /wr io0dir_bit.p0_30 = 1; /rs io0dir_bit.p0_17 = 1; /cs io0dir_bit.p0_11 = 1; io0dir_bit.p0_12 = 1;/延时void delayms(unsigned short k) unsigned short i; unsigned int j; for(i = k;i 0;i-) for(j = 1000;j
41、0;j-); /向hc573写入数据void write_hc573(unsigned short dat) unsigned char dat; dat = (unsigned char)(dat&0xff); io1set |= (unsigned int)dat)16); io1clr |= (unsigned int)dat)16)&(0xff8)&0xff); io1set |= (unsigned int)dat)16); io1clr |= (unsigned int)dat)16)&(0xff16); io0set_bit.p0_12 = 1;io0clr_bit.p0_12
42、= 1;/向液晶屏写入数据void tftwridata(unsigned short ch) lcd_rs_h(); /rs = 1 lcd_cs_l(); /cs = 0 write_hc573(ch); lcd_wr_l(); /wr = 0 lcd_wr_h(); /wr = 1 lcd_cs_h(); /cs = 1/向液晶屏写入命令void tftwricom(unsigned short ch) lcd_rs_l(); /rs = 0 write_hc573(ch); lcd_wr_l(); /wr = 0 lcd_cs_l(); /cs = 0 lcd_wr_h(); /wr
43、= 1 lcd_cs_h(); /cs = 1/写入控制字void write_com(unsigned short address,unsigned short num) tftwricom(address); tftwridata(num);/液晶屏初始化void tftinit(void) lcd_reset_l(); /低电平复位 delayn(10000); lcd_reset_h();#define delayns delayn write_com(0x0000,0x0001); delayns(1000); /打开晶振 write_com(0x0003,0xa8a4); dela
44、yns(1000); /0xa8a4 write_com(0x000c,0x0000); delayns(1000); write_com(0x000d,0x080c); delayns(1000); write_com(0x000e,0x2b00); delayns(1000); write_com(0x001e,0x00b0); delayns(1000); write_com(0x0001,0x2b3f); delayns(1000); /驱动输出控制320*240 0x6b3f write_com(0x0002,0x0600); delayns(1000); write_com(0x0
45、010,0x0000); delayns(1000); write_com(0x0011,0x6070); delayns(1000); /0x4030 /定义数据格式 16位色 write_com(0x0005,0x0000); delayns(1000); write_com(0x0006,0x0000); delayns(1000); write_com(0x0016,0xef1c); delayns(1000); write_com(0x0017,0x0003); delayns(1000); write_com(0x0007,0x0233); delayns(1000); /0x02
46、33 write_com(0x000b,0x0000); delayns(1000); write_com(0x000f,0x0000); delayns(1000); /扫描开始地址 write_com(0x0041,0x0000); delayns(1000); write_com(0x0042,0x0000); delayns(1000); write_com(0x0048,0x0000); delayns(1000); write_com(0x0049,0x013f); delayns(1000); write_com(0x004a,0x0000); delayns(1000); wr
47、ite_com(0x004b,0x0000); delayns(1000); write_com(0x0044,0xef00); delayns(1000); write_com(0x0045,0x0000); delayns(1000); write_com(0x0046,0x013f); delayns(1000); write_com(0x0030,0x0707); delayns(1000); write_com(0x0031,0x0204); delayns(1000); write_com(0x0032,0x0204); delayns(1000); write_com(0x003
48、3,0x0502); delayns(1000); write_com(0x0034,0x0507); delayns(1000); write_com(0x0035,0x0204); delayns(1000); write_com(0x0036,0x0204); delayns(1000); write_com(0x0037,0x0502); delayns(1000); write_com(0x003a,0x0302); delayns(1000); write_com(0x003b,0x0302); delayns(1000); write_com(0x0023,0x0000); de
49、layns(1000); write_com(0x0024,0x0000); delayns(1000); write_com(0x0025,0x8000); delayns(1000); write_com(0x004f,0); /行首址0 write_com(0x004e,0); /列首址05 下载与调试在代码编译成功之后,我们通过下载代码到alientek ministm32开发板上,可以看到lcd显示如下内容: 图5-1程序运行效果如果已经校准过了,则在等待1.5s之后进入手写界面,同时ds0开始闪烁,界面如下图所:图5-2手写界面此时,我们就可以在该界面下用笔或者手指输入信息了。如果
50、没有校准过,则会自动进入校准程序(当你发现精度不行的时候,也可以通过按key0进入校准程序),如下图所示,在校准完成之后自动进入手写界面。图5-3校准界面6 结论本文完成了基于xpt2046控制的触摸屏软件硬件的设计,实现了用xpt2046控制tftlcd以及实现人机交汇,在实际应用中该系统可靠稳定,达到预期效果。致谢 本论文是在我院指导老师徐朝胜老师的精心指导下完成的,在整个毕业设计过程中徐老师给了我很大的帮助,从选题,开题,到设计方案的确定及最终论文的撰写,修改,最终完成,都离不开徐老师的精心指导。特别是我在设计过程中遇到困难不能解决时,徐老师总会在百忙之中抽出宝贵的时间,耐心的给我讲解,
51、让我真正的理解其中的原理,能够独立的找到解决问题的途径。在此我对他表示真诚的感谢!借此机会,我还要感谢校领导,和大学四年的授课老师,在大学四年中,是他们为我提供一个良好的学习环境,教给了我很多知识,和学习的方法。正是因为有了他们默默无闻的奉献,我才能成为一个优秀的大学毕业生。除此之外,我还要感谢曾经给予我很多帮助和支持的07电信的全体同学,在他们的热心帮助下,使我增长了不少知识,积累了不少经验。所以在这里,我要向所有关心和帮助过我的人表示我最诚挚的祝福和感谢!参考文献 1何咏、马孝江、王永刚;基于dsp的人机接口技术;机床与液压;2004.no.11;p1101122朱宇翔、程明霄、李明;基于
52、dsp的液晶显示器的软硬件设计及实现;微型机与应用;2005年第2期;p15173触摸屏技术与应用 作者:成都吉锐触摸电脑有限公司编写组 电子科技大学出版社4 程芳真、蒋滋康,触摸屏在电站仿真中的应用,计算机应用研究,1999.45许荣斌、谢莹、朱永红,触摸屏常用校准算法分析,工业控制计算机,2006.46龚丽娟、陆以勤、吕锦触,触摸屏数据处理算法研究及实现,微计算机信息,2006.97宋成,孙广富.触摸屏在53c2410上的应用实例j.单片机及嵌入式系统应用,2005.18触摸屏技术浅谈 j. 现代物理知识, 2004,(03)9触摸屏让电脑盲也可使用计算机j. 科学中国人, 1996,(01) 10触摸屏的选择与应用j. 三明高等专科学校学报, 1998,(s3) 11感触随心三星anycall感触系列手机j. 新华航空, 2008,(12)12孔玮. 全新的多媒体设备触摸屏j. 武警工程学院学报, 2000,(06) 13texas instruments. literature number. sp rs 174n april 2001 revised may 2006. tms320f2810, tms
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年汽车租赁合同范本
- 2025年租车带司机服务合同模板
- 2025标准个人租房租赁合同样本
- 2025财产委托管理合同模板
- 2025包装盒生产合同模板
- 2025年土地流转合同样本
- 2025订购绿化苗木合同模板
- 2025物业管理服务合同范本
- 2025合同能源托管协议范本
- 2025咖啡店承包合同协议书
- 电梯调试单机试车方案
- 【MOOC】面向对象程序设计-濮阳职业技术学院 中国大学慕课MOOC答案
- 子宫平滑肌瘤手术临床路径表单
- 【MOOC】机械原理-西北工业大学 中国大学慕课MOOC答案
- GB/T 36547-2024电化学储能电站接入电网技术规定
- 2022-2023学年广东省深圳市南山区六年级上学期期末英语试卷
- 中华传统文化进中小学课程教材指南
- 汽车发动机火花塞市场洞察报告
- 学校安保服务投标方案(技术方案)
- 故宫的课件教学课件
- 幼儿园大班安全活动《安全乘坐电梯》课件
评论
0/150
提交评论