用C如何才能将浮点数转换成BCD码和LED段码???

[复制链接]
 楼主| 程疗匠人 发表于 2009-2-25 22:03 | 显示全部楼层 |阅读模式
我现在在做一个小制作,就是给自己的电动车装上数显时速表,计数脉冲来自于电动机的霍尔,基本的计算方法是:霍尔脉冲所代表的长度/脉冲间隔时间,但是除出来的是小数,如何才能转换成LED段码以供显示呢?
maomao603 发表于 2009-2-25 23:34 | 显示全部楼层

一位一位的除出来

char a
double b,c

b=123
a=b/100 //a=1
c=a
b=b-c*100//b=23

剩下的自己写
jerkoh 发表于 2009-2-25 23:38 | 显示全部楼层

RE

这个山寨比原先的程序匠“入”还要牛
 楼主| 程疗匠人 发表于 2009-2-26 19:53 | 显示全部楼层

小数也这么一位一位的除出来吗?

    貌似小数这么除不好除吧,还是先将这个浮点小数乘以一个很大的数,变成整数再来除?
    牛人肯定有绝招的,教教偶吧~~
ayb_ice 发表于 2009-2-26 20:09 | 显示全部楼层

我说程序匠人怎么会问这样的问题呢?

原来是山寨版的
notpower 发表于 2009-2-27 08:53 | 显示全部楼层

就是一位一位的算,没值么太好的办法。做函数吧。

山寨的朋友们都出来亮亮相吧。
azmao 发表于 2009-2-27 09:02 | 显示全部楼层

使用sprint()就可以了。

转换成BYTE就可以送显示了。
mohanwei 发表于 2009-2-27 09:52 | 显示全部楼层

同意,sprintf是“最简单”的实现方法。

btiger2000 发表于 2009-2-27 11:21 | 显示全部楼层

我也以为是程序匠人呢!

想着 匠人应该不会问这种问题啊!
 楼主| 程疗匠人 发表于 2009-2-28 10:58 | 显示全部楼层

谢谢了,我搞单片机是业余爱好,时间不多,所以进展很慢~~

ayb_ice 发表于 2009-2-28 11:29 | 显示全部楼层

sprintf是低效的方法

因为这样的函数对于MCU实在是奢侈
backupyan 发表于 2009-3-4 07:25 | 显示全部楼层

这个问题比较复杂

那么LZ,你能把12显示在LED上吗?
如果能的话,就好说了。
P=霍尔脉冲所代表的长度
T=脉冲间隔时间
P/T 是整数。显示在小数点左边
(float)(P%T)/T 是小数,通过循环乘10后取整数部分显示的方法显示在小数点右边。
 楼主| 程疗匠人 发表于 2009-3-4 20:21 | 显示全部楼层

感谢芯行天下

luowei2651 发表于 2009-3-5 10:14 | 显示全部楼层
bob.xue 发表于 2009-3-5 11:19 | 显示全部楼层

提高倍数

bjc125 发表于 2009-3-5 18:22 | 显示全部楼层

灌水中

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

本版积分规则

29

主题

224

帖子

0

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