这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 单片机嵌入语言解答,求大神帮忙

共9条 1/1 1 跳转至

单片机嵌入语言解答,求大神帮忙

菜鸟
2014-05-11 10:59:29     打赏
d=Get_AD_Result()*500.0/255;
if(d>=140)d=d+60;
if(100<d&& d<140)d=d+50;
if(15<d&& d<=100)d=d+40;

}

请问这段程序是什么意思啊




关键词: 单片机     C语言    

高工
2014-05-11 11:06:37     打赏
2楼
d=Get_AD_Result()*500.0/255; //单片机8位的ADC进行数据采集,我猜500.0是对参考电压进行了扩大100倍之后的值,这么一来,得到的d也就是所采集的实际电压的值再扩大100倍之后的结果。
if(d>=140)d=d+60;           //对得到的电压值进行判断喽,如果大于等于140就加60。。。
if(100<d&& d<140)d=d+50;  //原理同上
if(15<d&& d<=100)d=d+40; //同上

楼主可以大致说下这是在哪用到的代码,大家也好具体的理解


菜鸟
2014-05-11 11:24:21     打赏
3楼
这个是测量数字电压表的,500.0/255后面的除以255是什么意思。还有加60,50,40有什么用

院士
2014-05-11 11:24:21     打赏
4楼

对楼上做些补充吧

 后半段的+60 +50 +40 估计是对采样结果进行非线性校正。


菜鸟
2014-05-11 11:28:07     打赏
5楼
麻烦问下,为什么要分着3个区间呢。这样数值不是变了吗 d=Get_AD_Result()*500.0/255; if(d>=140)d=d+60; if(100<d&& d<140)d=d+50; if(15<d&& d<=100)d=d+40; } show1=d/100;   //获取第一位数字 show2=d/10%10;   //获取第二位数字 show3=d%10;   //获取第三位

院士
2014-05-11 11:34:23     打赏
6楼

只是简单的非线性校正。

在上述区间内,采集的数据与真实数据有偏差,通过+60来完成校正。

例如 采集回来的结果为 150,但是真实值是210,因此,要有偏移量60补足


菜鸟
2014-05-11 11:40:28     打赏
7楼
d=Get_AD_Result()*500.0/255;  这个乘以500.0为什么是扩大100倍,还有为什么是乘以500.0而不是500. 大神真的很感谢你,刚学都不怎么懂,麻烦了

院士
2014-05-11 11:56:57     打赏
8楼
只是将结果扩大的(500/255)倍,  实际值与真实值的倍率还与硬件相关。 软件上基本只做一个数据的调理作用,目的是便于计算或者显示

菜鸟
2014-05-25 10:27:46     打赏
9楼
想必楼主已经得到了想要的答案 ~ 对于一些程序,自己稍加琢磨如果消化的话,那么认识就会更深刻 ~

共9条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]