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

 

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的前两位以提高精度。

 

 

 


 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值