ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:562.66KB ,
资源ID:10867978      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10867978.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于ARM9的触摸屏设计与研究.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于ARM9的触摸屏设计与研究.docx

1、基于ARM9的触摸屏设计与研究物理与电子学院嵌入式系统原理与开发课程设计论文基于ARM9处理器的S3C2440触摸屏研究与设计姓 名: 金鹏举 学 号: 1123102750 专 业: 测控技术与仪器 任 课 教 师: 高伟 目录摘 要 - 2 -1、 嵌入式系统概述 - 2 -1.1、课题研究背景 - 2 -1.2、嵌入式系统概述 - 3 -1.2.1 嵌入式处理器的种类 - 3 -1.2.2 嵌入式操作系统概述 - 4 -1.2.3 Linux 嵌入式系统的基本结构 - 5 -1.3 嵌入式系统的发展现状 - 5 -2、触摸屏驱动开发 - 6 -2.1、触摸屏简介 - 6 -2.2、电阻式

2、触摸屏的工作原理 - 6 -2.3、S3C2440触摸屏接口电路 - 6 -2.3.1、触摸屏接口模式: - 6 -2.3.2和触摸屏相关的寄存器 - 7 -2.3、触摸屏的驱动程序开发 - 9 -3、触摸屏简单程序设计 - 11 -3.1、触摸屏的校准 - 11 -3.2、触摸屏编程实例 - 13 -3.2.1触摸屏的程序设计方法 - 13 -3.2.2、部分程序代码 - 13 -4、总结 - 15 -参考文献 - 16 -基于ARM9处理器的S3C2440触摸屏研究与设计金鹏举(河南大学2011级测控专业)摘 要:随着计算机技术、微电子技术和网络技术的迅速发展,嵌入式系统在工农业等诸多领域

3、得到了广泛的应用。本文简要介绍了嵌入式系统的结构、特点及其发展状况,并简述了ARM9处理器S3C2440触摸屏接口及四线电阻式触摸屏的相关原理,着重讲述了基于ARM9处理器S3C2440触摸屏的驱动开发和触摸屏坐标校准方法以及简单程序设计思路。经过验证,该驱动程序运行良好,基于触摸屏的简单程序设计达到预期目标。关 键 词:嵌入式Linus,触摸屏,S3C2440,驱动Abstract: With the rapid development of computer technology, microelectronic technology and network technology, emb

4、edded systems in industry and agriculture, and many other fields has been widely used. This paper describes the structure, characteristics and development of embedded systems and related principles outlined S3C2440 ARM9 processor touch screen interface and four-wire resistive touch screen, focuses o

5、n the ARM9 processor S3C2440-based touch screen driver development and touchscreen coordinate calibration method and a simple programming ideas. After verification, the driver is running well, based on a simple touch screen design program achieve the desired objectives.Keywords: Embedded Linus, touc

6、h screen, S3C2440, driving1、 嵌入式系统概述1.1、课题研究背景随着计算机相关技术的发展, ARM嵌入式系统受到越来越广泛的应用, 与人们生活的结合也越来越紧密。 触摸屏设备因其友善的人机交互性, 操作方便灵活, 输入速度快,被广泛的应用于这种嵌入式领域中。 嵌入式Linux系统具有开发源代码、内核稳定、可裁减性等特点, 吸引着众多商业公司和自由软件开发者的目光, 成为嵌入式系统领域不可或缺的操作系统之一。 触摸屏是一种输入设备, 操作简单易学,可靠性高,不占额外的空间,是最常用的便携式系统的输入设备。 特别是电阻式触摸屏,它结构简单、成本低,透光效果好, 工作环境

7、和外界完全隔离,不怕灰尘和水气,同时具有高解析度、高速传输反应、 一次校正、稳定性高、不漂移等特点,因而被广泛用于工业控制领域。1.2、嵌入式系统概述嵌入式系统(Embedded System)的一般定义为:“嵌入式系统是以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应于应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统”。它的主要特点是嵌入、专用。按照历史性、本质性、普遍性的要求,嵌入式系统定义为:“嵌入到对象体系中的专用计算机系统”。对象系统则是指嵌入式系统所嵌入的宿主系统。嵌入式系统的特点是其目的性与针对性,即每一套嵌入式系统的开发设计都有其特殊的应用场合与特定功能,

8、这也是嵌入式系统与通用的计算机系统最主要的区别。另外,嵌入式技术对实时性要求较高,由于嵌入式系统是为特定的目的而设计的,且常常受到空间、成本、存储、带宽等条件的限制,因此,它必须最大限度地在硬件上和软件上“量身定做”以提高效率,从而缩短开发周期、降低成本。1.2.1 嵌入式处理器的种类嵌入式处理器的体系结构一般为 RISC(精简指令集),位数一般为 32 位,寻址空间可以从 64KB 到 256MB,处理器工作频率可以达到上百 MHz。嵌入式微处理器的主要发展方向是小体积、高性能、低功耗。专业分工也越来越明显,从功能上看,用于嵌入式系统的嵌入式处理器主要分为 4 类:嵌入式微处理器、嵌入式微控

9、制器、嵌入式 DSP、嵌入式片上系统(1). 嵌入式微处理器嵌入式微处理器的基础是通用计算机中的 CPU。在应用中,将微处理器装配在专门设计的电路板上,只保留和嵌入式应用有关的功能,这样可以大幅度减小系统体积和功耗。为了满足嵌入式应用的特殊要求,嵌入式微处理器虽然在功能上和标准微处理器基本是一样的,但在工作温度、抗电磁千扰、可靠性等方面一般都做了各种增强。嵌入式微处理器主要包括:ARM、PowerPC、MIPS。ARM 即 Advanced RISC Machines 的缩写。既是一个公司的名字,也是一类微处理器的通称,还可以认为是一种技术的名字。ARM 公司成立于 1990 年,是知识产权供

10、应商,本身并不生产芯片,靠转让设计许可,由合作伙伴公司来生产各具特色的芯片。现在,ARM 微处理器及技术的应用已经深入到工业控制、无线通讯、网络应用、消费类电子产品、成像和安全产品等各个领域,并会在将来得到更加广泛的应用。(2). 嵌入式微控制器嵌入式微控制器又称单片机。就是将整个计算机系统集成到一块芯片中。嵌入式微控制器一般以某一种微处理器内核为核心,芯片内部集成 ROM/EPROM,RAM、总线、总线逻辑、定时 1 计数器、WatchDog, VO、串行口、脉宽调制输出、A/D, D/A, FlashRAM. EEPROM 等各种必要功能模块。为适应不同的应用需求,一般一个系列的单片机具有

11、多种衍生产品。(3). 嵌入式 DSP 处理器DSP 处理器对系统结构和指令进行了特殊设计,使其适合于执行 DSP 算法,编译效率较高,指令执行速度也较高。在数字滤波、FFT、谱分析等方面 DSP 算法正在大量进入嵌入式领域,DSP 应用正在从通用单片机中以普通指令实现 DSP功能,过渡到采用嵌入式 DSP 处理器。(4). 嵌入式片上系统(System On Chip)随着 VLSI 设计的普及化及半导体工艺的迅速发展,可以在一块硅片上实现一个更为复杂的系统,这就是 System On Chip(SOC)。各种通用处理器内核将作为SOC 设计公司的标准库,和许多其它嵌入式系统外设一样,成为

12、VLSI 设计中一种标准的器件,用标准的 VHDL 等语言描述,存储在器件库中。1.2.2 嵌入式操作系统概述为了使嵌入式系统的开发更加方便和快捷,需要有专门负责管理存储器分配、中断处理、任务调度等功能的软件模块,这就是嵌入式操作系统。嵌入式操作系统是用来支持嵌入式应用的系统软件,通常包括与硬件相关的底层驱动程序、系统内核、设备驱动接口、通信协议、图形用户界面(GUI)等。由于嵌入式操作系统屏蔽了底层硬件的复杂性,使得开发者通过操作系统提供的 API 函数就可以完成大部分工作,因此大大简化了开发过程,提高了系统的稳定性。嵌入式系统的开发者现在已经从反复进行硬件平台设计的过程中解脱出来,从而可以

13、将主要精力放在满足特定的需求上。目前流行的嵌入式操作系统可以分为两类:一类是将运行在个人电脑上的操作系统向下移植到嵌入式系统中,形成的嵌入式操作系统,如微软公司的 WinCE及其新版本,SUN 公司的 Java 操作系统,朗讯科技公司的 Inferno,嵌入式 Linux等。这类系统经过个人电脑或高性能计算机等产品的长期运行考验,技术日趋成熟,其相关的标准和软件开发方式己被用户普遍接受,同时积累了丰富的开发工具和应用软件资源。另一类是专门为嵌入式开发的操作系统,如 WindRiver 公司的 VxWorks, QSSL 公司的 QNX,ATI 公司的 Nucleus,这类产品在操作系统的结构和

14、实现上都针对所面向的应用领域,对实时性、高可靠性等进行了精巧的设计,而且提供了独立而完备的系统开发和测试工具,较多地应用在军用产品和工业控制等领域中。1.2.3 Linux 嵌入式系统的基本结构Linux 嵌入式系统的基本结构如图 1-1 所示。第一层为底层的硬件设备,包括嵌入式微处理器以及各种外围设备,例如 ROM、RAM、显示屏、串口等,第二层为用于操作系统引导 Boot Loader,第三层是 Linux 操作系统以及支持操作系统读取数据的根文件系统,第四层是设备驱动程序和系统库函数,第五层是针对特定应用的应用程序。1.3 嵌入式系统的发展现状国外早在 20 世纪 70、80 年代就开始

15、研究使用嵌入式,发展到现在已经较为成熟。芯片方面,各大微处理器制造厂商都有自己的嵌入式处理器产品,并且其设计理念和制造工艺仍然在不断提高。嵌入式操作系统方面,早在 80 年代就出现了嵌入式操作系统,相应嵌入式产品也层出不穷。随着应用的发展,嵌入式产品的涵盖范围和领域也越来越广泛,几乎包括了我们周围的所有电器设备,如电视机顶盒、掌上 PDA、移动计算设备、多媒体设备、医疗仪器乃至路由器、交换机等。进入 20 世纪 90 年代,随着信息化、智能化、网络化的发展,嵌入式系统技术也获得了更为广阔的发展空间,嵌入式技术全面展开,目前已成为通信和消费类产品的共同发展方向。在自动控制领域,嵌入式系统不仅应用

16、于 ATM 机、自动售货机、工业控制等专用设备,它还与移动通信设备、GPS、娱乐、PDA 设备等相结合,发挥出巨大作用。目前,嵌入式系统己经广泛应用到工业、交通、能源、通信、科研、医疗卫生、国防以及日常生活等领域。国内的嵌入式技术研究起步晚,到目前为止还没有比较成功的嵌入式微处理器上市,嵌入式实时操作系统方面,拥有自主知识产权的产品也很少,一般都使用国外的商业嵌入式操作系统或开源的操作系统。目前国内的嵌入式产品种类比较多,包括了消费电子,汽车电子,医疗器械,工业控制,家用电子各个方面。目前市面上主要使用的嵌入式处理器有三种:美国 MIPS 公司研发的 MIPS处理器;英国 ARM 公司研发的

17、ARM 处理器;IBM、Apple、Motorola 公司开发的 PowerPC 芯片。其中 ARM 处理器占有最大的市场份额。嵌入式操作系统方面,嵌入式 Linux 和 WinCE 两者的应用最广泛,面对 Linux 开源操作系统不断争夺市场份额,Microsoft 已经降低 WinCE 的版权费用,并且在 5.0 版本中对部分代码开源,6.0 版本更是扩大了开源代码的比重。2、触摸屏驱动开发2.1、触摸屏简介触摸屏作为人机交互的输入设备,由于其操作方便灵活, 输入速度快,被广泛的应用于这种嵌入式领域中。按照工作原理和传输信息的介质不同,触摸屏分为电阻式、电容感应式、红外线式以及表面声波式。

18、生活中常见的触摸屏有电容式触摸屏和电阻式触摸屏两大类。其中电容式触摸屏反应灵敏,并且支持多点触控;而电阻式触摸屏的抗干扰能力比较强,适用于比较恶劣的环境。2.2、电阻式触摸屏的工作原理触摸屏一般安装在显示屏的前端,主要由触摸屏检测部件和触摸屏控制器组成。在这里采用的是四线电阻式触摸屏。四线电阻式触摸屏是电阻式家族中应用最广、最普及的一种。其结构由下线路导电ITO层和上线路导电ITO层组成。中间有细微绝缘点隔开,当触摸屏表面无压力时,上下线路成开路状态。一旦有压力施加到触摸屏上,上下线路导通,控制器通过下线路导电ITO层在X坐标方向上施加驱动电压,通过上线路导电ITO层上的探针, , 通过控制器

19、改变施加电压的方向, 侦测Y方向上的电压。由于按压点不同,所测得的X和Y方向的电压值也不同,屏幕的坐标与电压值有着一一对应的关系,可以通过采样得到的电压值推算出触点的X坐标和Y坐标,从而明确触点位置。2.3、S3C2440触摸屏接口电路2.3.1、触摸屏接口模式:1、 普通转换模式:只作为AD转换器使用,不适用触摸屏2、 分离的方向转换模式:触摸屏控制器可以工作在两个转换模式之一,X方向转换模式写方向转换数据到ADCDAT0,故触摸屏接口产生中断源给中断控制器。Y方向转换模式写方向转换数据到ADCDAT1,故触摸屏接口产生中断源给中断控制器。3、 自动顺序X/Y方向转换模式:触摸屏控制器在写入

20、X方向转换数据到ADCDAT0和写入Y方向转换数据到ADCDAT1后,触摸屏接口产生中断源给中断控制器。4、 等待中断模式:当笔尖落下时,触摸屏控制器产生中断信号,然后必须清除等待中断模式。所以每次点击触摸屏之前,触摸屏控制器都应设置成这种工作模式。ADC和触摸屏接口功能方框图2.3.2和触摸屏相关的寄存器(1)、ADC控制寄存器ADCCON(2)、ADC触摸屏控制寄存器ADCTSC ADC启动延时寄存器ADCDLY(3)、ADC数据转换寄存器ADCDAT0(4)、ADC数据转换寄存器ADCDAT12.3、触摸屏的驱动程序开发设备驱动程序在Linux内核中扮演着特殊的角色,使某个特定硬件响应一

21、个定义良好的内部编程接口,用户的操作通过一组标准化的调用执行,而这些调用独立于特定的驱动程序。将这些调用映射到作用于实际硬件的设备特有操作上,则是设备驱动程序的任务。采用外部晶体管接触摸屏到触摸屏中断服务程序中断到来以后立即屏蔽掉中断,使中断不能再次进入。由于触摸屏一段时间内是被连续按下的,所以这里还需要设置一个timer()函数,用于不断读取触摸屏坐标数据。Read函数用于读取触摸屏座标。当触摸笔抬起后退出触摸屏的中断服务程序,使中断使能,以便触摸笔再次按下时响应中断。1)中断处理 当触摸笔按下时,内核响应中断,进入中断处理程序。中断设为下降沿有效,当中断到来后,屏蔽中断,以保证在触摸屏被连

22、续按下时,不会连续的触发中断,进入中断处理程序。在中断处理程序中设置一个timer函数,这样连续监测从触摸屏取得的值。如果触摸笔按下就读取坐标放到缓冲区中;如果触摸屏抬起,就在缓冲区中放入抬起信号。当触摸笔抬起时,打开中断,保证下一次触摸屏被按下时可以触发。为了加快中断的响应速度,不在一个中断处理程序中停留过久,将digi_tasklet压入任务调度后立即退出,从而加快了整个系统的速度。在digi_tasklet中已经将初始化digi_tasklet_init()为其调度任务,通过调用digi_tasklet_action()函数来读取触摸屏坐标,并且在digi_taskelet中设置wake

23、_up_interruptible()用于唤醒休眠的进程。Static void S3C2410_isr_ts( int irq, void* dev_id,structpt_regs* regs)If(tsdev. penstatus=pen_down) /如果有笔按下 Touch_pan_clear_inter(); /清中断Touch_pan_disable_inter();Tasklet_schedule(&digi_tasklet); /进程调度 return; 2) read()函数 首先启动AD转换,写ADC控制寄存器的控制字以及ADCTSCADC(触摸屏控制寄存器)控制字,设置

24、的判断返回触摸点坐标值是否在有效范围内,如果在有效范围内采样标志ts1pressure=1,如果不在有效范围之内采样标志ts1pressure=0; read函数中通过调用copy_to_user(),实现将内核空间数据拷贝到用户空间。如果驱动程序无法立即满足请求或调用read()函数时没有数据可读,采用阻塞I/O方式,使该进程在read上休眠,另一个进程开始运行,只有当进程被唤醒后,该进程重新开始运行。等待队列wait_queue_head_,t就相当于一个进程链表,包含了等待某个特定事件的所有进程。等待队列为空,没有数据可读,如果指定的是非阻塞I/O,返回-EAGAIN;如果是阻塞I/O的

25、话,则要进行休眠Wait_event_ interruptible(wq, tsdev.head=tsdev. tail)。Read( )start_adc_x( ); /启动X轴的AD转换ADCCON=0X447a; /定义ADC控制寄存器,普通模式,/模拟输入通道AIN7 mode_x_axis( ); /设置ADC触摸屏控制其寄存器/(ADCTSC)X=(ADCDAT0&0x3ff); /ADCDATA0为ADC转换数据/寄存器,存放转换数据Start_adc_Y( ); /启动Y轴的AD转换ADCCON=0XC46a; /启动ADC控制寄存器,普通模/式,模拟输入通道AIN5mode_

26、Y_axis( );Y=(ADCDAT1&0x3ff); /转换的数据放入数据寄存器中ts. penstatus=pen_down; /笔中断的状态设置为按下ts.x=x;ts.y=y /存放转换后的数据If(ts.x92|ts.y979|ts.y100 2)/如果在触摸屏范围之外,状态设置为0ts. pressure=0;else ts. pressure=1; Copy_to_user( ) /将内核空间的数据拷贝到用户空间3、触摸屏简单程序设计3.1、触摸屏的校准在实际的应用中, 通常触摸屏是作为与显示屏配合使用的输入设备, 需要从触摸屏采样得到的坐标与屏幕的显示坐标做一个映射。常用的触

27、摸屏校准方法有三点校准法和五点校准法。以下仅对三点校准法做简单介绍三点校准法当触摸屏与液晶屏间的角度差很小时,经过推理可以假设触摸屏与液晶显示器各点之间的对应关系为( 设液晶显示器的坐标为( XL,YL ) ,触摸屏的坐标为( X,Y) ) :XL = AX+BY+CYL = DX+EY+F因为要取三个点进行校准,所以存在六个变量,即要通过六个方程式求出液晶显示器的坐标。此处要求三个点尽量分散,最好为左上角、中间、右下角三点。得:XL1 = AX1+BY1+CXL2 = AX2+BY2+CXL3 = AX3+BY3+CYL1 = DX1+EY1+FYL2 = DX2+EY2+FYL3 = DX

28、3+EY3+F可求 出 A、B、C、D、E、F的值,一旦这些参数值定下来,便可利用上面的方程组,通过触摸屏上的原始数据计算出它在LCD显示器上的对应点。上述联立方程组的未知量已求解出,此处不再推导。这里直接跳过中间步骤得出最后结论,将K作为各方程式的公分母,便可得出未知量 :K = (X1 - X3) (Y2 - Y3) - (X2 - X3) (Y1 - Y3)A = ( XLl - XL3)(Y2 - Y3) - (XL2 - XL3)(Y1 - Y3) / KB = ( X1 - X3 )( XL2 - XL3) - (XL1 - XL3)( X2 - X3) / KC = (Y1( X

29、3XL2 - X2XL3) + Y2(XlXL3 - X3XL1) + Y3(X2XL1 - X1XL2) / KD = (YL1 - YL3)(Y2 - Y3) - (YL2 - YL3)(Y1 - Y3) / KE = (X1 - X3)(YL2 - YL3) - (YLl - YL3)(X2 - X3) / KF = (Y1 (X3YL2 - X2YL3) + Y2 (X1YL3 - X3YL1) + Y3(X2YL1 - X1YL2) / K基于此,通过三个校准点便可确定触摸屏与液晶屏的对应关系,进行校准。当Xl = Ax+By+CYl = Dx+Ey+F 时y = (Yl - D *

30、 Xl + C * D - F) / (E - D * B)x = (Xl - B * y - C) / A3.2、触摸屏编程实例3.2.1触摸屏的程序设计方法在触摸的过程中,CPU需要知道三件事情:1、触摸屏在什么时候被按下2、触摸屏被按下后要进行X和Y方向的电压测量3、触摸屏在什么时候抬起对触摸屏进行初始化的步骤如下:1. 设置ADC工作时钟2. 设置触摸屏工作模式3. 开触摸屏中断,设置中断服务函数中断服务函数:1 设置触摸屏接口模式2 设置ADC启动延时时间3 启动A/D转换4 等待A/D转换完成5 读取X 和Y方向转换数据6 设置为等待抬起中断模式,循环检测是否发生中断7 重新设置为

31、按下中断模式3.2.2、部分程序代码LCD的初始化:void LCD_Init(void) /*第一步:配置GPIO为LCD功能引脚*/ rGPCUP = 0x00000000; rGPCCON = 0xaaaa02aa; rGPDUP = 0x00000000; rGPDCON = 0xaaaaaaaa; /Initialize VD15:8 /*第二步:配置LCD_PWRDN背光引脚*/ rGPGCON=rGPGCON|(38); /*第三步:配置LCDCON15*/ rLCDCON1=(CLKVAL_TFT8)|(MVAL_USED7)|(PNRMODE_TFT5)|(BPPMODE_TFT1)|0; rLCDCON2=(VBPD24)|(LINEVAL14)|(VFPD6)|(VSPW); rLCDCON3=(HBPD19)|(HOZVAL8)|(HFPD); rLCDCON4=(HSPW); rLCDCON5=(FRM56511)|(INVVCLK10)|(INVVLINE9)|(INVVFRAME8)|(INVVD7)|(INVVDEN6)|(INVPWREN5)|(INVLEND4)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1