AVR单片机如何采集电压,ADC转换完成以后出来的值如何转化为电压值,然后根据电压值判断电压的变化
程序如下:voidad_init(void){//DDRG=0X00;ADMUX|=(0<<REFS1)|(1<<REFS0)|(1<<ADLAR);ADCSRA|=(1...
程序如下:
void ad_init(void)
{
// DDRG=0X00;
ADMUX |= (0<<REFS1)|(1<<REFS0)|(1<<ADLAR);
ADCSRA |= (1<<ADEN)|(1<<ADSC)|(1<<ADATE)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0);
//ADC使能;ADC开始转换;连续转换;中断使能;128分频
}
uint ad_getdata()
{
uint addata;
ADCSRA |= (1 << ADSC);//AD开始转换
while(!(ADCSRA&(1<<ADIF)));//等待转换完成
addata=ADCL;
addata=addata+ADCH*256;
ADCSRA |= (1 << ADIF);
return addata;
}
int main(void)
{
ad_init();
while(1)
{
tmp=ad_getdata();
if(tmp<=180)
{
Disp_Battery_One;
}
if(180<tmp<200)
{
Disp_Battery_Two;
}
if(tmp>=200)
{
Disp_Battery_Three;
}
}
}
相当于手机上的电池电量的显示程序,ad_getdata()转换的数值是多少,tmp直接就是电压值了吗?根据电压的不同如何进行比较? 展开
void ad_init(void)
{
// DDRG=0X00;
ADMUX |= (0<<REFS1)|(1<<REFS0)|(1<<ADLAR);
ADCSRA |= (1<<ADEN)|(1<<ADSC)|(1<<ADATE)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0);
//ADC使能;ADC开始转换;连续转换;中断使能;128分频
}
uint ad_getdata()
{
uint addata;
ADCSRA |= (1 << ADSC);//AD开始转换
while(!(ADCSRA&(1<<ADIF)));//等待转换完成
addata=ADCL;
addata=addata+ADCH*256;
ADCSRA |= (1 << ADIF);
return addata;
}
int main(void)
{
ad_init();
while(1)
{
tmp=ad_getdata();
if(tmp<=180)
{
Disp_Battery_One;
}
if(180<tmp<200)
{
Disp_Battery_Two;
}
if(tmp>=200)
{
Disp_Battery_Three;
}
}
}
相当于手机上的电池电量的显示程序,ad_getdata()转换的数值是多少,tmp直接就是电压值了吗?根据电压的不同如何进行比较? 展开
1个回答
意法半导体(中国)投资有限公司
2023-06-12 广告
2023-06-12 广告
STM32F103是一款高性能的嵌入式芯片,由意法半导体(STMicroelectronics)公司生产。它是STM32系列芯片之一,具有紧凑、低功耗、高性能等特点,被广泛应用于嵌入式系统中。STM32F103的主要特点包括:1. 集成了A...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |