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
}
展开
 我来答
newmanemail
2014-08-09 · 超过17用户采纳过TA的回答
知道答主
回答量:51
采纳率:100%
帮助的人:18.5万
展开全部
程序不对,
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 必须是浮点类型的。
龙君莲
2014-08-08 · TA获得超过160个赞
知道小有建树答主
回答量:248
采纳率:0%
帮助的人:124万
展开全部
你自己做的硬件吗?
更多追问追答
追问
是的,硬件应该没什么问题
追答
我记得手册上说了外部参考引脚要加滤波电容的,你加了没?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jiangbo03201
2014-08-08
知道答主
回答量:18
采纳率:0%
帮助的人:2.5万
展开全部
加个滤波电容试试
追问
加过了,还是有较大跳动,程序有问题吗?unsigned int value写错了是v,串口出不了浮点数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式