硬件平台:STM32火牛开发板
编译环境:MDK401
下载工具:J-LINK
学习STM32已经有一个多月了,之前也学过一段时间,但是被一些事情给打断了几次。这段时间终于可以痛快的学习一下,发现在大学能够做自己喜欢的东西而不被外界条件所打扰是多么让人高兴的一件事。学习STM32和学习差不多单片机一样,从GPIO(通用输入输出),EXTI(外部中断事件控制器),TIM(通用定时器),USART(通用同步异步接收发射端),SysTick(系统嘀嗒定时器),RTC(实时时钟),ADC(模数转换器),DAC(数模转换器),IIC(内部集成电路)等基本外设,到了中间学习阶段有TFT(液晶屏),SD卡,FATFS(文件配置表),MP3音频解码等。因为有了单片机的基础,学习起来也很快了,发现把STM32学习完也用不了多长时间。
STM32液晶屏上用的触摸屏控制器是ADS7843,学习触摸屏首先弄懂它的工作原理,通道选择控制字、SPI总线操作时序、液晶屏驱动,触摸屏驱动等。
触摸屏工作原理:触摸屏系统一般包括触摸屏控制器和触摸检测装置。触摸屏控制器的主要作用是从触摸点检测装置上接收触摸信息,并将它转换成触点坐标,再送给CPU。它同时能接收CPU发来的命令并加以执行。触摸检测装置一般安装在显示器的前端,主要作用是检测用户的触摸位置,再将该处的信息传送给触摸屏控制器。
触摸屏的控制过程主要分一下几步:
1,校准
2,读数
3,滤波
4,转化
校准:首先我们想到的是为什么每次使用电阻屏要校准?这样岂不是很麻烦?能不能不校准,最后发现不能不校准。自己用的液晶屏是电阻式,而电阻屏用到了ITO,而ITO 是铟锡氧化物的英文缩写,它是一种透明的导电体。通过调整铟和锡的比例,沉积方法,氧化程度以及晶粒的大小可以调整这种物质的性能。薄的ITO材料透明性好,但是阻抗高;厚的ITO材料阻抗低,但是透明性会变差。在PET聚脂薄膜上沉积时,反应温度要下降到 150 度以下,这会导致ITO氧化不完全,之后的应用中ITO会暴露在空气或空气隔层里,它单位面积阻抗因为自氧化而随时间变化。这使得电阻式触摸屏需要经常校正。
读数:这里按照控制芯片的时序使用管脚模拟SPI的方式读出来的。当有触摸屏有触摸时,会输出一定的电压值,我们可以根据这个电压值来确定屏幕上的物理坐标,最后转化为像素坐标。
波波:在读取 X, Y 坐标值时,有可能因为突发性脉冲干扰使读取到的坐标值产生重大偏差,所以必须在坐标变换前对读取到的数据进行中值平均滤波算法滤波。首先对采集到的电压值排序,去掉最大的3个和最小的3个。再把中间的3个取平均值得到最后的电压值。
转换:触摸屏和点阵式液晶屏叠加在一起配套使用时,触摸屏的坐标原点、标度和显示屏的坐标原点、标度不一样,且电阻式触摸屏的坐标零点通常不在有效点触区内,因此,通过ADS7843 片内 AD 转换器获得触摸屏上的触点坐标后,还须经过坐标变换才能得到在液晶屏上的坐标位置。由于电阻式触摸屏的电阻分布并不是理想的线性关系,直接进行坐标变换会与触点实际位置存在一些偏差,偏差较大就会点不准。而采用4点校准法得到的坐标变换公式可最大限度地克服了问题。这样我们只要事先在屏幕上面显示 4 个点(这四个点的坐标是已知的),分别按这四个点就可以从触摸屏读到 4 个物理坐标,这样就可以通过待定系数法求出 Xfac、Yfac、X-EX 和Y-EX这四个参数。我们保存好这四个参数,校准时用用到了4点法得到了4个参数X轴Y轴的比例因子Xfac、Yfac.X轴Y轴的偏移量X-EX 和Y-EX. LCDx=Xfac*Px+X-EX; LCDy=Yfac*Py+Y-EX;在以后的使用中,我们把所有得到的物理坐标都按照这个关系式来计算,由这4个参数就可以确定一个点的像素坐标。得到的就是准确的屏幕坐标。
接下上一些效果图,首先是校准图片:
下载 (2.39 MB)
2011-12-3 18:24
触摸图片:
下载 (1.38 MB)
2011-12-3 18:24
|