打印

下面的表达式怎么写转换才更精确呢?各位前辈有更好的方

[复制链接]
1479|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ccjchen|  楼主 | 2007-5-16 15:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
(说明:由于adc0816的基准电压为5V,而显示结果要扩大6倍,所以要乘以30,adc0816为8位,所以除以256;表达示中 +0x30 的意思是将其转化为ASCII码))
转换基本公式为(d/256)*5   由于"/"运算为取摸运算误差太大,d为采样值
uchar k,kk;
k=(ad[0]*30/256)+0.5;
kk=(ad[0]*300/256)+0.5;
vol0[0]=(k/10)+0x30;vol0[1]=k%10+0x30;vol0[2]='.';vol0[3]=kk%10+0x30;
我将adc0816采集进来的数据存储在数组ad[16]中,现欲显示在lcd屏幕上,但发现转换结果有很大的误差,各位前辈有什么更好的方法吗,给我指导一下!


相关帖子

沙发
lenglx| | 2007-5-17 14:04 | 只看该作者

uchar 最大能表示255而已

至少,你应当用个16的无符号数表示吧,或者32位的,或者干脆浮点运算(如果你对时间不要求严格的话).

U32 k = (ad * 300)>>8;
vol[0] = k / 100 + '0';
k %= 100;
vol[1] = k / 10 + '0';
vol[2] = '.';
vol[3] = k % 10 + '0';

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

175

主题

446

帖子

1

粉丝