3805|7

71

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

急!!!!跪求各位高手!!!!float型数据的显示问题 [复制链接]

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

最新回复

谢谢大家了 我这个问题解决了 这是我写的代码 void output() {         if(n.fdata0)         {                 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  详情 回复 发表于 2010-4-16 16:08
点赞 关注

回复
举报

70

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
大侠们,快来帮帮小弟我啊
 
 

回复

57

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
加入取到小数点后3位,那么将float数据乘以1000,显示的时候在相应的位置写入一个小数点就行了。
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

4
 
假如取到小数点后3位,那么将float数据乘以1000,显示的时候在相应的位置写入一个小数点就行了。
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

5
 
浮点数用科学计数法的形式存储, 即分成符号位, 底数位和指数位
如 10.0 的二进制表示为 1010.0, 科学表示法表示为: 1.01exp110, 即 (1+0*1/2+1*1/4)*2^3. 小数点每左移一位指数要加1, 每右移一位指数要减1.

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

楼主按照这个格式写个算法就可以了吧
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

6
 
要转换成string,然后显示
或者转换成BCD码,然后在7-段显示屏上显示
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

7
 
学习,UPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUP
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

8
 
谢谢大家了
我这个问题解决了
这是我写的代码

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('.');
                }
        }
}       
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表