您的位置:首页 > 编程语言

Atmega32模数转换模块的简单应用

2010-12-14 16:04 211 查看
 

Atmega32有一个模数转换模块ADC,最高10位精度,支持8通道的输入,可通过编程选择输入通道。

ADC的初始化:

void ADC_init(void)
{
DDRA = 0x00;
PORTA = 0x00;
ADCSRA = (1<<ADEN)|0x06;
}

读取指定通道的数据:

unsigned int ReadADC(unsigned int adc_input)
{
ADMUX = 0x60|adc_input;
ADCSRA |= (1<<ADSC);
loop_until_bit_is_set(ADCSRA,ADIF);
ADCSRA |= (1<<ADIF);
return ADCH;
}

我的参考电压是AVCC,转换数据左对齐,所以对ADMUX写0x60,根据选择通道不同,ADMUX后5位根据需要改写,

我用的是单次转换模式,所以每次读取数据之前要对ADCSRA的ADSC位写1以启动一次转换,

并通过loop_until_bit_is_set(ADCSRA,ADIF);语句来确定转换是否完成。

由于对于数据精度要求不高,所以只读取ADCH的数据,如果要求10位精度,还可以读取ADCL的前两位以提高精度。

 

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  input 编程