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的前两位以提高精度。
相关文章推荐
- 有行统计项和列统计项的行列转换,以及EXCEL导入SQL的简单应用
- PIC单片机精通_A/D模数转换模块细节补充
- python warnings模块的简单应用
- 【Java模块的简单应用】
- python字符串编码识别模块chardet简单应用
- Apache Rewrite模块的简单应用
- 数字字符串转换成算数类型函数atoi(),分解字符串的函数strtok()的简单应用
- python中stack在实际中的简单应用之进制转换
- 利用operator实现隐式类型转换的简单应用
- FreeSWITCH: JAVA模块的简单应用(mod_java)
- lamp环境centos5.10,phpprotobuf模块安装,及简单应用
- 我自己简单写的32转换成 16 位的MD5方式
- python中quests模块的简单应用
- 【Android Developers Training】 32. 向其它应用发送简单数据
- 栈的使用和简单进制转换的应用
- python(os模块)的简单应用
- java 用反射简单应用,将Object简单转换成map
- ArrayList的简单应用,数组之间的转换。
- 输入输入流应用的简单思想,字节流字符流之间的转换,转换时指定编码表的操作
- (转)ZwQuerySystemInformation枚举内核模块及简单应用