新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > AVR单片机ADC的应用

AVR单片机ADC的应用

作者:时间:2013-05-11来源:网络收藏

的应用

1.数模转换的基础知识

()基本上是一个比例上的问题,即由产生的数字值跟输入模拟量与转换器量程的比值有关的。转换关系如下:

Vin/Vfullscale=X/(2N-1)  其中X是数字输出,N是数字输出的位数(ADC的位数),Vin是模拟输入量的值,Vfullscale是模拟输入量的最大值。

数模转换的转换精度计算:

Vresolution=Vfullscale/((2N-1)

2.AVR微控器的ADC介绍

AVR微控器的ADC具有两个ADC寄存器:ADC控制与状态寄存器ADCSR控制ADC的运行;ADC多路复用选择器ADMUX,控制8个测量的模拟量输入。

1.jpg

为了ADC以最大的精度操作时,要求使用50HZ---200K HZ之间的时钟频率,选择合适的比例分频因子以获得50HZ---200KHZ的转换频率。由于ADC的速度比较慢,如果处理器在ADC转换数据时处于等待状态,会浪费时间,则ADC通常采用中断模式。ADC初始化:

(1) 设置ADCSR的最低三位,确定分频因子

(2) 设置ADIE为1,打开中断模式

(3) 设置ADEN为高电平,使ADC有效

(4)  设置ADSC,以马上开始转换

3.应用

系统功能:当在模拟通道3输入电压超过3V时,系统点亮红色LED;当输入电压小于2V时,点亮黄色LED,当输入电压在2V--3V间,点亮绿色LED.

硬件连接:三个LED分别接至AT908535的PORD口的PORTD.0、 PORTD.1、PORTD.2 AVR微控制器的ADC外设会根据所使用的具体微控制器而有所不同,所有的ADC都对VCC连接中的引脚电压有噪声抑制要求,有些拥有内置的噪声消除器,有些则拥用在内部控制Vref的能力,使用ADC时需要查看相关微控制器的手册。

程序代码:

#i nclude90s9535.h>

#define LEDS PORTD

#define red 0xfe

#define yellow 0xfd

#define green 0xfc

#define uchar unsigned char

interrupt[ADC_INT] void adc_isr(void)

{

uchar adc_data; //variable for ADC result

adc_data=ADCW; //read all 10bits into variable

if(adc_data>(3*1023)/5)

LEDS=red;

else(adc_data(2*1023)/5)

LEDS=yellow;

else

LEDS=green;

ADCSR=ADCSR|0x40; //start the next conversion

}

void main()

{

DDRD=0x07; //least signifcant 3 bits for output

ADMUX=0x03; //select to read only channel 3

ADCSR=0xCE; //ADC中断,64分频

#asm("sei")

while(1); //等待ADC中断产生

}



评论


相关推荐

技术专区

关闭