急!!!!跪求各位高手!!!!float型数据的显示问题

fionachow   2010-4-14 16:23 楼主
最近用单片机做了一个计算器,把float型数据从24co2里读出来了
但是不知道怎么让他在lcd上显示float型数据

回复评论 (7)

大侠们,快来帮帮小弟我啊
点赞  2010-4-14 16:53
加入取到小数点后3位,那么将float数据乘以1000,显示的时候在相应的位置写入一个小数点就行了。
点赞  2010-4-14 18:51
假如取到小数点后3位,那么将float数据乘以1000,显示的时候在相应的位置写入一个小数点就行了。
点赞  2010-4-14 18:52
浮点数用科学计数法的形式存储, 即分成符号位, 底数位和指数位
如 10.0 的二进制表示为 1010.0, 科学表示法表示为: 1.01exp110, 即 (1+0*1/2+1*1/4)*2^3. 小数点每左移一位指数要加1, 每右移一位指数要减1.

其存储格式符合IEEE标准, 即
数据格式        符号位     底数位     指数位
单精度 float     1        23          8

楼主按照这个格式写个算法就可以了吧
点赞  2010-4-14 18:59
要转换成string,然后显示
或者转换成BCD码,然后在7-段显示屏上显示
点赞  2010-4-14 21:20
学习,UPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUP
点赞  2010-4-14 22:31
谢谢大家了
我这个问题解决了
这是我写的代码

void output()
{
        if(n.fdata<0)
                temp=0x41;
        else
                temp=0x40;
        write_cmd(0x80+0x40);

        write_date('-');
        i=fabs(n.fdata);
        c=0;
        write_cmd(0x02);
        while(i)
        {
                v[c]=i%10;
                i/=10;
                c++;
        }
        bz=c;
        c++;
        i=fabs(n.fdata);
        if(n.fdata>0)
        {
                n.fdata-=i;
                n.fdata*=10000;
        }
        else
        {
                n.fdata+=i;
                n.fdata*=(-1);
                n.fdata*=10000;
        }
        i=fabs(n.fdata);
        p=4;
        while(p!=0)
        {
                 v[c]=i%10;
                 i/=10;
                 c++;
                 p--;
        }
        for(count=0;count         {
                 if(count!=bz)
                {
                        if(count                         {               
                                flag=bz-1-count;
                        }                               
                        else
                        {
                                 flag=c-1-(count-bz-1);
                        }
                        write_cmd(0x80+temp+flag);
                        write_date(v[count]+48);
                }
                if(count==bz)
                {
                        write_cmd(0x80+temp+bz);
                        write_date('.');
                }
        }
}       
点赞  2010-4-16 16:08
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复