您的位置 首页 动态

四 ARM9(S3C2440)的ADC和触摸屏操控——理论知识

概述10位CMOSADC(模数转换器)是一个8通道模拟输入的再循环类型设备。其转换模拟输入信号为10位二进制数字编码,最大转换率为25

概述

10 位CMOS ADC(模/数转化器)是一个8 通道模仿输入的再循环类型设备。其转化模仿输入信号为10 位二
进制数字编码,最大转化率为2.5MHz A/D 转化器时钟下的500 KSPS。A/D 转化器支撑片上采样-坚持功用和掉电
形式的操作。
接触屏接口能够操控/挑选接触屏X、Y 方向的引脚(XP,XM,YP,YM)的改换。接触屏接口包括接触屏引
脚操控逻辑和带中止产生逻辑的ADC 接口逻辑。

接触屏接口形式
1. 一般转化形式
单转化形式是最合适的通用ADC 转化。此形式能够经过设置ADCCON(ADC 操控存放器)初始化而且经过读写
ADCDAT0(ADC 数据存放器0)就能够完结。
2. 别离的X/Y 方向转化形式
接触屏操控器能够作业在两个转化形式之一。方向转化形式如下办法操作。X 方向形式写X 方向转化数据到
ADCDAT0,故接触屏接口产生中止源给中止操控器。Y 方向形式写Y 方向转化数据到ADCDAT1,故接触屏接口产
生中止源给中止操控器。
3. 主动(次序)X/Y 方向转化形式
主动(次序)X/Y 方向转化形式操作如下。接触屏操控器次序改换接触X 方向和Y 方向。在主动方向改变形式中接触
操控器在写入X 丈量数值到ADCDAT0 和写入Y 丈量数值到ADCDAT1 后,接触屏接口产生中止源给中止操控器。
4. 等候中止形式
当笔尖落下时接触屏操控器产生中止(INT_TC)信号。等候中止形式设置值为rADCTSC=0xd3; // XP_PU,XP_Dis,
XM_Dis,YP_Dis,YM_En
接触屏操控器产生中止信号(INT_TC)后,有必要铲除等候中止形式。(XY_PST 设置到无操作形式)
待机形式
当ADCCON [2]被设置为1时激活待机形式。此形式中,中止A/D 转化操作而且ADCDAT0、ADCDAT1 存放
器包括的是从前转化的数据。

存放器的功用能够看一下数据手册

下面是结合FL2440开发板的接触屏操作实例:

接触屏作业流程以及程序设计流程:
一、接触屏初始化:
1、设置接触屏接口为中止等候形式(ADCTSC存放器),等候接触笔按下
2、铲除源挂起存放器(SRCPND)、中止挂起存放器(INTPND)、子源挂起存放器

(SUBSRCPND)
3、程序进口函数,关中止屏蔽存放器和子中止屏蔽存放器(INTMSK,INTSUBMSK),中止

形式和中止优先级默许即可
二、接触屏中止服务子程序:
一)接触笔按下中止
4、假如中止产生,设置x,y坐标为主动转化形式
5、发动AD转化,然后检测AD转化是否发动
6、检测AD转化是否完毕,若完毕,获取x,y坐标的值
7、对几个存放器写1清零,避免重复产生中止(这儿的中止是笔尖按下中止)
二)接触笔抬起中止
8、设置接触屏即可为等候中止形式,等候接触笔抬起(ADCTSC,关键是要设置接触

笔抬起中止信号)
9、假如产生中止,不做任何操作,只打印出一句接触笔抬起中止信息
10、接触笔抬起之后,把得到的x,y坐标值发送给PC机,显示出详细数值
三)再次设置接触屏为等候中止形式,等候下次接触屏被按下

#include”2440addr.h”
#include”def.h”
//void Touch_Screen_Off(void);
int key=0,xdata,ydata;
void __irq ADC_ISR(void) ;
void ledcontrol();
void Touch_Screen_Init(void)
{
rADCDLY=50000;//Normal conversion mode delay about (1/3.6864M)*50000=13.56ms
// Enable Prescaler=39,Prescaler A/D converter freq. = 50 MHz/(39+1) = 1.25MHz
//Conversion time = 1/(1.25MHz / 5cycles) = 1/250 kHz = 4 us
//AIN0,Normal,Disable read start,No operation

rADCCON = (1<<14)|(39<<6)|(0<<3)|(0<<2)|(0<<1)|(0);
//YM=GND,YP=AIN5,XM=Hi-z,XP=AIN7,XP pullup En,Normal ADC,Waiting for interrupt mode

rADCTSC = (0<<8)|(1<<7)|(1<<6)|(0<<5)|(1<<4)|(0<<3)|(0<<2)|(3);

pISR_ADC= (unsigned)ADC_ISR; //中止服务函数地址赋给中止指针


ClearSubPending(BIT_SUB_TC);//清子挂起存放器
ClearSubPending(BIT_SUB_ADC);
ClearPending(BIT_ADC);//清挂起存放器
EnableSubIrq(BIT_SUB_TC); //使能子中止
EnableIrq(BIT_ADC);//使能中止
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/news/dongtai/256921.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部