触摸屏驱动程序设计实验报告

合集下载

触摸屏实验报告

触摸屏实验报告

触摸屏实验报告一、实验目的本次触摸屏实验的主要目的是深入了解触摸屏的工作原理、性能特点以及应用场景,并通过实际操作和测试,掌握触摸屏的基本使用方法和相关技术参数的测量。

二、实验设备1、触摸屏实验装置一套,包括触摸屏、控制器、数据线等。

2、电脑一台,用于运行测试软件和数据处理。

3、测量工具,如游标卡尺、万用表等。

三、实验原理触摸屏是一种可接收触头等输入讯号的感应式液晶显示装置。

从技术原理来区别触摸屏,可分为五个基本种类:电阻技术触摸屏、电容技术触摸屏、红外线技术触摸屏、表面声波技术触摸屏和近场成像技术触摸屏。

电阻触摸屏的屏体部分是一块多层复合薄膜,由一层玻璃或有机玻璃作为基层,表面涂有一层透明的导电层(ITO 膜),上面再盖有一层外表面硬化处理、光滑防刮的塑料层。

它的工作原理是通过压力使上下两层导电层在触摸点位置接触,从而实现触摸位置的检测。

电容触摸屏是利用人体的电流感应进行工作的。

电容屏是一块四层复合玻璃屏,玻璃屏的内表面和夹层各涂有一层 ITO(纳米铟锡金属氧化物),最外层是一薄层矽土玻璃保护层,夹层 ITO 涂层作为工作面,四个角上引出四个电极,内层 ITO 为屏蔽层以保证良好的工作环境。

当手指触摸在金属层上时,由于人体电场,用户和触摸屏表面形成一个耦合电容,对于高频电流来说,电容是直接导体,于是手指从接触点吸走一个很小的电流。

这个电流分别从触摸屏的四角上的电极中流出,并且流经这四个电极的电流与手指到四角的距离成正比,控制器通过对这四个电流比例的精确计算,得出触摸点的位置。

四、实验步骤1、连接设备将触摸屏实验装置与电脑正确连接,确保数据线连接牢固,设备电源正常接通。

2、安装驱动和测试软件在电脑上安装触摸屏的驱动程序,并运行相应的测试软件。

3、校准触摸屏按照测试软件的提示,进行触摸屏的校准操作,以确保触摸位置的准确性。

4、进行触摸测试使用手指或专用的触摸笔在触摸屏上进行点击、滑动、缩放等操作,观察触摸屏的响应情况,并记录相关数据。

触摸屏控制实验设计报告

触摸屏控制实验设计报告

触摸屏控制实验设计报告一、实验目的:本实验旨在探究触摸屏控制的原理和方法,通过搭建触摸屏控制系统、设计相应的控制算法,实现对指定目标的精确控制。

通过该实验,能够深入了解触摸屏控制技术的应用、特点以及优缺点,提高对触摸屏控制系统设计的理解和能力。

二、实验原理:触摸屏控制利用电容触摸屏的测量原理,通过在触摸屏表面均匀布置的电容传感器,测量触摸物体(例如手指)在触摸屏表面的电容变化,从而获得触摸物体的坐标信息。

电容传感器是由两层导电层和介电层构成,当触摸物体靠近时,电容传感器之间的电容值会发生变化,通过测量这种电容变化,可以确定触摸位置。

触摸屏控制是一种简单、直观、灵敏的人机交互方式。

三、实验内容和步骤:1.搭建触摸屏控制系统:根据所提供的材料和实验装置,组装并搭建一个简单的触摸屏控制系统。

2.设计控制算法:根据实验要求,设计相应的触摸屏控制算法,实现对指定目标的精确控制。

可以根据需要选择适合的控制算法,例如PID控制算法。

3.进行实验测量:使用触摸屏控制系统进行实验测量。

在实验中,可以模拟不同的控制场景和操作要求,比如在屏幕上模拟运动目标,观察控制系统的响应情况。

4.数据分析和结果展示:根据实验测量结果,进行数据分析,评估实验设计的合理性和控制算法的性能。

可以通过图表等方式展示实验结果,以便更好地理解实验现象和结果。

四、实验设备和材料:1.触摸屏控制装置(包括触摸屏模块、控制器等)2.电源适配器(用于为控制装置供电)3.电脑或单片机(用于与控制装置进行通信)4.数据线和连接线(用于连接各部分设备)5.相关软件和工具(用于实验配置和数据处理)五、实验安全注意事项:1.实验过程中注意触摸屏和相关设备的正确使用和操作,避免操作错误导致的设备损坏或人身伤害。

2.在实验过程中注意电源使用的安全性,避免电源过压或过流等问题。

3.实验过程中保持实验场所的整洁和安全,防止发生安全事故。

六、实验预期结果:通过本实验,预期可以实现以下结果:1.成功搭建触摸屏控制系统,实现对指定目标的精确控制。

触摸屏实验报告(一)2024

触摸屏实验报告(一)2024

触摸屏实验报告(一)引言:触摸屏作为一种常见的人机交互设备,已经广泛应用于各种电子产品中。

本文将对触摸屏技术的原理、分类、应用以及实验结果进行详细介绍和分析。

概述:触摸屏是一种基于感应和响应原理的人机交互设备,通过用户的触摸操作实现对电子产品的控制。

本文将从触摸屏的工作原理开始,介绍其分类、应用以及在实验中的应用结果。

正文:一、触摸屏的工作原理1. 电容式触摸屏的原理2. 电阻式触摸屏的原理3. 表面声波触摸屏的原理4. 负压传感器触摸屏的原理5. 其他类型触摸屏的原理二、触摸屏的分类1. 按触摸方式分类:电容式触摸屏、电阻式触摸屏、表面声波触摸屏等2. 按触摸点个数分类:单点触摸屏、多点触摸屏3. 按材质分类:玻璃触摸屏、塑胶触摸屏4. 按尺寸分类:小尺寸触摸屏、大尺寸触摸屏5. 按应用场景分类:手机触摸屏、平板电脑触摸屏、工控触摸屏等三、触摸屏的应用1. 智能手机和平板电脑2. 数字广告牌和信息亭3. 工控设备和仪器仪表4. 汽车导航和多媒体娱乐系统5. 其他领域的应用案例四、触摸屏实验设计和结果1. 实验目的和背景2. 实验设备和材料3. 实验步骤和方法4. 实验数据的采集和分析5. 结果和讨论五、总结通过本文的介绍和分析,我们可以了解触摸屏的工作原理、分类以及在不同领域的应用。

同时,通过实验结果的分析,可以进一步探讨触摸屏的性能和优化方法,为今后的研究和应用提供参考。

以上是关于触摸屏的实验报告(一)的概述和正文内容,该报告详细介绍了触摸屏的工作原理、分类、应用以及实验结果。

通过对触摸屏的深入研究和实验验证,可以为触摸屏技术的进一步发展和应用提供基础和指导。

嵌入式实验报告_触摸屏驱动实验

嵌入式实验报告_触摸屏驱动实验

贵州大学实验报告学院:专业:班级:姓名学号实验组实验时间05.06 指导教师余佩嘉成绩实验项目名称触摸屏驱动实验实验目的1.了解触摸屏基本概念与原理。

2.理解触摸屏与 LCD 的密切配合。

3.编程实现对触摸屏的控制。

实验原理1.触摸屏原理触摸屏按其工作原理的不同分为表面声波屏、电容屏、电阻屏和红外屏几种。

常见的又数电阻触摸屏。

如图 3-20 所示,电阻触摸屏的屏体部分是一块与显示器表面非常配合的多层复合薄膜,由一层玻璃或有机玻璃作为基层,表面涂有一层透明的导电层,上面再盖有一层外表面硬化处理、光滑防刮的塑料层,它的内表面也涂有一层透明导电层,在两层导电层之间有许多细小(小于千分之一英寸)的透明隔离点把它们隔开绝缘。

如图 3-21 所示,当手指或笔触摸屏幕时(图 c),平常相互绝缘的两层导电层就在触摸点位置有了一个接触,因其中一面导电层(顶层)接通 X 轴方向的 5V 均匀电压场(图a),使得检测层(底层)的电压由零变为非零,控制器侦测到这个接通后,进行 A/D 转换,并将得到的电压值与 5V 相比即可得触摸点的 X 轴坐标为(原点在靠近接地点的那端): Xi=Lx*Vi / V(即分压原理)同理得出 Y 轴的坐标,这就是所有电阻触摸屏共同的最基本原理。

2.电阻触摸屏的有关技术电阻触摸屏的主要部分是一块与显示器表面非常配合的电阻薄膜屏,这是一种多层的复合薄膜,由一层玻璃或有机玻璃作为基层,表面涂有一层叫 ITO 的透明导电层,上面再盖有一层外表面硬化处理、光滑防刮的塑料层,它的内表面也涂有一层导电层(ITO 或镍金)。

电阻触摸屏的两层 ITO 工作面必须是完整的,在每个工作面的两条边线上各涂一条银胶,一端加 5V 电压,一端加 0V,就能在工作面的一个方向上形成均匀连续的平行电压分布。

在侦测到有触摸后,立刻 A/D 转换测量接触点的模拟量电压值,根据5V 电压下的等比例公式就能计算出触摸点在这个方向上的位置。

触摸屏程序设计

触摸屏程序设计

5.实验原理
S3C2410A微控制器内嵌了一个 S3C2410A微控制器内嵌了一个ADC和触摸屏接口,只需要在微控 微控制器内嵌了一个ADC和触摸屏接口 和触摸屏接口, 制器外部外接少量器件,就可以与触摸屏相连,实现触摸功能。 制器外部外接少量器件,就可以与触摸屏相连,实现触摸功能。 Linux操作系统中 该控制器对应的字符型驱动源文件为: 操作系统中, 在Linux操作系统中,该控制器对应的字符型驱动源文件为: s3c2410-ts.c,将该驱动编译为模块后,生成驱动模块:s3c2410ts.ko。 s3c2410-ts.c,将该驱动编译为模块后,生成驱动模块:s3c2410ts.ko。 使用该驱动模块时,只须将该模块用insmod命令插入到内核中即可 命令插入到内核中即可。 使用该驱动模块时,只须将该模块用insmod命令插入到内核中即可。 该模块插入内核后,自动在Linux的 该模块插入内核后,自动在Linux的/dev/目录下创建节点 touchscreen。 touchscreen。 对触摸屏设备的操作除了打开设备、关闭设备操作以外, 对触摸屏设备的操作除了打开设备、关闭设备操作以外,一般 只有读操作。读操作读取触摸屏的触点座标值及动作信息, 只有读操作。读操作读取触摸屏的触点座标值及动作信息,读取结 果保存在一个结构体变量中,该结构体的定义如程序清单1所示。 果保存在一个结构体变量中,该结构体的定义如程序清单1所) 启动MagicARM2410实验箱上的Linux,进行NFS连接,进入触摸屏驱动所 启动MagicARM2410实验箱上的 实验箱上的Linux,进行NFS连接 连接, 在目录,先插入触摸屏驱动模块, 目录,运行应用程序, 在目录,先插入触摸屏驱动模块,然后进入touchscreen目录,运行应用程序, 查看运行结果。 查看运行结果。

计算机触摸屏实训报告

计算机触摸屏实训报告

一、实训背景随着科技的飞速发展,触摸屏技术已经广泛应用于各个领域,如智能手机、平板电脑、POS机、自助服务终端等。

为了提高我国触摸屏技术的研发和应用水平,培养具备实际操作能力的专业人才,我国高校纷纷开设了计算机触摸屏实训课程。

本报告以本人参加的计算机触摸屏实训为背景,对实训过程、收获和体会进行总结。

二、实训目的1. 了解触摸屏技术的发展现状及发展趋势;2. 掌握触摸屏的原理、结构及分类;3. 熟悉触摸屏的应用领域及典型产品;4. 提高动手能力,学会触摸屏的组装、调试及维护。

三、实训内容1. 触摸屏技术概述实训首先对触摸屏技术进行了概述,介绍了触摸屏的原理、结构及分类,使我们对触摸屏技术有了初步的了解。

2. 触摸屏组装与调试在实训过程中,我们学习了触摸屏的组装与调试方法。

具体包括:(1)触摸屏硬件设备的识别与检测;(2)触摸屏电路板的焊接;(3)触摸屏与显示器的连接;(4)触摸屏软件的安装与调试;(5)触摸屏性能测试。

3. 触摸屏应用案例分析实训过程中,我们分析了多个触摸屏应用案例,如自助服务终端、POS机等,了解了触摸屏在实际应用中的技术难点和解决方案。

4. 触摸屏维护与保养实训最后,我们学习了触摸屏的维护与保养方法,包括:(1)触摸屏外观的清洁;(2)触摸屏电路板的检查与维修;(3)触摸屏软件的升级与优化。

四、实训收获1. 提高了动手能力,学会了触摸屏的组装、调试及维护;2. 加深了对触摸屏技术的理解,了解了触摸屏在实际应用中的技术难点和解决方案;3. 增强了团队合作意识,提高了沟通能力;4. 为今后从事触摸屏相关领域的工作打下了坚实基础。

五、实训体会1. 触摸屏技术发展迅速,应用领域广泛,具备很高的实用价值;2. 实践是检验真理的唯一标准,只有通过实践,才能真正掌握触摸屏技术;3. 团队合作是完成实训任务的关键,要注重与团队成员的沟通与协作;4. 在实训过程中,要善于发现问题、解决问题,不断提高自己的能力。

实验四_触摸屏驱动程序设计

实验四_触摸屏驱动程序设计

实验四触摸屏驱动程序设计一、实验目的以一个简单字符设备驱动程序为原型,剖析其基本结构。

进行部分改写之后并编译实现其相应功能。

了解在UP-NETARM2410-S 平台上实现触摸屏Linux 驱动程序的基本原理。

了解Linux 驱动开发的基本过程。

二、触摸屏的工作原理1.硬件设计SPI接口是Motorola推出的一种同步串行接口,采用全双工、四线通信系统,S3C2410X是三星推出的自带触摸屏">触摸屏接口的ARM920T内核芯片,ADS7843为Burr-Brown生产的一款性能优异的触摸屏">触摸屏控制器。

ADS7843与S3C2410的硬件连接如图1所示,鉴于ADS7843差分工作模式的优点,在硬件电路中将其配置为差分模式。

图1触摸屏输入系统示意图2.嵌入式Linux系统下的驱动程序设备驱动程序是Linux内核的重要组成部分,控制了操作系统和硬件设备之间的交互。

Linux的设备管理是和文件系统紧密结合的,各种设备都以文件的形式存放在/dev目录下,成为设备文件。

应用程序可以打开、关闭、读写这些设备文件,对设备的操作就像操作普通的数据文件一样简便。

为开发便利、提高效率,本设计采用可安装模块方式开发调试触摸屏驱动程序。

设备驱动在加载时首先需要调用入口函数init_module(),该函数完成设备驱动的初始化工作。

其中最重要的工作就是向内核注册该设备,对于字符设备调用register_chrdev()完成注册,对于块设备需要调用register_blkdev()完成注册。

但是,应用程序却还不能“看见”它,因而还不能通过系统调用它。

要使应用程序能“看见”这个模块或者它所驱动的设备,就要在文件系统中为其创建一个代表它的节点。

通过系统调用mknod()创建代表此项设备的文件节点——设备入口点,就可使一项设备在系统中可见,成为应用程序可以访问的设备。

另外,设备驱动在卸载时需要回收相应的资源,令设备的相应寄存器值复位并从系统中注销该设备。

单片机实验——LCD的驱动控制及触屏驱动实验

单片机实验——LCD的驱动控制及触屏驱动实验

单片机实验——LCD的驱动控制及触屏驱动实验浙江大学城市学院实验报告课程名称:嵌入式操作系统实验实验名称:LCD的驱动控制及触屏驱动实验学生姓名:黄丽平专业:电科1201 学号:31202417同组学生姓名:范易宵31202425 郭琪琛31202428指导老师:朱胜成绩:一、实验目的1.了解LCD基本概念与原理。

2.理解LCD的驱动控制。

3.熟悉用总线方式驱动LCD模块。

4.熟悉用ARM内置的LCD控制器驱动LCD。

5.了解触屏基本概念与原理。

6.理解触摸屏与LCD的密切配合。

7.编程实现对触摸屏的控制。

二、实验内容学习LCD显示器的基本原理,理解其驱动控制方法。

掌握两种LCD驱动方式的基本原理和方法。

并用编程实现;1.用总线方式直接驱动带有驱动模块的LCD。

2.用ARM内置的LCD控制器驱动LCD。

3.学习触摸屏的基本原理,理解对触摸屏进行输出的标定、与LCD显示器配合的过程。

三、实验设备1.硬件:ARM嵌入式开发平台、用于ARM7TDMI的JTAG仿真器、PC机Pentium100以上。

2.软件:PC操作系统WIN2000或WINXP、ADS1.2集成开发环境、仿真器驱动程序、超级终端通讯程序。

四、实验步骤1.新建工程,将“LCD的驱动控制实验”中的文件添加到工程中,这些是启动时所需要的文件。

2.修改程序,使其实现以下功能:(1)将LCD分为三块,分别显示三种颜色(2)将LCD分为四块田字型,分别显示四种颜色(3)设计清屏程序(4)显示圆环(5)显示正弦函数(6)创意设计3.修改组合程序,实现以下功能:(1)使坐标原点改为左下角(2)改变分辨率(3)在触摸屏上单击,以单击位置为原点画一个圆(4)在触摸屏上点两次,以第一次点为圆心,两点间距离为半径画圆分三块程序:#include "44b.h"#include"uhal.h"#include "option.h"#include"def.h"#pragma import(__use_no_semihosting_swi) // ensure no functions that use semihosting extern U32 LCDBuffer[240][320];int main(void){int i,j,k;U32 jcolor;ARMTargetInit(); //开发版初始化LCD_Init(); //LCD初始化for (i=0;i<3;i++){ switch (i){ case 0: jcolor=0x000000e0;break;case 1: jcolor=0x0000d0e0;break;case 2: jcolor=0x00e000e0;break;}for (k=0;k<240;k++)for (j=i*107;j<i*107+107;j++)< p=""> LCDBuffer[k][j]=jcolor;}//jcolor=0x000000ff;//for (i=0;i<240;i++)// {if (i==80||i==160)// jcolor<<=8;//for (j=288;j<320;j++)// LCDBuffer[i][j]=jcolor;// }LCD_Refresh() ;while(1);return 0;}分四块主程序:int main(void){int i,j,k;U32 jcolor;ARMTargetInit(); //开发版初始化LCD_Init(); //LCD初始化//jcolor=0x000000ff;for (i=0;i<240;i++){if(i<=120){for(j=0;j<160;j++)LCDBuffer[i][j]=0x0000000e0;for(j=160;j<320;j++)LCDBuffer[i][j]=0x000e000e0;}if(i>=120){for(j=0;j<160;j++)LCDBuffer[i][j]=0x000e0e0e0;for(j=160;j<320;j++)LCDBuffer[i][j]=0x00000d0e0;}}LCD_Refresh() ;while(1);return 0;}清屏程序:int i,j,k;void LCD_change(u32 a){for (k=0;k<240;k++){ for (j=0;j<320;j++)LCDBuffer[k][j]=a;}}圆环程序:void LCD_yuan(int x,int y,int r0,int r1,u32 color){for (k=0;k<240;k++){ for (j=0;j<320;j++)if(sqrt((j-x)*(j-x)+(k-y)*(k-y))<=r1&&sqrt((j-x)*(j-x)+(k-y)*(k-y))>=r0){LCDBuffer[k][j]=color;}}LCD_Refresh() ;}正弦函数程序(未完成):void LCD_sin(u32 color){for (k=0;k<240;k++){ for (j=0;j<320;j++)if(20*sin(j*100)<=(k-120)){LCDBuffer[k][j]=color;}}LCD_Refresh() ;}单击画圆程序:void LCD_yuan(int r0,u32 color){int x;int y;int i,j,k;U32 mode;for(;;){mode=TchScr_GetOSXY(&x, &y);if(mode==TCHSCR_ACTION_CLICK) {for (k=0;k<240;k++){for (j=0;j<320;j++)if(sqrt((j-x)*(j-x)+(k-y)*(k-y))<=r0) {LCDBuffer[k][j]=color;}}LCD_Refresh();}Delay(10000);}}点两个点画圆程序:void LCD_yuan2(u32 color){int x1,x2,y1,y2,x,y;int i,j,k;U32 mode1,mode2;for(;;){mode1=TchScr_GetOSXY(&x, &y); x1=x;y1=y;Delay(3);mode2=TchScr_GetOSXY(&x, &y);x2=x;y2=y;if(mode1==TCHSCR_ACTION_CLICK&&mode2==TCHSCR_ ACTION_CLICK) {for (k=0;k<240;k++){for (j=0;j<320;j++)if(sqrt((j-x1)*(j-x1)+(k-y1)*(k-y1))<=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))){LCDBuffer[k][j]=color;}}LCD_Refresh();</i*107+107;j++)<>。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

触摸屏驱动程序设计
一.设计目的
1,巩固学习嵌入式软件方面的基本知识,进一步熟悉基本概念。

2,熟练常用控件,文件,图形等方面的操作了解基本的流程。

3,运用所用学的嵌入式知识,编写出较为实用的小软件,增进对一些实际问题的软,硬件知识的掌握。

4,培养查阅资料,独立思考问题的能力。

二、要求:编写从A/D转换器的通道x获取模拟数据,并将转换后的数字量以波形的形式在LCD上显示的程序。

三. 实验步骤:
四.基本思路及关键问题的解决方法;
基本思路:
1. 按照步骤程序设计原理说明,使用”CodeWarrior for ARM Developer Suite”软件编写程序并进行编译,建立一个新的文件单击【File】菜单中的【New File】选项,然后出现下面的对话框,输入文件名(加上后缀“.c”),单击保存按钮,在编译过程中如果出现错误,修改程序直到没有错误为止,编译过程中出现警告一般可以不必考虑,但特殊时也要通过修改程序消除警告。

程序编写完成后,将程序所在文件保存到2440test.mcp中,如图所示:
2.用开发板测试程序代码:
(1)首先设置开发板的拨动开关S2 为Nor Flash 启动,连接好附带的USB 线和电源(可以不必连接串口线)。

(2)设置超级终端
(3)开机进入BIOS 模式,此时开发板上的绿色LED1 会呈现闪烁状态,其启动界面,如下图:
输入”d”
(4)安装USB 下载驱动
(5)点击DNW 程序的“USB Port” “Transmit”,选择这个2440test.mcp文件,接着点“打开”,这样就开始下载了
五、流程图及电路原理图
1.绘制所需的流程图:
ADS7843与S3C2410的硬件连接如图1所示,
图1 触摸屏输入系统示意图
触摸屏驱动程序设计
触摸屏驱动程序中重要数据结构
typedef struct {
unsigned short pressure;
unsigned short x;
unsigned short y;
unsigned short pad;
} TS_RET;
typedef struct {
unsigned int PenStatus;
TS_RET buf[MAX_TS_BUF];
unsigned int head, tail;
wait_queue_head_t wq;
spinlock_t lock;
} TS_DEV;
static struct file_operations s3c2410_fops = {
owner: THIS_MODULE,
open: s3c2410_ts_open,
read: s3c2410_ts_read, release: s3c2410_ts_release,
poll: s3c2410_ts_poll, };
本设计中触摸屏控制器ADS7843的中断输出通过外部中断5接在中断控制器上,当触摸屏上有触摸事件发生时,会引发中断号为IRQ_EINT5的中断服务程序
s3c2410_isr_tc()。

图3所示为该中断处理程序的流程图。

图3 触摸屏硬件中断处理程序流程图
在s3c2410_isr_tc()中设定了定时器的定时时间为50ms,并立即激活。

因此有触摸屏硬件中断的情况下50ms后就会引发定时中断,中断服务程序为
ts_timer_handler(),这个程序实现了触摸屏中断的下半部,即在过了抖动时间之后如果触摸屏确实有有效事件发生则采集触摸屏坐标,并将定时器的时间重新设为
100ms并重新激活,这样做的目的是如果触摸笔是拖动的情况,以后每100ms采集一次坐标值,并存入缓冲区,如果不是拖动在采集一次坐标值之后,在第二次进入
ts_timer_handler()时,查询管脚的状态值,则变为高电平,就将触摸屏状态
tsdev.PenStatus设为PEN_UP,并释放定时器,为下次触摸屏事件做好准备,定时中断服务程序流程图如图4所示。

图4 定时中断服务程序流程图
在s3c2410_ts_init()中的另一个重要任务是执行接口函数s3c2410_ts_open(),在这个函数中初始化缓冲区的头尾指针、触摸屏状态变量及触摸屏事件等待队列。

module_exit()
该函数调用s3c2410_ts_exit(),主要任务是撤销驱动程序向内核的登记以及释放申请的中断资源。

接口函数s3c2410_ts_read( )
这个函数实现的任务是将事件队列从设备缓存中读到用户空间的数据缓存中。

实现的过程主要是通过一个循环,只有在事件队列的头、尾指针不重合时,才能成功的从tsdev.tail指向的队列尾部读取到一组触摸信息数据,并退出循环。

否则调用读取函数的进程就要进入睡眠。

坐标读取函数s3c2410_get_XY()
在定时器中断处理程序中,当查询到与相连的EINT5/GPF5为低电平时,即表示有有效事件,应该调用s3c2410_get_XY()函数采集笔触信息。

ADS7843有多种转换时序,时序规定了芯片与设备及CPU间是如何配合工作的。

设计中采用16个时钟周期启动一次转换的坐标转换方式。

ADS7843的操作时序如图5所示。

坐标的读取是通过多次采集取平均值的方法,以X坐标的读取为例,其读取过程如图6所示。

循环过程中的每一步都在8个时钟周期内完成,数据的处理严格按照时序进行,Y坐标的采集与X坐标类似。

图5 ADS7843操作时序
图6 X坐标采集流程
六.课程设计心得体会
此次课程设计中我们的收获:
我了解到了和小组成员合作的愉快,我意识到了知识的乐趣性,并感觉到当知识运
用于实践的时候是一件多么幸福的事情。

我也发现自己的知识功底还远远不够。

平时不仅要将知识点理解掌握,还得勤动手做实验。

在以后的学习中我会更努力,在掌握理论知识的基础上,提高自己的动手能力。

七、源程序
参考文献:
[1]嵌入式系统设计与开发实例详解----------基于ARM的应用.北京航空航天大学出版社
[2]嵌入式系统原理及接口技术.清华大学出版社
[3]单片机原理与应用设计.电子工业出版社
[4]. 毛德操,胡希明著.Linux内核源代码情景分析.杭州:浙江大学出版社
[5]孙天泽,袁文菊,张海峰等.嵌入式设计及Linux驱动开发指南.北京:电子工业出版社
[6]R Love. Linux内核设计与实现. 陈莉君,康华,张波等译.北京:机械工业出版社
[7]惠莉,刘少君,黄道平.基于ulinux触摸屏的设计.电子工程师.2004(2)。

相关文档
最新文档