[AVR单片机] avr studio GCC (Atmega128)浮点数转换为字符串

[复制链接]
7939|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^最大小数位数。
   然后将整数部分转化为字符串并输出,然后输出“小数点”,最后将小数部分转化为字符串并输出。
 楼主| jason_77chen 发表于 2009-9-28 13:39 | 显示全部楼层
谢谢4楼,我试试看
lovelyegle 发表于 2009-9-28 16:19 | 显示全部楼层
这里有AVR单片机的GCC编程可供参考http://blog.21ic.com/user1/2997/archives/2006/30198.html
Karlshen 发表于 2009-9-28 16:36 | 显示全部楼层
 楼主| jason_77chen 发表于 2009-9-28 17:23 | 显示全部楼层
4楼的大虾,谢谢你了
 楼主| jason_77chen 发表于 2009-9-28 17:24 | 显示全部楼层
成功完成
inter_zhou 发表于 2009-9-29 09:52 | 显示全部楼层
根本不是编译器和编译环境的问题,完全是写程序的思路问题。
 楼主| jason_77chen 发表于 2009-9-29 18:37 | 显示全部楼层
上楼说的对,是4楼的朋友指点了我的思路,在此表示谢谢
lovelyegle 发表于 2009-9-30 22:44 | 显示全部楼层
哦,解决了那
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

18

主题

155

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部