mini2440AD转换以及触摸屏实验_第1页
mini2440AD转换以及触摸屏实验_第2页
mini2440AD转换以及触摸屏实验_第3页
mini2440AD转换以及触摸屏实验_第4页
mini2440AD转换以及触摸屏实验_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ARM实验AD转换以及触摸屏实验AD转换:又称为模数转换,是将模拟信号转换为计算机能够处理的数字信号。s3c2440集成了8通道10位CMOSA/D转换器。ADCCON第15位:用于标识A/D转换是否结束。第14位:用于使能是否进行预分频。13--6:则存储的是预分频数值,因为A/D转换的速度不能太快,所以要通过预分频处理才可以得到正确的A/D转换速度,如我们想要得到A/D转换频率为1MHz,则预分频的值应为49。5--3:表示的是A/D转换的通道选择。第2位:可以实现A/D转换的待机模式。第1位:用于是否通过读取操作来使能A/D转换的开始。第0位:则是在第1位被清零的情况下用于开启A/D转换。1.A/D转换的数据可以通过中断或查询方式访问。中断方式的总体转换时间为从A/D转换器开始到转换数据的读取,可能由于中断服务程序的返回时间和数据访问时间而延迟。查询方式是通过检查转换结束标志位的ADCCON[15],可以确定读取ADCDAT寄存器的时间。2.还提供了其它启动A/D转换的方法。在转换的读启动模式ADCCON[1]设置为1后,A/D转换启动同时读取数据。寄存器ADCDAT0的低10位用于存储A/D转换后的数据。寄存器ADCCON的第15位用于标识A/D转换是否结束。intreadADC(void){ rADCCON=(1<<14)|(49<<6);//设置预分频器和rADCCON&=~((7<<3)|(1<<2));//A/D通道0,正常模式

rADCCON|=0x1;//启动A/D转换

while(rADCCON&0x1);//确认A/D转换是否开始

while(!(rADCCON&0x8000))

;//等待A/D转换的结束return((int)rADCDAT0&0x3ff);//读取A/D转换的数据}练习:用中断的方式,来进行AD转换,旋转滑动变阻器,在超级终端上显示数字。 触摸屏接口MINI2440原理图触摸屏接口模式触摸屏有四种接口模式:(1)普通转换模式与通用AD转换的使用方式很相似。通过设置ADCCON来初始化,并以一个读和写ADCDAT0的操作完成。(2)X/Y位置分别转换模式又可以分成两种模式:X位置转换模式和Y位置转换模式。这两种模式下,触摸屏分别把X、Y位置转换数据写入到ADCDAT0和ADCDAT1中之后,向中断控制器发起中断请求。(3)自动(顺序)X/Y位置转换模式触摸屏控制器依次转换X和Y位置,把转换结果分别写入到ADCDAT0和ADCDAT1中,然后向中断控制器发起中断请求。(4)等待中断模式设置ADCTSC为0xD3,当触摸笔按下时,控制器发起中断请求。中断类型最终向处理器发起的中断请求类型是总中断INT_ADC,它分为两种子中断类型,1.INT_SUB_ADC表示AD采样完成(触摸屏X、Y位置采样完成);2.INT_SUB_TC表示触摸屏中断,即笔在屏幕上按下或者离开屏幕。触摸屏实验思考:要实现X、Y位置判断,当然是用自动采样模式最好;而要判断触摸笔的按下与离开,则应使用等待中断模式。问题是怎么把二者结合起来?方法:采用等待中断模式来判断笔的按下与离开;另外设置一个采样定时器,每隔一定时间(10ms)对X、Y位置进行采样。注意问题:(1)只有在笔按下状态时才进行位置采样,笔不在屏幕上时,采样是没有意义的。(2)位置采样采用轮询模式实现,即等待采样完成;采样完成后要恢复ADCTSC,重置为等待中断模式。(3)在普通转换模式,分别采样模式和自动采样模式下,ADCDAT0的最高位无效,不能用它来判断笔的状态。只有在触摸屏中断(INT_SUB_TC)中才可以用ADCDAT0来判断触摸笔状态。(4)位置采样完成后要屏蔽BIT_SUB_ADC。否则,ADC持续进行采样,会以很高的频率(因为采样频率很高)发起INT_SUB_ADC中断请求,最终向处理器发起INT_ADC请求,这会严重影响处理器的工作。这也是不采用自动采样,而要用定时器定时采样的原因。typedefstruct

{

volatileintbtn_state;//笔的状态

volatileintx_pos;//x坐标

volatileinty_pos;//y坐标

volatileintint_count;//转换的次数

volatileintstart_flag;//开始标志

}MOUSE_STATE;staticMOUSE_STATEg_mouse_state;初始化:rADCDLY=50000;//延时寄存器

rADCCON=(1<<14)+(49<<6);rADCTSC=0xD3;pISR_ADC=(unsignedint)TouchPanelIsr;

rINTMSK&=(~BIT_ADC);

rINTSUBMSK&=(~BIT_SUB_TC);

rINTSUBMSK|=BIT_SUB_ADC;

ADCTSC=011010011当有笔按下或抬起staticvoid__irqTC_interupt(void)//

{

…..中断清0if(0==g_mouse_state.btn_state)//如果中断前状态为抬起{

g_mouse_state.btn_state=1;//标志按下状态

g_mouse_state.start_flag=1;//标志开始状态………..打印状态和坐标rADCTSC=0x1D3;//设置为抬起中断

}

else//如果中断前状态为按下{

g_mouse_state.btn_state=0;//标志抬起状态

………….打印状态rADCTSC=0xD3;//设置为按下中断

}

}定时器中断定时器中断每隔10ms中断一次,进入中断处理函数,先判断笔有没有在屏上,如果没有就直接返回,如果有就转换X,Y坐标。void__irqTimer(void)

{

if(0==g_mouse_state.start_flag)return;

if(0==g_mouse_state.btn_state)return;

rINTSUBMSK&=(~BIT_SUB_ADC);//允许AD中断

rADCTSC=0x0C;//自动x,y转换模式

rADCCON=(1<<14)+(49<<6);//设置频率

rADCCON|=0x01;//开始转换

while(rADCCON&0x01);//AD转换开始且该位在开始后清零

while(!(rADCCON&0x8000));//等待AD转换结束

while(!(rSUBSRCPND&(1<<10)));//等待产生中断

rINTSUBMSK|=BIT_SUB_ADC;//关AD中断

g_mouse_state.x_pos=(rADCDAT0&0x3FF);

g_mouse_state.y_pos=(rADCDAT1&0x3FF);

g_mouse__count++;//取x,y的值,并且记数器+1rSUBSRCPND=BIT_SUB_ADC;//中断清0UART0_printf(“[x=%3d,y=%3d]\n”,g_mouse_state.x_pos,g_mouse_state.y_pos);//打印坐标练习:把整个程序写完,然后在MINI2440上运行,并能够看到效果,并指出有什么问题?

if(0==(rSUBSRCPND&BIT_SUB_TC))

{

rSRCPND|=BIT_ADC;

rINTPND|=BIT_ADC;

if(0==g_mouse_state.btn_state)

{

rADCTSC=0xD3;

}

else

{

rADCTSC=0x1D3;

}

}思考:这段代码有何作用?设LCD上每个点PD的坐标为[XD,YD],触摸屏上每个点PT的坐标为[XT,YT]。要实现触摸屏上的坐标转换为LCD上的坐标,需要下列公式进行转换:XD=A×XT+B×YT+CYD=D×XT+E×YT+F因为其中一共有六个参数(A,B,C,D,E,F),因此只需要三个取样点就可以求得这六个参数。这六个参数一旦确定下来,只要给出任意触摸屏上的坐标点PT,代入这个公式,就可以得到它所对应的LCD上像素点的坐标PD。具体的求解过程就不细讲,只给出最终的结果。已知LCD上的三个取样点为:PD0,PD1,PD2,它们所对应的触摸屏上的三个点为:PT0,PT1,PT2。A,B,C,D,E,F这六个参数最终的结果都是一个分式,而且都有一个共同的分母,为:

K=(XT0-XT2)×(YT1-YT2)-(XT1-XT2)×(YT0-YT2)那么这六个参数分别为:

A=[(XD0-XD2)×(YT1-YT2)-(XD1-XD2)×(YT0-YT2)]/KB=[(XT0-XT2)×(XD1-XD2)-(XD0-XD2)×(XT1-XT2)]/KC=[YT0×(XT2×XD1-XT1×XD2)+YT1×(XT0×XD2-XT2×XD0)+YT2×(XT1×XD0-XT0×XD1)]/K

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论