这种计算stc89c52单片机可以处理的了吗?
a是字符,一个采集到的数,最后要将q按位显示在lcd1602上,现在显示的是0000,感觉没有进行计算啊,是因为处理不了吗?还是显示的时候需要注意什么?怎么解决?谢谢大神们
b = ((-13.7689)*(atof(a)/100)+31.9227);
if(b<-5)
{
y=0;
}
if(b<=0&b>=-5)
{
y=0.0289*pow(b,2)+0.2347*pow(b,1)+0.4831;
}
if(b>0&b<=5)
{
y=-0.0285*pow(b,2)+0.2321*pow(b,1)+0.5202;
}
if(b>5)
{
y=1;
}
mul=(2.996*y+0.0031)*1000;
q=(int)mul;
多项式部分是用是vs2010仿真的,结果可以显示,程序在keil编译也没有问题,是不是显示上面有问题,数值变得快,需要采样保持???
不要把单片机当电脑来进行运算。首先单片机的内部运算单元有长度极限的。其次每一个缓存变量的长度也是有极限的。你虽然用的是浮点运算,但是存下来的结果精度就损失的差不多了。最后,一个强制类型转化,精度又减了不少。这样算出来的结果肯定就不对了。