嵌入式微处理器及应用论文.docx
JINGCHU UNIVERSITY OF TECHNOLOGYS3C2410触摸屏控制实验嵌入式微处理器及应用学 院计算机工程学院专 业计算机科学与技术年级班别 XX级本科一班学 号 学生姓名 XX指导教师XX成 绩评语摘要触摸屏(TSP)作为一种最新的电脑输入输出设备,因具有简单、方便的特点而逐步被广泛使用。 在对TSP技术介绍的基础上,详细叙述了基于S3C2410四线电阻式触摸屏控制电路和驱动程序设计 过程。这种触摸屏使用逐次逼近式的A/D转换器来获取触摸点的坐标,并通过平均值法修正误差而 得到最后结果。关键词:触摸屏;S3C2410; A/D转换器第一章触摸屏简介11.1触摸屏理论知识基础11.2电阻触摸屏简介21.3电阻触摸屏测量步骤3第二章S3C2410模数转换器(ADC)及触摸屏控制器 42.1 S3C2410模数转换器(ADC)及触摸屏控制器简介42.1 ADC及触摸屏控制器的工作模式62.1.1 ADC普通转换模式62.1.2独立X/Y轴坐标转换模式62.1.3自动X/Y轴坐标转换模式72.1.4中断等待模式72.1.5闲置模式72.3触摸屏程序设计102.3.1主函数设计102.3.2触摸屏按下中断服务子程序设计102.3.3 INT_ADC中断服务子程序设计112.3.4触摸屏松开中断服务子程序设计11结论16第一章触摸屏简介1.1触摸屏理论知识基础从市场角度来讲,触摸屏是一种定位设备,用户可以直接用手向计算机输入坐标信 息,它和鼠标、键盘一样,是一种输入设备。触摸屏具有坚固耐用、反应速度快、节省 空间、易于交流等许多优点。利用这种技术,只要用手指轻轻地指碰计算机显示屏上的 图符或文字就能实现对主机操作,从而使人机交互更为直接了当,这种技术极大方便了 那些不懂电脑操作的用户。从技术原理角度讲,触摸屏是一套透明的绝对寻址系统,首先,触摸屏必须保证是 透明的,因此它必须通过材料科技来解决透明问题,像数字化仪、写字板、电梯开关等 这些设备都不是触摸屏。其次,触摸屏是绝对坐标,手指碰到显示屏哪里就是哪里,不 需要第二个动作便可以实现相应的操作,不像鼠标是相对定位的一套系统。而且触摸屏 软件不需要游标,有游标反而会影响用户的注意力,因为游标是给相对定位的设备用的, 相对定位的设备要移动到一个位置,首先要知道现在位置,接下来要到那个位置,需要 不停的给用户反馈当前的位置相应信息才可以避免出现偏差。对于采取绝对坐标定位的 触摸屏来说是不需要。最后,是需要能检测手指触碰动作并且判断手指相应位置,各类 触摸屏技术便是围绕“检测手指触摸”而不同发展的。并且从技术原理来区别触摸屏, 可分为五个基本种类:矢量压力传感触摸屏、电阻式触摸屏、电容式触摸屏、红外线触 摸屏、表面声波触摸屏。其中矢量压力传感技术触摸屏已退出历史舞台;红外线技术触 摸屏价格低廉,但其外框易碎,容易产生光干扰,曲面情况下失真;电容技术触摸屏设 计构思合理,但其图像失真问题很难得到根本解决;电阻技术触摸屏的定位准确,但其 价格颇高,且怕刮易损;表面声波触摸屏解决了以往触摸屏的各种缺陷,清晰不容易被 损坏,适于各种场合,缺点是屏幕表面如果有水滴和尘土会使触摸屏变的迟钝,甚至不 工作。以上便是一些触摸屏技术的简介。对于一种触摸屏评判,技术原理只是其中的一部 分,触摸屏要在各个领域应用,还需要在很多方面有所发展,例如选用材料的耐用性如 何,反应速度如何,价格能否为大众所接收,这些都是评判一种触摸屏好坏的一些方面。1.2电阻触摸屏简介目前基于电阻技术的触摸屏由于定位准确,亦可满足绝大多数用户的使用要求,下面将着重介绍电阻式触摸屏的基本原理:电阻触摸屏的屏体部分是一块与显示器表面非常配合的多层复合薄膜,由一层玻璃 或有机玻璃作为基层,表面涂有一层透明的导电层,上面再盖有一层外表面硬化处理、 光滑防刮的塑料层,它的内表面也涂有一层透明导电层,在两层导电层之间有许多细小 (小于千分之一英寸)的透明隔离点把它们隔开绝缘。图1-1所示:透明绝缘点罕导电膜防制薄膜图1-1电阻触摸屏剖面结构当手指触摸屏幕时,平常相互绝缘的两层导电层就在触摸点位置有了一个接触,因 其中一面导电层接通Y轴方向的5V均匀电压场,使得侦测层的电压由零变为非零,控 制器侦测到这个接通后,进行A/D转换,并将得到的电压值与5V相比即可得触摸点的Y 轴坐标,同理得出X轴的坐标,这就是所有电阻技术触摸屏共同的最基本原理。但是四线电阻触摸屏由于价格低廉,在通用领域的运用,下面将结合S3C2410内置 的触摸屏控制器来详细讲解整个触摸屏电路的工作及测量过程。如图1 -2所示:四线电 阻触摸屏测量时的等效电路。R1如图1-2四线电阻触摸屏测量时的等效电路。1.3电阻触摸屏测量步骤(1) 在触摸屏没有被按下的时候,触摸屏的X轴和Y轴不会接触在一起,此时这个 电路处在“Pen Down Detect”状态。S1、S2、S4断开,S3、S5闭合。X+X-的整个轴 上的电压均为0V(GND),Y-端悬空,Y+端由于有上拉电阻R1的存在而呈现高电平。当“Pen Down”后,X轴和Y轴受挤压而接触导通后,Y轴上的电压由于连通到X轴接地而变为 低电平,此低电平可做为中断触发信号来通知CPU发生“Pen Down”事件。(2) 当检测到“PenDown”事件后,CPU立刻进入X轴坐标测量状态:S1、S3闭合, S2、S4、S5断开(Y+、Y-两断悬空)。由于X轴和Y轴在接触点按下而连通,因此Y+端 的X_ADC可以认为是X轴的分压采样点(通过测量X_ADC的电压可以得到X+到接触点, 以及X-到接触点的比例),从而计算出X轴的坐标。(3) 采样完X轴的坐标后,S1、S3、S5断开,S2、S4闭合,同样原理,我们可以进 一步得到Y轴的坐标。第二章S3C2410模数转换器(ADC)及触摸屏控制器2.1 S3C2410模数转换器(ADC)及触摸屏控制器简介S3C2410内置1个8信道的10bit模数转换器(ADC),该ADC能以500KSPS的采样资 料将外部的模拟信号转换为10bit分辩率的数字量。同时ADC部分能与CPU的触摸屏控 制器协同工作,完成对触摸屏绝对地址的测量。特性:-分辩率:10bit-相信误差:+/- 2LSB-最大转换速率:500KSPS-模拟量输入范围:03.3V-分步X/Y坐标测量模式-自动X/Y坐标测量模式-中断等待模式下图是ADC及触摸屏控制器部分的逻辑示意图,图2-1图2-1 ADC及触摸屏控制器部分的逻辑示意图随后的图2-2和图2-3分别是在S3C2410的ADC以及触摸屏控制器的基础上外接 触摸屏的示意图和外部电路的实际原理图。需要补充说明的是,图中Q1、Q2为P沟道 MOS管,开门电压为1.8V;Q3、Q4为N沟道MOS管,开门电压为2.7V。运用学过的电子 电路的知识,我们知道当MOS管导通后(栅极电压达到开门电压之后),MOS管的源-漏极 之间可以认为是直通的(导通电阻为毫欧级),即可以把MOS管认为是图4-7中真正的“开 关”。AVDD是外部模拟参考源,一般接3.3V电源,XP、XM和YP、YM分别是触摸屏的 4条引线,各自对应X轴和Y轴电阻。R13 10DK / / / 归 £ 103K图2-2外接触摸屏的示意图图2-3外部电路的实际原理图2.1 ADC及触摸屏控制器的工作模式2.1.1 ADC普通转换模式普通转换模式(AUTO_PST=0,XY_PST=0)是用来进行一般的ADC转换之用的,例如通过 ADC测量电池电压等等。2.1.2独立X/Y轴坐标转换模式独立X/Y轴坐标转换模式其实包含了 X轴模式和Y轴模式2种模式。首先进行X轴的坐标转换(AUTO_PST=0,XY_PST=1),X轴的转换资料会写到ADCDAT0 寄存器的XPDAT中,等待转换完成后,触摸屏控制器会产生相应的中断。然后进行Y轴的坐标转换(AUTO_PST=0,XY_PST=2),Y轴的转换资料会写到ADCDAT1 寄存器的YPDAT中,等待转换完成后,触摸屏控制器会产生相应的中断。2.1.3自动X/Y轴坐标转换模式自动X/Y轴坐标转换模式(AUTO_PST=1, XY_PST=0)将会自动地进行X轴和Y轴的转 换操作,随后产生相应的中断。2.1.4中断等待模式在系统等待“Pen Down”,即触摸屏按下的时候,其实是处于中断等待模式。一旦 被按下,实时产生“INT_TC”中断信号。每次发生此中断都,X轴和Y轴坐标转换资料 都可以从相应的资料寄存器中读出。2.1.5闲置模式在该模式下转换资料寄存器中的值都被保留为上次转换时的资料。2.2 ADC及触摸屏控制器的寄存器详解ADCCON : ADC控制寄存器(见图2-4)ENABLE_START :置1:启动ADC转换置0:无操作RESR_START :置1:允许读操作启动ADC转换置0:禁止读操作启动ADC转换STDBM:置1:将ADC置为闲置状态(模式)置0:将ADC置为正常操作状态SEL_MUX:选择需要进行转换的ADC信道PRSCVL: ADC转换时钟预分频参数PRSCEN: ADC转换时钟使能ECFLG: ADC转换完成标志位(只读)为1: ADC转换结束为0: ADC转换进行中ADCCOH削MbipUnInitial SlatsEGFLG15)End 改 convsnaiori fteg 油 onlyli.0 = Ai'D oonvraiofl in “雄铿;1 = End of ArD0PRBCEM【向AC ca n'orlar prnscn hr a nniblo.P = Qi 初*1 = Em 业0FRSCVLIFA!Q oa mBcflETler vlue.口9陌1 *2S5f-late lhai division factor l& (H*1J wNen 4he- pr蹄caMf valie b N.OkFFSEL.MUXIS:3|Arlogi叫 1 邱LBCO = AIN «DOI = AIN 10W = AIN 2011 = AIN 3101 = WN5110 = AIN 111 = AIN7£XP)05TDBM|2JBiandby mod o solo-cl.D = Ikrmzil opisralion mode1 = Slmdtry rrcwlc:1READ.START!1A'D w wfli枷n 5-lart 的 r«d.0 = Di&aMa =iwl by r&SHj operafcin1 =slartbj/ rwd o口的污 w0EMABLE_ ETJRTCQAJD 8 rviwrsien Msriq 程 siitling Ihis bit.Il RIEAC_STAIftT s- aiwiblDd, lhi-s gTuo is r»crf WAEd_D = Mo djeE 诂 n1 = Aj!D conmgnicnnnd 的伊 bit i< clBnred rTfb«rlhff $i7rt-up-Q图2-4 ADC控制寄存器ADCTSC :触摸屏控制寄存器(见图2-5)XY_PST :对X/Y轴手动测量模式进行选择AUTO_PST: X/Y轴的自动转换模式使能位PULL_UP : XP端的上拉电阻使能位XP_SEN :设置nXPON输出状态XM_SEN :设置XMON输出状态YP_SEN :设置nYPON输出状态YM_SEN :设置YMON输出状态ADCTSCBitDe$criplioriiInitialReservedThis !bH should be zero.GYM_SENFJSelect cwjrput value- of YMON. 0 = YMON ovtput is 0 (YM = 1 = YMON outfMJt is 1 (YM = GND).0YP_SE.N6Select ouirput value of nYFOM.0 = ifiYPOH output 临 & (YP- Ejcternat vcriagB)-1 = raYPOW autpul is 1 (YP is conn sc ted with AIN|S).1XM.SENSdldet OiJlutifXMON.0 = XMON outfHil is 0 (KM = HkZ)1 - XMONis -1 (XM = GND)-.0XP_SEN四Select Duirpurt value of nXFOM.0 = rkXPOIM output is O (XP = Exremal voltage1 = nJC PON output is 1 (XP ie cennected wrtti AIN71PULL_UP3Pulkjp switchi enable. Q = XP pulkip enable 1 = XP pulRip disable1AUTO_PSTAutomatically wqu申ncing wnwwiion cf K-fJMiton and Y-pcsilion0 = Normal ADC conversion1 = Auro (Sequentwl) X/Y Pesition Conversion Mode0X¥_PSTH:0|hflaLnuail measurement of X-pKition or Y-pcsilia-n-06 Ho operatinsn mode01 = X-posiGon mesnremrit10 = Y-pcisitiDfi measurrnnt11= Wailing Fw llntemjpt Modm0图2-5触摸屏控制寄存器ADCDLY : ADC转换周期等待定时器ADCDAT0 : ADC资料寄存器0(见图2-6)XPDATA : X轴转换资料寄存器XY_PST :选择X/Y轴自动转换模式AUTO_PST: X/Y轴自动转换使能位UPDOWN :选择中断等待模式的类型为0:按下产生中断 为1:释放产生中断ADCDAT&BHD&eriplicnInitial SlateUPTOWNUp « dawn slate erf Stylus mt Waiting Ecr InterrupJ Mode.0 - St/bs down slate1 = Slylus up state-AUTO.PSir14Autnmalic scfjciwncirtg tMnyersion o( Xrpositian and Y-positi&n.D = Momal ADC conversion1 =林uuiKhg meesunennntQr X-p&sitiani Y-positionXY_PST13:12Manual iTiBasuremcrit df X-po&ition or Y-position.00 = No operalion vnode01 = X-posfrion mesurerneiift1Q= V-positk?n me-asurernent11 = Wa iting fw Intsmjpt Mode-R况11:10RiS&frMicPBATA thTonral AOC)X-posihon GcanversKin d-ota va kie_ include M&nnall ADC Gonverstcin 晦沽valu&)ata value: EF-SFF-图2-6 ADC资料寄存器0ADCDAT1 : ADC资料寄存器1(见图2-7) 定义类同于ADCDAT0oADCDAT1BitDe-scripitis>nInitial StateUPDOWN但Up -or dowr><4 Stylus 戒 Waiting for Interrtipt tukde.0 = Si/lus down slag1 = Stylus up wt就白-AIJITQPT14Aintomricalty s&z|unting ccnverskjin X-posrtian and ¥- pqifiQn. 0 = NDim-al ADC -crwBrsisn1 = quencing nn如百口陟皿曰nt 口f X-pQsiliQn, Y-prasitesn-XY.P&T(13:12Msnijal moaswrment of K-pasilion ar Y-positkin.00= No opwalion modo01 = X-psilrion nnsurementW = Y-posit ion me-e3Juremerr11 = Waiting liar Interrupt Mode-ReservedReservedYPDATAIY-jwasitian MrrursiaK data wdlu且Dara vlue; Q 3FF-图2-7 ADC资料寄存器12.3触摸屏程序设计2.3.1主函数设计1. 设置A/D转换器时钟(ADCCON寄存器)。2. 设置采样延时时间(ADCDLY寄存器)。3. 开启ADC总中断(INTMSK)、INT_TC中断即触摸屏被按下或松开时产生中断 (INTSUBMSK)、INT_ADC中断即ADC转换结束时产生中断。4. 设置触摸屏为等待中断模式(设置ADCTSC),一般为先设置为等待触摸屏按下中 断模式。2.3.2触摸屏按下中断服务子程序设计1. 中断发生后,设置ADCTSC寄存器为0x0C进入自动(连续)x/y轴坐标转换模式。2. 设置ADCCON寄存器开始转换。3. ADC转换结束后将转换后x、y坐标值分别写入ADCDAT0、ADCDAT1中(硬件自动 完成),发出INT_ADC中断(转换结束中断)。4. 清除 INT_TC 中断(设置 SUBSRCPND、SRCPND、INTPND 寄存器)。2.3.3 INT_ADC中断服务子程序设计1. 读ADCDAT0、ADCDAT1寄存器对转换结果处理。2. 设置触摸屏为等待松开中断方式()。3. 清除 INT_ADC 中断(设置 SUBSRCPND、SRCPND、INTPND 寄存器)。2.3.4触摸屏松开中断服务子程序设计1. 设置触摸屏为等待按下中断方式(设置ADCTSC)。2. 清除 INT_TC 中断(设置 SUBSRCPND、SRCPND、INTPND 寄存器)。2.4源码分析void tsp_test(void)(uart_printf( Touch Screen Test Example.n);rADCDLY = 50000;/测量延时/ ADC Start or Interval DelayrGPGCON |= 0xFF000000;/设置 gpio 为触摸屏模式rGPGUP = 0xFFFF;rADCTSC = (0<<8) | (1<<7) | (1<<6) | (0<<5) | (1<<4) | (0<<3) | (1<<2) | (0);/auto sequential x/y position conversion,no operation, XP pull-upCondition of Towth Screen Panel Pads In Aut& (Sequential) X/Y Position Conversion Mod电.XPXMYPYMX Position Co叫ersiofiExternal VoltageGNUAIN5jHhZY P响OxiversiocAIN|7H应ExtemaE VoltageGNDrADCCON = (1<<14) | (ADCPRS<<6) | (5<<3) | (0<<2) | (0<<1) | (0);/ Enable Prescaler,Prescaler,AIN7/5 fix,Normal,Disable read start,No/operationrADCTSC = (0<<8) | (1<<7) | (1<<6) | (0<<5) | (1<<4) | (0<<3) | (0<<2) | (3);/YM:GND,YP:AIN5,XM:Hi-z,XP:external voltage,XP pullup En,AUTO/sequential,Waiting for interrupt modedelay(100);pISR_ADC = (UINT32T)tsp_int;rINTMSK &= (BIT_ADC);rINTSUBMSK = (BIT_SUB_TC);g_nKeyPress = 1;while(g_nKeyPress=1)(if(uart_getkey() return;rINTSUBMSK |= BIT_SUB_TC;rINTMSK |= BIT_ADC;uart_printf(" end.n);void _irq tsp_int(void)/添加adc中断 函数/屏蔽adc中断/屏蔽触摸屏子中断/ only for board test to exit按键即退出/ or press any key to exit清除触摸屏子中断清除ADC标志位CmHitim of Touch Str匏n PanM P遍s in W爵ting far Interrupt M&k,XPXM¥PYMWaiting for Int&rupt ModePuH-叩Hi-ZAl帼GNDint i;UINT32T szPos40;存贮测量结果的数值rINTSUBMSK |= (BIT_SUB_ADC | BIT_SUB_TC);/ Mask sub interrupt (ADC and/TC)/ TC(Touch screen Control) Interruptif( rADCTSC & 0x100)/等待中断模式rADCTSC&=0xff;/ Set stylus down interruptElse/有触点(uart_printf( Stylus Down!n);szPos30 = g_nPosX;szPos34 = g_nPosY;/ <X-Position Read>分离河轴坐标转换模式下的触摸屏引脚状况表XPXMYPYMX轴坐标转换连到外部电压旌到GND连到AINF5高阻Y轴坐标转换理到AIN7高阻连到外部电压GND/Hi-Z,AIN5,GND,Ext vlt,Pullup Dis,Normal,X-positionrADCTSC = (0<<8)|(0<<7)|(1<<6)|(1<<5)|(0<<4)|(0<<3)|(0<<2)|(1);/adc input ain5rADCCON = (1<<14)|(39<<6)|(5<<3)|(0<<2)|(1<<1)|(0);rADCDAT0;/预读 开始 数据转换delay(10);for(i = 0,g_nPosX=0; i<nSampleNo; i+)(while(!(0x8000 & rADCCON);/ Check ECFLGszPosi = (0x3ff & rADCDAT0); 读取转换值g_nPosX += szPosi; 迭加g_nPosX = g_nPosX/nSampleNo;/ 平均值uart_printf( X-PosionAIN5 is %04dn", g_nPosX);/ <Y-Position Read>分离XM轴坐标转换模式下的触摸屏引脚状况表XPXMYPYMX轴坐标转换连到外部电压姓到GND连到AIN但高阻丫轴坐标转换连到AIN7高阻连到外部电压GND/GND,Ext vlt,Hi-Z,AIN7,Pullup Dis,Normal,Y-positionrADCTSC = (0<<8)|(1<<7)|(0<<6)|(0<<5)|(1<<4)|(0<<3)|(0<<2)|(2);/adc input ain7rADCCON = (1<<14)|(39<<6)|(7<<3)|(0<<2)|(1<<1)|(0);rADCDAT1; /预读开始数据转换delay(10);for(i = 0,g_nPosY=0; i<nSampleNo; i+)(while(!(0x8000 & rADCCON);/ Check ECFLGszPosi = (0x3ff & rADCDAT1);/读取转换值g_nPosY += szPosi;/迭加g_nPosY = g_nPosY/nSampleNo; / 平均值uart_printf(" Y-PosionAIN7 is %04dn", g_nPosY);/GND,AIN,Hi-z,AIN,Pullup En,Normal,Waiting moderADCTSC=(1<<8)|(1<<7)|(1<<6)|(0<<5)|(1<<4)|(0<<3)|(0<<2)|(3);rSUBSRCPND |= BIT_SUB_TC; /清除 触摸屏子中断rINTSUBMSK = (BIT_SUB_TC);/ Unmask sub interrupt (TC)ClearPending(BIT_ADC); /清除 ADC 中断结论当前比较流行的ARM嵌入式处理器,如Samsung的S3C系列、Intel的Xscalc系列、 Motorola的龙珠系列等,几乎都内嵌有ADC触摸屏模块。使许多嵌入式产品如手机、PDA 等仅通过触笔就能轻松的对输入进行操作,极大的方便了用户的使用。本文给出了基于 S3C2410处理器的触摸屏简单功能的实现,是触摸屏嵌入式应用的基础,可以进一步开 发手写识别等功能,广泛应用与各种嵌入式系统中。参考文献1 田泽.嵌入式开发与应用教程M.北京:北京航空航天大学出版社. 2004:376-3802 王立风.触摸屏技术及其应用J.电子工业专用设备.2006,35(1): 63-663 吴金宏.触摸屏技术及其应用J.家庭电子.1998(4):59