atmega8 例程:AD中断方式采集
扫描二维码
随时随地手机看文章
/***********************************************************
* 函数库说明:ATMEGE8 AD模数转换
* 版本: v1.0
*
* 说明: 中断方式AD采集
*
* 版本更新: 详见readme.txt
*
************************************************************
*注意: res PC5
* CE PB0
* RST PB1
* DC PB2
* SDIN PB3
* SCLK PB4
***********************************************************/
#include "includes.h"
/***********************************************************
** 名 称:void AD_Init(void)
** 功 能:AD初始化
** 入口参数:无
** 出口参数:无
** 使用说明:无
**********************************************************/
void AD_Init(void)
{
//参考电压AREF,左对齐,ADC5单端输入
ADMUX |= (1 << ADLAR) | (1 << MUX2) | (1 << MUX0);
//AD使能, 连续转换,中断使能,32分频, 6M / 32 = 187.5khz
ADCSRA |= (1 << ADEN) | (1 << ADFR) | (1 << ADIE) | (1 << ADPS2) | (1 << ADPS0);
//AD开始转换
ADCSRA |= (1 << ADSC);
}
int main(void)
{
//LCD初始化
LCD_Init();
//AD初始化
AD_Init();
LCD_Write_Chinese_String(0, 0, 12, 5, Chinese_Font, 0, 0);
//开总中断
sei();
while(1)
{
}
return 0;
}
int result = 0;
char buf[] = "5.00V";
SIGNAL(SIG_ADC)
{
result = ADCH;
result = result * 500.0 / 255;
//数据更新
buf[0] = result / 100 + '0';
buf[2] = result / 10 % 10 + '0';
buf[3] = result % 10 + '0';
//数据显示
LCD_Write_English_String(0, 3, buf);
}