求助:如何在数码管上显示0.001、0.01、0.1(已解决)

2020-01-20 19:14发布

本帖最后由 sos9616 于 2015-1-21 10:39 编辑

论坛里关于如何实现在数码管上显示小数点的方法和资料很少,
琢磨好几天了,不知道怎么实现根据数值用数码管显示出小数。
比如测得温度值是:1.234。
当到了十位时就是:10.23。
到了百位就是        :123.4。
希望坛友帮帮忙。


我在这里把写的“数码管显示小数点”的方法总结一下吧,
希望能帮到还在纠结的你
void display_SMG(float a)
{
        if((a<10)&&(a>=0))                        //0.000
        {
                a=a*1000;
                num1=(uint)a/1000;
                num2=(uint)a%1000/100;
                num3=(uint)a%1000%100/10;
                num4=(uint)a%1000%100%10;        
                .......
                .....num1加小数点的处理
        }

        if((a<100)&&(a>=10))                        //00.00
        {
                a=a*1000;
                num1=(uint)a/1000;
                num2=(uint)a%1000/100;
                num3=(uint)a%1000%100/10;
                num4=(uint)a%1000%100%10;        
                .......
                .....//num2加小数点的处理
        }

                if((a<1000)&&(a>=100))                        //000.0
        {
                a=a*1000;
                num1=(uint)a/1000;
                num2=(uint)a%1000/100;
                num3=(uint)a%1000%100/10;
                num4=(uint)a%1000%100%10;        
                .......
                .....//num3加小数点的处理
        }
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
25条回答
jlhgold
1楼-- · 2020-01-22 11:23
用法如下
  char buf [12];

  pi = 3.14159;

  sprintf (buf, "%g ", pi);

然后就按照顺序一个一个显示吧!
sos9616
2楼-- · 2020-01-22 14:02
waterghost 发表于 2015-1-20 16:28
笨点方法。 先判断 整数是1位 2位  3位 。
1位 : 10>X>0
2位 :   100>X>=10

已经成功实现,
谢谢你的方法,简单易懂,很好!
sos9616
3楼-- · 2020-01-22 19:19
本帖最后由 sos9616 于 2015-1-21 18:35 编辑

有更好的方法
iwinstone
4楼-- · 2020-01-22 20:00
0~9定义10个段码表
0~9带小数点定义10个段码表
显示时如果带小数,则个位用带小数点的段码表,其余用基本数字段码表。
steaven2000
5楼-- · 2020-01-22 22:42
 精彩回答 2  元偷偷看……
bg6agf
6楼-- · 2020-01-23 03:47
别用除法或者取余数.效率太低.建议使用减法和比较.坛内有帖子专门讨论这个

一周热门 更多>