AVR内置的1.1V的ad电压基准源似乎不稳定,数值跳动好大,可以消除吗?问题二补充,如梦赐教,不胜感激! 10
floatvalue;unsignedcharvalue;为什么我用串口助手发回来的value值不对呢?不是我想要的带小数的实际值//芯片mega88pavoidadc_...
float value ;
unsigned char value;
为什么我用串口助手发回来的value值不对呢?不是我想要的带小数的实际值
//芯片mega88pa
void adc_init(uchar ch)
{
ADCSRA=0xef;//128分频
ADCSRB=0x00;//连续转换
ADMUX=ch;//|(1<<ADLAR) 1.1v右对齐 ADC0
}
void adc_convert()
{
v=0;
v_l=ADCL;
v_h=ADCH;
v+=v_l;
v+=v_h*256
value= (v/1023)*1.1
} 展开
unsigned char value;
为什么我用串口助手发回来的value值不对呢?不是我想要的带小数的实际值
//芯片mega88pa
void adc_init(uchar ch)
{
ADCSRA=0xef;//128分频
ADCSRB=0x00;//连续转换
ADMUX=ch;//|(1<<ADLAR) 1.1v右对齐 ADC0
}
void adc_convert()
{
v=0;
v_l=ADCL;
v_h=ADCH;
v+=v_l;
v+=v_h*256
value= (v/1023)*1.1
} 展开
3个回答
展开全部
程序不对,
unsigned char value;
value是无符号字符型,显然最后不能得到小数值。
v+=v_h*256
value= (v/1023)*1.1
这两句后面怎么没有分号?
unsigned char value;
value是无符号字符型,显然最后不能得到小数值。
v+=v_h*256
value= (v/1023)*1.1
这两句后面怎么没有分号?
追问
unsigned int value写错了是v,分号加上了,没打上去
追答
"unsigned int value写错了是v"是什么意思?
我是说你不能把value定义成无符号字符型,程序头两行不对。
float value ;//这里定义成浮点类型,可以表示为小数
unsigned char value;//但是这里你为什么又定义成无符号字符型了呢?
//两行程序对同一个变量定义,结果以后一行为准。
//你要把最后一行程序等号左边的变量定义为浮点类型的。
value= (v/1023)*1.1;//就是这行里的value 必须是浮点类型的。
展开全部
你自己做的硬件吗?
更多追问追答
追问
是的,硬件应该没什么问题
追答
我记得手册上说了外部参考引脚要加滤波电容的,你加了没?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
加个滤波电容试试
追问
加过了,还是有较大跳动,程序有问题吗?unsigned int value写错了是v,串口出不了浮点数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询