ARN触摸屏驱动实验
- 格式:doc
- 大小:68.50 KB
- 文档页数:5
最近学习了电容触摸屏的驱动及其上层工作原理,拿出来和大家分享!转]Android触摸屏校准程序的实现一,校准的触摸算法如下:触摸屏校准通用方法。
(XL, YL是显示屏坐标,XT, YT是触摸屏坐标,)XL = XT*A+YT*B+CYL = XT*D+YT*E+F由于具体计算是希望是整数运算,所以实际中保存的ABCDEF为整数,而增加一个参数Div XL = (XT*A+YT*B+C) / DivYL = (YT*D+YT*E+F) / DivTSLIB把以上的7个参数ABCDEF Div 保存在pointercal 文件中。
不校准的数据:A=1, B=0, C=0, D=0, E=1, F=0, Div=1A B C D E F Div-411 37818 -3636780 -51325 39 47065584 65536二,Android 事件处理机制android 事件的传入是从EventHub开始的,EventHub是事件的抽象结构,维护着系统设备的运行情况(设备文件放在/dev/input里),设备类型包括Keyboard、TouchScreen、TraceBall。
它在系统启动的时候会通过open_device方法将系统提供的输入设备都增加到这个抽象结构中,并维护一个所有输入设备的文件描述符,如果输入设备是键盘的话还会读取/system/usr/keylayout/目录下对应键盘设备的映射文件(修改./development/emulator/keymaps /qwerty.kl来改变键值的映射关系),另外getEvent方法是对EventHub中的设备文件描述符使用poll操作等侍驱动层事件的发生,如果发生的事件是键盘事件,则调用Map函数按照映射文件转换成相应的键值并将扫描码和键码返回给KeyInputQueue.frameworks/base/services/jni/com_android_server_KeyInputQueue.cpp根据事件的类型以及事件值进行判断处理,从而确定这个事件对应的设备状态是否发生了改变并相应的改变对这个设备的描述结构InputDevice。
嵌入式系统中的电容触摸屏驱动开发0引言在当今高端智能手机中,多点触摸已经成为标配,实现多点触摸屏功能的正是由电容式触摸屏,而电阻式触摸屏智能实现单点触摸功能。
高端M1D平板电脑以及其他多媒体嵌人式设备中,支持多点触摸的电容式触摸屏也有应用。
.虽然现阶段电容式触摸屏的价格较贵,在中低端产品中,还是以电阻式触摸屏为主,但随着电容式触摸屏价格的下降,技术门槛的降低,以及能带给用户更为丰富的体验.电容式触摸屏的应用必将越来越广泛。
MX51是飞思卡尔半导体的基于ARM CORTEX A8内核的高端ARM嵌入式多媒体处理器,Linunx是一个功能强大的嵌入式操作系统.它可以移植在各种不同体系结构的处理器上。
本文以Linux2. b.31内核和M JCS1为系统的软、硬件平台,讨论了电容式触摸屏驱动的开发方法及实现技术。
1电容式触摸屏概述电容式触摸屏利用人体的电流感应进行工作。
它是一块四层复合玻璃屏,玻璃屏的内表面和夹层各涂有一层ITo.最外层是一薄层矽土玻瑞保护层,夹层ITo 涂层作为工作面,四个角上弓{出四个电极,内层ITO为屏蔽层以保证良好的工作环境。
当手指触摸在金属层上时,由于人体电场,用户和触摸屏表面形成一个韧合电容,对于高频电流来说,电容是直接导体,于是手指从接触点吸走一个很小的电流二这个电流从触摸屏四个角上的电极中流出,并且流经这四个电极的电流与手指到四角的距离成正比,触摸屏控制器通过对这四个电流比例的精确计算,得出触摸点的位置。
与电阻式触摸屏相比,电容式触摸屏表现出了更加良好的性能。
由于轻触就能感应,使用十分方便;而且手指与触摸屏的接触几乎没有磨损,使用寿命长。
2触摸屏驱动工作原理本设计采用的方案是MX51外接瑞士PIXCIR公司的AT-mega168芯片,ATmega168是电容式触摸屏控制芯片。
通过I^2C接口和MX51处理器相连,硬件连接示意图如图1所示。
I^C接口只需要SCL时钟和SDA数据两根信号线,另外,当有手指点击电容触摸屏时,ATmega168采样到坐标值后,会产生一个中断信号(ATTb)通知MX51,AT'I、连到MX51的一个GPIO中断管脚上。
触摸屏驱动程序设计一.设计目的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()。
ARM 下的触摸屏驱动系统设计
1 引言
在我们的日常生活中,无论你是在商场购物,还是在银行存取款,触摸式的自动服务器将能为你提供了方便快捷的服务。
这里通过对触摸屏原理的理解和分析,成功的设计出了CPU 与触摸屏芯片之间的硬件连接,并依照硬件和驱动设计的原理,设计出了基于嵌入式Linux 和飞思卡尔i.MX27 芯片以及AD7873 触摸屏芯片的驱动程序,并成功移植到内核中,实现了家庭控制器系统的触摸技术。
2 硬件系统的构成
2.1 电阻式触摸屏原理。
电阻式触摸屏是一种传感器,它将矩形区域中触摸点(X,Y)的物理位置转换为代表X 坐标和Y 坐标的电压。
当触摸屏表面受到的压力(如通过笔尖或手指进行按压)足够大时,顶层与底层之间会产生接触。
所有的电阻式触摸屏都采用分压器原理来产生代表X 坐标和Y 坐标的电压。
如图1 所示,。
贵州大学实验报告学院:专业:班级:姓名学号实验组实验时间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 电压下的等比例公式就能计算出触摸点在这个方向上的位置。
基于ARM的触摸屏驱动设计
陈雪花
【期刊名称】《韶关学院学报》
【年(卷),期】2010(031)006
【摘要】分析了电阻式触摸屏的工作原理和硬件结构,探讨了基于S3C2440A的触摸屏开发,把嵌入式ARM芯片S3C2440A应用于触摸屏的研制,设计了触摸屏的驱动程序.该驱动程序采用平均值法及中断处理方式来减小定位误差,在驱动开发中采用小任务机制,从而加快整个系统的速度,改进了实际开发中触摸屏常见的定位误差和响应速度慢等问题.
【总页数】4页(P21-24)
【作者】陈雪花
【作者单位】韶关学院,物理与机电工程学院,广东,韶关512005
【正文语种】中文
【中图分类】TP311
【相关文献】
1.基于XGB系列PLC的触摸屏驱动设计 [J], 张航;卢珞先;
2.基于嵌入式系统的触摸屏驱动设计与实现 [J], 王璐凡
3.基于S3C2440的触摸屏驱动设计 [J], 孙海华
4.基于XGB系列PLC的触摸屏驱动设计 [J], 张航;卢珞先
5.基于StrongARM SA1100的嵌入式系统中触摸屏驱动设计 [J], 李波;吴光敏
因版权原因,仅展示原文概要,查看原文内容请购买。
实验四触摸屏驱动程序设计一、实验目的以一个简单字符设备驱动程序为原型,剖析其基本结构。
进行部分改写之后并编译实现其相应功能。
了解在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()创建代表此项设备的文件节点——设备入口点,就可使一项设备在系统中可见,成为应用程序可以访问的设备。
另外,设备驱动在卸载时需要回收相应的资源,令设备的相应寄存器值复位并从系统中注销该设备。
【引言】触摸屏技术是一种现代化的输入和交互方式,它已经广泛应用于手机、平板电脑、电脑和其他智能设备中。
本文将介绍触摸屏的原理、分类、工作流程以及应用场景,并深入阐述触摸屏的优缺点以及未来的发展趋势。
【概述】触摸屏技术是一种能够实现人机交互的技术,通过触摸屏幕上的特定区域来输入指令或者控制设备。
触摸屏的主要原理是根据人体输入的触摸信号,将其转化为电信号,从而实现相应的功能。
触摸屏根据其工作原理和材料分类,主要有电阻式触摸屏、电容式触摸屏、表面声波触摸屏和表面电磁波触摸屏等。
【正文】1.电阻式触摸屏:1.1 工作原理:电阻式触摸屏是通过玻璃或塑料的表面安装一层薄膜电阻层,当玻璃或塑料受压时,电阻层之间会发生变化,进而改变电流的流动,从而实现操作。
1.2 优点:价格低廉,触摸精准,支持多点触控。
1.3 缺点:易受划伤,屏幕透光度较差。
1.4 应用场景:电阻式触摸屏主要应用于公共信息亭、ATM 机等场景。
2.电容式触摸屏:2.1 工作原理:电容式触摸屏是将触摸面板分为X、Y两个方向上的电容传感电极,当有物体接触到屏幕时,电容传感电极之间形成电场变化,从而检测到触摸位置。
2.2 优点:灵敏度高,触摸时不需要压力,触摸灵活度较好。
2.3 缺点:对静电干扰敏感,对物体表面的绝缘层有一定要求。
2.4 应用场景:电容式触摸屏主要应用于手机、平板电脑等智能设备。
3.表面声波触摸屏:3.1 工作原理:表面声波触摸屏通过超声波在玻璃表面的传递,当有物体触摸屏表面时,会引起超声波传播路径的变化,从而检测到触摸位置。
3.2 优点:透光性好,保护层耐用。
3.3 缺点:对温度和湿度要求较高,成本较高。
3.4 应用场景:表面声波触摸屏主要应用于户外自助服务设备、信息查询站等场景。
4.表面电磁波触摸屏:4.1 工作原理:表面电磁波触摸屏利用感应线圈在触摸屏上发射电磁波,当有物体接触屏幕时,波会发生干扰从而检测到触摸位置。
4.2 优点:抗划伤,清洁容易。
实验六ARM触摸屏实验班级:09电信一班姓名:叶晓伟学号:20094081007实验目的1、了解四线电阻触摸屏的结构特点2、理解四线电阻触摸屏的工作原理3、掌握用S3C2410内部AD转换器读触摸屏数据程序的设计实验仪器设备及软件ARM实验箱,计算机,ADS程序开发软件实验原理1、S3C2410内部AD及触摸屏电路S3C2410A包含一个8通道10位的A/D转换器,该电路可以将模拟输入信号转换成10位数字编码(10位分辨率),差分线性误差为 1.0 LSB,积分线性误差为 2.0 LSB。
在A/D转换时钟频率为2.5 MHz时,其最大转换率为500 KSPS(Kilo Samples Per Second,千采样点每秒),输入电压范围是0~3.3V。
A/D转换器支持片上操作、采样保持功能和掉电模式。
触摸屏连接电路2、控制寄存器(1)ADC控制寄存器(ADCCON)(2)ADC触摸屏控制寄存器(ADCTSC)这是一个16位寄存器,用于设置AD启动命令后,多长时间开始进行转换,可用于去抖动。
寄存器的值为延时ms数。
(4)ADC转换数据寄存器(ADCDAT0和ADCDA T1)1、AD转换程序设计(1)连接信号源,信号加到0通道。
(2)将AD转换结果显示在LCD上2、触摸屏采样程序(1)连接触摸屏(2)采样屏幕上指定点的触摸屏X,Y数据,并记录分析结果。
实验步骤1、连接实验箱与计算机的串口线,打开计算机超级终端,并设定为com1,115200,8,1,0N2、连接仿真调试电缆(并口JTAG)3、实验箱上电,并在vivi的指示下,按任意键,进入调试程序状态4、打开ARM集成开发环境ADS,按要求编写或打开实验程序。
5、按内容要求编写,调试程序,并记录调试过程和数据。
6、调试完毕,整理实验箱,并切断实验箱电源。
实验思考题1、编写程序,采集0通道上的信号,并将N次采样结果进行求平均,显示在LCD上。
答:#include "target.h"#include "2410LIB.h"#include "2410addr.h"#include "..\..\Touch_driver\inc\touch2410.h"#include "..\gui\glib\glib.h"#include "..\..\lcddrv\inc\lcd.h"#include "..\..\lcddrv\inc\lcdlib.h"/********************************************************************** ****************************************- 函数名称: Main(void)- 函数说明: 系统的主程序入口- 输入参数: 无- 输出参数: 无********************************************************************* *****************************************/void Main(void){Target_Init();GUI_Init();Set_Color(GUI_BLUE);Fill_Rect(0,0,639,479);Set_Color(GUI_YELLOW);Fill_Rect(0,0,639,238);while (1){if (0<=TOUCH_Y&&TOUCH_Y<=238){Set_Color(GUI_RED);Fill_Circle(TOUCH_X,TOUCH_Y,15);touchok=0;}if (238<=TOUCH_Y&&TOUCH_Y<=479){Set_Color(GUI_YELLOW);Fill_Circle(TOUCH_X,TOUCH_Y,10);touchok=0;}}Set_Color(GUI_YELLOW);Set_Color(GUI_RED);}。
触摸屏实验实验目的:了解ARM处理器触摸屏的处理机制,掌握在S3C2440A平台下进行触摸屏应用编程需要完成的任务实验器材:Sinosys-EA2440实验箱PC机实验原理:触摸屏的4 根信号线直接和S3C2440A 的TSYM、TSYP、TSXM 和TSXP 四个引脚相连,由S3C2440A 内部来控制电平的转换和AD 的转换测量。
触摸屏的硬件连接图如图1.1:图1.1 触摸屏信号连接图s3c2440 一共有4 种触摸屏接口模式,其中,自动(连续)XY 坐标转换模式和等待中断模式应用地比较常见。
等待中断模式是在触笔落下时产生一个中断,在这种模式下,A/D 触摸屏控制寄存器ADCTSC 的值应为0xD3,在系统响应中断后,XY 坐标的测量模式必须为无操作模式,即寄存器ADCTSC 的低两位必须清零。
自动(连续)XY 坐标转换模式是系统依次转换触点的X 轴坐标和Y 轴坐标,中X 轴坐标值写入寄存器ADCDAT0 的低10 位中,Y 轴坐标写入寄存器ADCDAT1的低10 位中,在这种模式下,系统同样会产生中断信号。
在一般情况下,为实现触摸屏功能,先是设置为等待中断模式,在产生中断后,再设置为自动(连续)XY 坐标转换模式,依次读取触点的坐标值。
实验总结:利用ADS1.2 工具(ADS 工具的使用请参照前面的实验)打开“\SourceCode\Interface\touchpanel_test”的工程文touchpanel_test.mcp 工程文件。
在Touchpanel.c 的Test_Touchpanel 子函数中对触摸屏相关的寄存器进行设置和初始化。
rADCDLY=50000; //Normal conversion mode delay about(1/3.6864M)*50000=13.56msrADCCON=(1<<14)+(ADCPRS<<6); //ADCPRS En, ADCPRS Value Uart_Printf("ADC touch screen test\n");rADCTSC=0xd3; //Wfait,XP_PU,XP_Dis,XM_Dis,YP_Dis,YM_En pISR_ADC = (int)AdcTsAuto;//指定触摸屏中断的入口地址rINTMSK=~BIT_ADC; //ADC Touch Screen Mask bit clear rINTSUBMSK=~(BIT_SUB_TC);触摸屏中断服务程序在对寄存器进行设置和指定中断服务程序的入口地址后,程序进入等待状态,当用触摸笔点按触摸屏时,处理器接受中断,并进入中断服务程序的执行。
实验12 触摸屏驱动一、实验目的1.了解CE下本地设备驱动程序的加载过程2.掌握WinCE下本地设备驱动程序的设计方法3.实现本地设备驱动程序的接口函数二、实验环境1.软件:PB5.0,UltraEdit文本编辑器2.硬件:PC,2410实验平台三、实验内容1.分析触摸屏驱动程序2.将现有的触摸屏驱动程序添加进2410的BSP5.0包3.修改代码,以适用于其他尺寸屏幕的驱动4.在PB中调试驱动程序代码四、预备知识1.熟悉各种配置文件:.reg、.bib、.def、sources、makefile等2.熟悉PB的使用3.掌握驱动程序的基本知识五、实验原理1. 硬件采样原理(三星自带ADC控制器/触摸屏控制器)触摸屏一般由4层薄膜组成,其中最主要的就是X层和Y层的薄膜。
在点击触摸屏时,X层和Y层会在点击处连接,由此形成了测量通路。
如图1所示:图1:触摸屏原理当测量X方向电压时(即触摸中断产生时),触摸屏控制器(同时产生触摸中断)控制内部测量电路的切换,在X层形成从X+到X-方向的均匀电势场,而Y层无外加电压。
X层在点击处形成电阻分压状态,并与下面的Y层连接形成通路。
此时,就可以通过测量Y+或Y-管脚,得到点击处的X方向的电压。
反之,可以测量到Y轴方向的电压。
于是,形成了坐标点(X,Y)。
2410自带ADC控制器和触摸控制器,A/D通道直接与触摸屏相连。
如图2所示:图2:2410触摸采样原理触摸控制器切换测量电路,并产生中断;ADC控制器进行采样通道选择。
2.驱动分层触摸屏驱动程序属于本地设备驱动程序,经过编译生成一个DLL库,并由GWES 加载。
在WinCE系统中,触摸屏驱动也是一种分层驱动,上层是模型设备驱动程序MDD,下层是依赖平台的驱动程序PDD。
如图3所示:图3:驱动分层当系统访问硬件时,首先通过使用DDI函数与驱动程序交互,然后在驱动程序3.驱动程序的整体框图触摸屏驱动的整体框图如图4所示:图4:驱动流程整体框图触摸驱动被加载后,GWES首先执行相关的初始化操作,然后创建一个线程,用来判断采集的点是校准点还是普通的触摸点。
一、实训背景随着科技的不断发展,嵌入式系统在各个领域的应用越来越广泛。
触摸屏作为一种直观、便捷的人机交互方式,在嵌入式系统中扮演着重要的角色。
为了提高自己的实践能力和技术水平,我参加了嵌入式触摸屏实训课程。
通过本次实训,我对嵌入式触摸屏系统的设计、开发和应用有了更深入的了解。
二、实训目的1. 掌握嵌入式触摸屏系统的工作原理和关键技术;2. 熟悉嵌入式触摸屏驱动程序的开发流程;3. 学会使用触摸屏硬件开发平台,实现触摸屏功能;4. 提高动手实践能力和团队协作能力。
三、实训内容1. 嵌入式触摸屏基础知识本次实训首先介绍了嵌入式触摸屏的基本概念、工作原理、分类及常用触摸屏技术。
主要包括以下内容:(1)触摸屏技术概述:介绍了触摸屏技术的起源、发展历程及现状,分析了触摸屏技术的优缺点。
(2)触摸屏分类:介绍了电阻式触摸屏、电容式触摸屏、红外触摸屏、超声波触摸屏等几种常见的触摸屏类型。
(3)触摸屏工作原理:以电容式触摸屏为例,介绍了其工作原理、信号处理及驱动方式。
2. 嵌入式触摸屏驱动程序开发实训重点讲解了嵌入式触摸屏驱动程序的开发流程,主要包括以下内容:(1)驱动程序概述:介绍了驱动程序的概念、作用及开发流程。
(2)驱动程序开发环境搭建:讲解了如何搭建嵌入式触摸屏驱动程序的开发环境,包括交叉编译工具、调试工具等。
(3)驱动程序编写:以Linux操作系统为例,讲解了嵌入式触摸屏驱动程序的编写方法,包括中断处理、数据采集、事件处理等。
3. 嵌入式触摸屏硬件平台应用实训中,我们使用一款基于ARM架构的嵌入式开发板进行触摸屏硬件平台应用。
主要包括以下内容:(1)硬件平台介绍:介绍了嵌入式开发板的硬件资源、外设接口及触摸屏接口。
(2)触摸屏硬件连接:讲解了如何将触摸屏模块与开发板进行连接,包括电源、信号线等。
(3)触摸屏驱动程序移植:讲解了如何将触摸屏驱动程序移植到嵌入式开发板,包括驱动程序配置、编译、烧录等。
4. 实训项目实践在实训过程中,我们完成了一个基于嵌入式触摸屏的简单项目。
浙江大学城市学院实验报告课程名称:嵌入式操作系统实验实验名称:LCD的驱动控制及触屏驱动实验学生姓名:专业:电科1202 学号:同组学生姓名:指导老师:朱胜成绩:一、实验目的1)了解LCD基本概念与原理。
2)理解LCD的驱动控制。
3)熟悉用总线方式驱动LCD模块。
4)熟悉用ARM内置的LCD控制器驱动LCD。
5)了解触屏基本概念与原理。
6)理解触摸屏与LCD的密切配合。
7)编程实现对触摸屏的控制。
二、实验内容学习LCD显示器的基本原理,理解其驱动控制方法。
掌握两种LCD驱动方式的基本原理和方法。
并用编程实现;1、用总线方式直接驱动带有驱动模块的LCD。
2、用ARM内置的LCD控制器驱动LCD。
学习触摸屏的基本原理,理解对触摸屏进行输出的标定、与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++)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();}Delay(3);}}五、实验结果基本实现要求功能,但坐标点偏移比较严重。
触摸屏驱动实验
班级:电信091 学号: 200916022xx 姓名: xxx 指导教师: xxx 日期: 2011年11月20日
一、实验目的
1.了解触摸屏基本概念与原理。
2.理解触摸屏与LCD的密切配合。
3.编程实现对触摸屏的控制。
二、实验内容
学习触摸屏基本原理,理解对触摸屏进行输出标定、与LCD显示器配合的过程。
三、预备知识
1、用EWARM集成开发环境,编写和调试程序的基本过程。
2、ARM应用程序的框架结构。
3、能够在LCD上进行格式化输出。
四、实验设备及工具
硬件:ARM嵌入式开发平台、用于ARM920T的JTAG仿真器、PC机Pentium100以上。
软件:PC机操作系统Win2000或WinXP、EWARM集成开发环境、仿真器驱动程序、超级终端通讯程序
五、实验原理及说明
1.触摸屏原理
触摸屏按其工作原理的不同分为表面声波屏、电容屏、电阻屏和红外屏几种。
常见的有电阻触摸屏。
如图3-20所示,电阻触摸屏的屏体部分是一块与显示器表面非常配合的多层复合薄膜,由一层玻璃或有机玻璃作为基层,表面涂有一层透明的导电层,上面再盖有一层外表面硬化处理、光滑防刮的塑料层,它的内表面也涂有一层透明导电层,在两层导电层之间有许多细小(小于千分之一英寸)的透明隔离点把它们隔开绝缘。
图3-20 (北泰)触摸屏的结构
如图3-21所示,当手指或笔触摸屏幕时(图c),平常相互绝缘的两层导电层就在触摸点位置有了一个接触,因其中一面导电层(顶层)接通X轴方向的5V均匀电压场(图a),使得检测层(底层)的电压由零变为非零,控制器侦测到这个接通后,进行A/D转换,并将得到的电压值与5V相比即可得触摸点的X轴坐标为(原点在靠近接地点的那端):
Xi=Lx*Vi / V(即分压原理)
同理得出Y轴的坐标,这就是所有电阻触摸屏共同的最基本原理。
图3-21 触摸屏坐标识别原理
六、实验步骤
1. 启动H-JTAG 仿真器并进行初始化配置。
2.启动EWARM0新建工程,将“Exp5触摸屏驱动实验”中的文件添加到工程。
3.在头文件中定义宏及常量(tchscr.c,tchscr.h)
4.编写测试函数(tchscr.c) 将触摸动作及触摸点坐标在超级终端上显示出来。
5.校准触摸屏坐标输出,转换坐标,与LCD紧密配合
可以使用TchScr_GetScrXY()函数来获得液晶屏的x、y方向的电压范围,分别点触摸屏有效面积的左上角和右下角,得到下列参数:
TchScr_Xmax=997;
TchScr_Xmin=38;
TchScr_Ymax=974;
TchScr_Ymin=23;//此数值仅供参考,请以实际校对为准
6. 在ADS集成开发环境中编译、调试和运行工程程序。
七、思考题
(1)电阻型触摸屏检测坐标值的原理
答:A: 屏体部分是一块与显示器表面非常配合的多层复合薄膜:
B:由一层玻璃或有机玻璃作为基层表面涂有透明的导电层(OTI,氧化铟),导电体,透光率为80%);
C:上面再盖一层外表面硬化处理、光滑防刮塑料层,它的内表面也涂有一层OTI在两层导电层之间有许多细小(小于千分之一英寸)的透明隔离点把他们隔开绝缘;
D:当手指接触屏幕,两层OTI导电层(层间距2.5微米)出现一个接触点,因其中一面导电层接通Y轴方向的5V均匀电压场,使得侦测层的电压由零变为非零,控制器侦测到这个接通后,进行A/D转换,可得触摸点的Y轴坐标;
同理得出X轴坐标;
E:电阻屏根据引线数多少,分为四线、五线等多线电阻触摸屏。
(2)如果LCD坐标原点在右下角,分辨率为240X180,触摸屏坐标原点在右上角请给出触摸屏输出坐标的转换公式,对触摸屏的分辨率有什么影响。
答:lcdx=(x-TchScr_Xmin)*LCDWIDTH/(TchScr_Xmax -TchScr_Xmin)
lcdy=(TchScr_Ymax - y)*LCDHEIGHT/(TchScr_Ymax-TchScr_Ymin)
其中TchScr_Xmin TchScr_Xmax 为触摸屏的x 轴上最小最大电压值。
TchScr_Ymin
TchScr_Ymax 为触摸屏的y 轴上最小最大电压值。
LCDWIDTH 与LCDHEIGHT 分别是显示屏
的宽度和高度。
x 与y 是触摸点的电压值。
lcdx与lcdy是转换后的坐标。
触摸屏的分辨率尽管可以达到很高,但由于 LCD 分辨率的限制,触摸屏的分辨率为
240X180。