嵌入式微处理器及应用论文.docx
- 文档编号:9699631
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:16
- 大小:192.60KB
嵌入式微处理器及应用论文.docx
《嵌入式微处理器及应用论文.docx》由会员分享,可在线阅读,更多相关《嵌入式微处理器及应用论文.docx(16页珍藏版)》请在冰豆网上搜索。
嵌入式微处理器及应用论文
S3C2410触摸屏控制实验
――嵌入式微处理器及应用
学院计算机工程学院
专业计算机科学与技术
年级班别XX级本科一班
学号XX
学生姓名XX
指导教师XX
成绩
评语
2014年4月29日
摘要
触摸屏(TSP)作为一种最新的电脑输入输出设备,因具有简单、方便的特点而逐步被广泛使用。
在对TSP技术介绍的基础上,详细叙述了基于S3C2410四线电阻式触摸屏控制电路和驱动程序设计过程。
这种触摸屏使用逐次逼近式的A/D转换器来获取触摸点的坐标,并通过平均值法修正误差而得到最后结果。
关键词:
触摸屏;S3C2410;A/D转换器
第一章触摸屏简介
1.1触摸屏理论知识基础
从市场角度来讲,触摸屏是一种定位设备,用户可以直接用手向计算机输入坐标信息,它和鼠标、键盘一样,是一种输入设备。
触摸屏具有坚固耐用、反应速度快、节省空间、易于交流等许多优点。
利用这种技术,只要用手指轻轻地指碰计算机显示屏上的图符或文字就能实现对主机操作,从而使人机交互更为直接了当,这种技术极大方便了那些不懂电脑操作的用户。
从技术原理角度讲,触摸屏是一套透明的绝对寻址系统,首先,触摸屏必须保证是透明的,因此它必须通过材料科技来解决透明问题,像数字化仪、写字板、电梯开关等这些设备都不是触摸屏。
其次,触摸屏是绝对坐标,手指碰到显示屏哪里就是哪里,不需要第二个动作便可以实现相应的操作,不像鼠标是相对定位的一套系统。
而且触摸屏软件不需要游标,有游标反而会影响用户的注意力,因为游标是给相对定位的设备用的,相对定位的设备要移动到一个位置,首先要知道现在位置,接下来要到那个位置,需要不停的给用户反馈当前的位置相应信息才可以避免出现偏差。
对于采取绝对坐标定位的触摸屏来说是不需要。
最后,是需要能检测手指触碰动作并且判断手指相应位置,各类触摸屏技术便是围绕“检测手指触摸”而不同发展的。
并且从技术原理来区别触摸屏,可分为五个基本种类:
矢量压力传感触摸屏、电阻式触摸屏、电容式触摸屏、红外线触摸屏、表面声波触摸屏。
其中矢量压力传感技术触摸屏已退出历史舞台;红外线技术触摸屏价格低廉,但其外框易碎,容易产生光干扰,曲面情况下失真;电容技术触摸屏设计构思合理,但其图像失真问题很难得到根本解决;电阻技术触摸屏的定位准确,但其价格颇高,且怕刮易损;表面声波触摸屏解决了以往触摸屏的各种缺陷,清晰不容易被损坏,适于各种场合,缺点是屏幕表面如果有水滴和尘土会使触摸屏变的迟钝,甚至不工作。
以上便是一些触摸屏技术的简介。
对于一种触摸屏评判,技术原理只是其中的一部分,触摸屏要在各个领域应用,还需要在很多方面有所发展,例如选用材料的耐用性如何,反应速度如何,价格能否为大众所接收,这些都是评判一种触摸屏好坏的一些方面。
1.2电阻触摸屏简介
目前基于电阻技术的触摸屏由于定位准确,亦可满足绝大多数用户的使用要求,下面将着重介绍电阻式触摸屏的基本原理:
电阻触摸屏的屏体部分是一块与显示器表面非常配合的多层复合薄膜,由一层玻璃或有机玻璃作为基层,表面涂有一层透明的导电层,上面再盖有一层外表面硬化处理、光滑防刮的塑料层,它的内表面也涂有一层透明导电层,在两层导电层之间有许多细小(小于千分之一英寸)的透明隔离点把它们隔开绝缘。
图1-1所示:
图1-1电阻触摸屏剖面结构
当手指触摸屏幕时,平常相互绝缘的两层导电层就在触摸点位置有了一个接触,因其中一面导电层接通Y轴方向的5V均匀电压场,使得侦测层的电压由零变为非零,控制器侦测到这个接通后,进行A/D转换,并将得到的电压值与5V相比即可得触摸点的Y轴坐标,同理得出X轴的坐标,这就是所有电阻技术触摸屏共同的最基本原理。
但是四线电阻触摸屏由于价格低廉,在通用领域的运用,下面将结合S3C2410内置的触摸屏控制器来详细讲解整个触摸屏电路的工作及测量过程。
如图1-2所示:
四线电阻触摸屏测量时的等效电路。
如图1-2四线电阻触摸屏测量时的等效电路。
1.3电阻触摸屏测量步骤
(1)在触摸屏没有被按下的时候,触摸屏的X轴和Y轴不会接触在一起,此时这个电路处在“PenDownDetect”状态。
S1、S2、S4断开,S3、S5闭合。
X+~X-的整个轴上的电压均为0V(GND),Y-端悬空,Y+端由于有上拉电阻R1的存在而呈现高电平。
当“PenDown”后,X轴和Y轴受挤压而接触导通后,Y轴上的电压由于连通到X轴接地而变为低电平,此低电平可做为中断触发信号来通知CPU发生“PenDown”事件。
(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.1S3C2410模数转换器(ADC)及触摸屏控制器简介
S3C2410内置1个8信道的10bit模数转换器(ADC),该ADC能以500KSPS的采样资料将外部的模拟信号转换为10bit分辩率的数字量。
同时ADC部分能与CPU的触摸屏控制器协同工作,完成对触摸屏绝对地址的测量。
特性:
-分辩率:
10bit
-相信误差:
+/-2LSB
-最大转换速率:
500KSPS
-模拟量输入范围:
0~3.3V
-分步X/Y坐标测量模式
-自动X/Y坐标测量模式
-中断等待模式
下图是ADC及触摸屏控制器部分的逻辑示意图,图2-1
图2-1ADC及触摸屏控制器部分的逻辑示意图
随后的图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轴电阻。
图2-2外接触摸屏的示意图
图2-3外部电路的实际原理图
2.1ADC及触摸屏控制器的工作模式
2.1.1ADC普通转换模式
普通转换模式(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中断等待模式
在系统等待“PenDown”,即触摸屏按下的时候,其实是处于中断等待模式。
一旦被按下,实时产生“INT_TC”中断信号。
每次发生此中断都,X轴和Y轴坐标转换资料都可以从相应的资料寄存器中读出。
2.1.5闲置模式
在该模式下转换资料寄存器中的值都被保留为上次转换时的资料。
2.2ADC及触摸屏控制器的寄存器详解
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转换进行中
图2-4ADC控制寄存器
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输出状态
图2-5触摸屏控制寄存器
ADCDLY:
ADC转换周期等待定时器
ADCDAT0:
ADC资料寄存器0(见图2-6)
XPDATA:
X轴转换资料寄存器
XY_PST:
选择X/Y轴自动转换模式
AUTO_PST:
X/Y轴自动转换使能位
UPDOWN:
选择中断等待模式的类型
为0:
按下产生中断
为1:
释放产生中断
图2-6ADC资料寄存器0
ADCDAT1:
ADC资料寄存器1(见图2-7)
定义类同于ADCDAT0。
图2-7ADC资料寄存器1
2.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.3INT_ADC中断服务子程序设计
1. 读ADCDAT0、ADCDAT1寄存器对转换结果处理。
2. 设置触摸屏为等待松开中断方式()。
3. 清除INT_ADC中断(设置SUBSRCPND、SRCPND、INTPND寄存器)。
2.3.4触摸屏松开中断服务子程序设计
1. 设置触摸屏为等待按下中断方式(设置ADCTSC)。
2. 清除INT_TC中断(设置SUBSRCPND、SRCPND、INTPND寄存器)。
2.4源码分析
voidtsp_test(void)
{
uart_printf("TouchScreenTestExample.\n");
rADCDLY=50000;//测量延时//ADCStartorIntervalDelay
rGPGCON|=0xFF000000;//设置gpio为触摸屏模式
rGPGUP=0xFFFF;
rADCTSC=(0<<8)|(1<<7)|(1<<6)|(0<<5)|(1<<4)|(0<<3)|(1<<2)|(0);
//autosequentialx/ypositionconversion,nooperation,XPpull-up
rADCCON=(1<<14)|(ADCPRS<<6)|(5<<3)|(0<<2)|(0<<1)|(0);
//EnablePrescaler,Prescaler,AIN7/5fix,Normal,Disablereadstart,No//operation
rADCTSC=(0<<8)|(1<<7)|(1<<6)|(0<<5)|(1<<4)|(0<<3)|(0<<2)|(3);
//YM:
GND,YP:
AIN5,XM:
Hi-z,XP:
externalvoltage,XPpullupEn,AUTO//sequential,Waitingforinterruptmode
delay(100);
pISR_ADC=(UINT32T)tsp_int;//添加adc中断函数
rINTMSK&=~(BIT_ADC);//屏蔽adc中断
rINTSUBMSK=~(BIT_SUB_TC);//屏蔽触摸屏子中断
g_nKeyPress=1;
while(g_nKeyPress==1)//onlyforboardtesttoexit
{
if(uart_getkey())return;//按键即退出//orpressanykeytoexit
}
rINTSUBMSK|=BIT_SUB_TC;//清除触摸屏子中断
rINTMSK|=BIT_ADC;//清除ADC标志位
uart_printf("end.\n");
}
void__irqtsp_int(void)//
{
inti;
UINT32TszPos[40];//存贮测量结果的数值
rINTSUBMSK|=(BIT_SUB_ADC|BIT_SUB_TC);//Masksubinterrupt(ADCand//TC)
//TC(TouchscreenControl)Interrupt
if(rADCTSC&0x100)//等待中断模式
{
rADCTSC&=0xff;//Setstylusdowninterrupt
}
Else//有触点
{
uart_printf("StylusDown!
!
\n");
szPos[30]=g_nPosX;
szPos[34]=g_nPosY;
//
//Hi-Z,AIN5,GND,Extvlt,PullupDis,Normal,X-position
rADCTSC=(0<<8)|(0<<7)|(1<<6)|(1<<5)|(0<<4)|(0<<3)|(0<<2)|
(1);
//adcinputain5
rADCCON=(1<<14)|(39<<6)|(5<<3)|(0<<2)|(1<<1)|(0);
rADCDAT0;//预读开始数据转换
delay(10);
for(i=0,g_nPosX=0;i { while(! (0x8000&rADCCON));//CheckECFLG szPos[i]=(0x3ff&rADCDAT0);//读取转换值 g_nPosX+=szPos[i];//迭加 } g_nPosX=g_nPosX/nSampleNo;//平均值 uart_printf("X-Posion[AIN5]is%04d\n",g_nPosX); // //GND,Extvlt,Hi-Z,AIN7,PullupDis,Normal,Y-position rADCTSC=(0<<8)|(1<<7)|(0<<6)|(0<<5)|(1<<4)|(0<<3)|(0<<2)| (2); //adcinputain7 rADCCON=(1<<14)|(39<<6)|(7<<3)|(0<<2)|(1<<1)|(0); rADCDAT1;//预读开始数据转换 delay(10); for(i=0,g_nPosY=0;i { while(! (0x8000&rADCCON));//CheckECFLG szPos[i]=(0x3ff&rADCDAT1);//读取转换值 g_nPosY+=szPos[i];//迭加 } g_nPosY=g_nPosY/nSampleNo;//平均值 uart_printf("Y-Posion[AIN7]is%04d\n",g_nPosY); //GND,AIN,Hi-z,AIN,PullupEn,Normal,Waitingmode rADCTSC=(1<<8)|(1<<7)|(1<<6)|(0<<5)|(1<<4)|(0<<3)|(0<<2)|(3); } rSUBSRCPND|=BIT_SUB_TC;//清除触摸屏子中断 rINTSUBMSK=~(BIT_SUB_TC);//Unmasksubinterrupt(TC) ClearPending(BIT_ADC);//清除ADC中断 } 结论 当前比较流行的ARM嵌入式处理器,如Samsung的S3C系列、Intel的Xscalc系列、Motorola的龙珠系列等,几乎都内嵌有ADC触摸屏模块。 使许多嵌入式产品如手机、PDA等仅通过触笔就能轻松的对输入进行操作,极大的方便了用户的使用。 本文给出了基于S3C2410处理器的触摸屏简单功能的实现,是触摸屏嵌入式应用的基础,可以进一步开发手写识别等功能,广泛应用与各种嵌入式系统中。 参考文献 [1]田泽.嵌入式开发与应用教程[M].北京: 北京航空航天大学出版社.2004: 376-380 [2]王立风.触摸屏技术及其应用[J].电子工业专用设备.2006,35 (1): 63-66 [3]吴金宏.触摸屏技术及其应用[J].家庭电子.1998(4): 59
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 微处理器 应用 论文