《嵌入式-触摸屏实验》由会员分享,可在线阅读,更多相关《嵌入式-触摸屏实验(5页珍藏版)》请在金锄头文库上搜索。
1、触摸屏实验实验目 的:了 解ARM 处理器触摸 屏的处 理机 制,掌 握在S3C2440A 平台下进行触摸屏应用编程需要完成的任务实验器材:Sinosys-EA2440实验箱PC机实验原理:触摸屏的 4 根信号线直接和 S3C2440A 的TSYM、TSYP、TSXM 和TSXP 四个引脚相连,由S3C2440A 内部来控制电平的转换和 AD 的转换测量。触摸屏的硬件连接图如图1.1:图 1.1 触摸屏信号连接图s3c2440 一共有4 种触摸屏接口模式,其中,自动(连续)XY 坐标转换模式和等待中断模式应用地比较常见。等待中断模式是在触笔落下时产生一个中断,在这种模式下,A/D 触摸屏控制寄
2、存器 ADCTSC 的值应为0 xD3,在系统响应中断后,XY 坐标的测量模式必须为无操作模式,即寄存器ADCTSC 的低两位必须清零。自动(连续)XY 坐标转换模式是系统依次转换触点的X 轴名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 5 页 -坐标和Y 轴坐标,中X 轴坐标值写入寄存器ADCDAT0 的低10 位中,Y 轴坐标写入寄存器ADCDAT1的低 10 位中,在这种模式下,系统同样会产生中断信号。在一般情况下,为实现触摸屏功能,先是设置为等待中断模式,在产生中断后,再设置为自动(连续)XY 坐标转换模式,依次读取触点的坐标值。实验总结:利用ADS1.2 工具(ADS
3、 工具的使用请参照前面的实验)打开“SourceCodeInterfacetouchpanel_test”的工程文touchpanel_test.mcp 工程文件。在 Touchpanel.c 的Test_Touchpanel 子函数中对触摸屏相关的寄存器进行设置和初始化。rADCDLY=50000;/Normal conversion mode delay about(1/3.6864M)*50000=13.56ms rADCCON=(114)+(ADCPRS6);/ADCPRS En,ADCPRS Value Uart_Printf(ADC touch screen testn);rADC
4、TSC=0 xd3;/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);触摸屏中断服务程序在对寄存器进行设置和指定中断服务程序名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 5 页 -的入口地址后,程序进入等待状态,当用触摸笔点按触摸屏时,处理器接受中断,并进入中断服务程序的执行。中断服务程序源码如下:int i;U32 saveAdc
5、dly;if(rADCDAT0&0 x8000)/Uart_Printf(nStylus Up!n);rADCTSC&=0 xff;/Set stylus down interrupt bit rADCTSC=(13)|(12);/Pull-up disable,Seq.X,Y postion measure.saveAdcdly=rADCDLY;rADCDLY=40000;/Normal conversion mode delay about(1/50M)*40000=0.8ms rADCCON|=0 x1;/start ADC 启动AD 转换while(rADCCON&0 x1);/che
6、ck if Enable_start is low while(!(rADCCON&0 x8000);/check if EC(End of Conversion)flag is high,This line is necessary!while(!(rSRCPND&(BIT_ADC);/check if ADC is finished with interrupt bit xdata=(rADCDAT0&0 x3ff);/AD 转换结束后得到(x,y)坐标ydata=(rADCDAT1&0 x3ff);名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 5 页 -/YH 0627,
7、To check Stylus Up Interrupt.rSUBSRCPND|=BIT_SUB_TC;ClearPending(BIT_ADC);rINTSUBMSK=(BIT_SUB_TC);rINTMSK=(BIT_ADC);rADCTSC=0 xd3;/Waiting for interrupt rADCTSC=rADCTSC|(18);/Detect stylus up interrupt signal.while(1)/to check Pen-up state if(rSUBSRCPND&(BIT_SUB_TC)/check if ADC is finished with int
8、errupt bit /Uart_Printf(Stylus Up Interrupt!n);break;/if Stylus is up(1)state /等待直到触摸笔离开触摸屏时往串口输出坐标值Uart_Printf(count=%03d XP=%04d,YP=%04dn,count+,xdata,ydata);rADCDLY=saveAdcdly;rADCTSC=rADCTSC&(18);/Detect stylus Down interrupt signal.rSUBSRCPND|=BIT_SUB_TC;rINTSUBMSK=(BIT_SUB_TC);ClearPending(BIT_ADC);通过 DNW 软件将程序下载到实验箱中,点击触摸屏,可以在图上观察到不同坐标的变化,如图1.3 名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 5 页 -图 1.3 触摸屏实验结果名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 5 页 -