基于嵌入式系统中触摸屏交互功能模块设计
。MDD通过调用特殊的PDD函数来访问硬件。
3.3 触摸屏与显示器的配合算法
FM 7843 送回控制器的X 与Y 值仅是对当前触摸点的电压值的A/D 转换值,它不具有实用价值。这个值的大小不但与触摸屏的分辨率有关,而且也与触摸屏与LCD 贴合的情况有关。而且,LCD 分辨率与触摸屏的分辨率一般来说是不一样,坐标也不一样,因此,如果想得到体现LCD 坐标的触摸屏位置,还需要在程序中进行转换。转换公式如下:
x=(x-TchScr_Xmin)*LCDWIDTH/(TchScr_Xmax-TchScr_Xmin)
y=(y-TchScr_Ymin)*LCDHEIGHT/(TchScr_Ymax-TchScr_Ymin)
其中,TchScr_Xmax、TchScr_Xmin、TchScr_Ymax 和TchScr_Ymin 是触摸屏返回电压值x、y 轴的范围, LCDWIDTH、LCDHEIGHT 是液晶屏的宽度与高度。
3.4 操作系统对触摸屏的支持
操作系统对触摸屏的支持是按分层的思想进行的。首先是应用层,编写的应用程序调用触摸屏/鼠标事件API(在牵引层有相关的API函数);其次,在驱动层有支持触摸屏的驱动程序。通过统一接口来调用操作系统内核的触摸屏设备驱动程序完成最终的设备控制。从中取出触摸屏的实际坐标值,把该值记录在初始化程序中,当下次有应用程序需要调用触摸屏驱动程序时,触摸屏驱动程序就会去检查初始化程序,读取其中的校正值,并把经过校正,影射后相对坐标值返回该应用程序。
3.5 触摸屏的坐标的确认
通过上述方式采集的坐标是相对于触摸屏的坐标,需要转换成为LCD 坐标,这个过程之前需要进行两种坐标的校准工作,这里采用取平均值法。首先从触摸屏的4个顶角得到2个最大值和2个最小值,分别计为x_min,y_min 和x_max,y_max。X,Y 方向的确定如表1 所示。
表1 X,Y 方向的确定
当系统处于休眠状态时,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,回到初始状态,等待下一次笔触。
确定X,Y 方向后,坐标值的计算公式如下:
X=(x_max-Xa)×320 /(x_max - x_min)
Y=(y_max- Ya)×240 /(y_max- y_min)
式中:
Xa=(X1+X2+...+Xn)/ n
Ya=(Y1+Y2+...+Yn)/ n
一般触摸屏将触摸时的X、Y 方向的电压值送到A/D 转换接口,经过A/D 转换后的X与Y 值仅是对当前触摸点的电压值的A/D 转换值,它不具有实用价值。这个值的大小不但与触摸屏的分辨率有关,而且与触摸屏与LCD 贴合的情况有关。如果想得到体现LCD 坐标的触摸屏位置,还需要在程序中进行转换。
4 结 论
嵌入式系统的PDA越来越多的使用触摸屏做输入输出设备。本文以ARM920T内核的S3C2410芯片GX开发板为硬件平台,设计了嵌入式系统触摸屏交互功能模块,在全国大学生嵌入式系统竞赛的产品和作品中已多次应用。文中并对设计中的关键技术问题做了详细的分析与讨论。软件设计流程图和源代码及其它辅助程序等限于篇幅另文介绍。
参考文献:
[1].ARM920Tdatasheethttp://www.dzsc.com/datasheet/ARM920T_139814.html.
[2].PC datasheethttp://www.dzsc.com/datasheet/PC+_2043275.html.
[3].LQ035Q7DB02datasheethttp://www.dzsc.com/datasheet/.html.
[4].ADS7843datasheethttp://www.dzsc.com/datasheet/ADS7843_1055179.html.
[5].SSOP-16datasheethttp://www.dzsc.com/datasheet/SSOP-16_623709.html.
ARM920T内核 S3C2410 触摸屏 交互功能 相关文章:
- 基于s3c2410的CramFS根文件系统的移植(07-13)
- AD7888与S3C2410的SPI接口及Linux下嵌入式驱动的实现(11-06)
- 基于WinCE的ARM视频监控系统(11-14)
- 基于WinCE的I2C驱动程序设计(04-24)
- WinCE下光电编码器的驱动程序设计(04-12)
- 嵌入式Win CE中CAN总线控制器的驱动设计与实现(05-01)