打印
[AVR单片机]

avr studio GCC (Atmega128)浮点数转换为字符串

[复制链接]
6536|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jason_77chen|  楼主 | 2009-9-28 10:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
困难:找不到方法把浮点数转换为字符串
如下面陈述:我要把字符串在LCD上显示,我所做LCD驱动模块只支持字符串,简单说就是显示所测的一个频率,如223.5,103.7,
以下参数都是定义为浮点数
send_n=8;
num1=13;
num1=num1/send_n;
send_n=2;
MHZ=num1/send_n;
MHZ=1/MHZ;
MHZ=MHZ*256;

结果:~=315.1
我要把这个MHZ的变量内容转换成字符串,放到字符串数组中,然后经过一段程式在LCD上显示,当然MZH是会变化的,字符串数组中内容也是随之变化,小虲是对AVR 的GCC经验有限,不知那位大虲可以指点一下,谢谢!

相关帖子

沙发
jason_77chen|  楼主 | 2009-9-28 10:48 | 只看该作者
我在网上有找资料,但是分析起来,基本上没有对口的,像有资料所说的参数:例如下的含数也在GCC中找不到
char* ftoa(float f, int *status) strcpy(c,ftoa(x,&nStatus));转换实数为字符串

使用特权

评论回复
板凳
jason_77chen|  楼主 | 2009-9-28 11:55 | 只看该作者
没有指点啊

使用特权

评论回复
地板
john_lee| | 2009-9-28 12:13 | 只看该作者
最好不要使用浮点数,一般采用以下方法:
1、确定你的数据的小数位数最大有多少位。
2、将数据的内部表示改为“原数据(带小数) × 10^最大小数位数”,即全部化为整数表示,注意选择转化后的整数的表示范围(16位、32位、64位),不要溢出。
3、需要面对人机接口时(显示、打印等),先计算出整数部分值和小数部分值(得出两个整数)。
   整数部分计算方法:数据(整数) / 10^最大小数位数。
   小数部分计算方法:数据(整数) % 10^最大小数位数。
   然后将整数部分转化为字符串并输出,然后输出“小数点”,最后将小数部分转化为字符串并输出。

使用特权

评论回复
5
jason_77chen|  楼主 | 2009-9-28 13:39 | 只看该作者
谢谢4楼,我试试看

使用特权

评论回复
6
lovelyegle| | 2009-9-28 16:19 | 只看该作者
这里有AVR单片机的GCC编程可供参考http://blog.21ic.com/user1/2997/archives/2006/30198.html

使用特权

评论回复
7
Karlshen| | 2009-9-28 16:36 | 只看该作者
再简绍个AVR单片机GCC编程入门http://www.eda121.com/avr/gccavr/200708/475.html

使用特权

评论回复
8
jason_77chen|  楼主 | 2009-9-28 17:23 | 只看该作者
4楼的大虾,谢谢你了

使用特权

评论回复
9
jason_77chen|  楼主 | 2009-9-28 17:24 | 只看该作者
成功完成

使用特权

评论回复
10
inter_zhou| | 2009-9-29 09:52 | 只看该作者
根本不是编译器和编译环境的问题,完全是写程序的思路问题。

使用特权

评论回复
11
jason_77chen|  楼主 | 2009-9-29 18:37 | 只看该作者
上楼说的对,是4楼的朋友指点了我的思路,在此表示谢谢

使用特权

评论回复
12
lovelyegle| | 2009-9-30 22:44 | 只看该作者
哦,解决了那

使用特权

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

本版积分规则

个人签名:初体验Atmega128 我硬着头往前走

18

主题

149

帖子

2

粉丝