[求助] 急!!!单片机处理多项式运算问题

求大神们帮忙   2016-12-16 15:49 楼主
这种计算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;



回复评论 (7)

你可以仿真计算,看看结果是什么
点赞  2016-12-16 16:39
引用: dcexpert 发表于 2016-12-16 16:39
你可以仿真计算,看看结果是什么

多项式部分是用是vs2010仿真的,结果可以显示,程序在keil编译也没有问题,是不是显示上面有问题,数值变得快,需要采样保持???
点赞  2016-12-16 17:33
引用: dcexpert 发表于 2016-12-16 16:39
你可以仿真计算,看看结果是什么

a是一个传感器采集到的数据
点赞  2016-12-16 17:37
stc89c52支持浮点数?
点赞  2016-12-16 18:03
引用: 张锋 发表于 2016-12-16 18:03
stc89c52支持浮点数?

不支持浮点数???
点赞  2016-12-16 18:44
顶一顶
点赞  2016-12-16 19:43
不要把单片机当电脑来进行运算。首先单片机的内部运算单元有长度极限的。其次每一个缓存变量的长度也是有极限的。你虽然用的是浮点运算,但是存下来的结果精度就损失的差不多了。最后,一个强制类型转化,精度又减了不少。这样算出来的结果肯定就不对了。
点赞  2016-12-23 12:24
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复