OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 21355|回复: 12

OLED如何显示浮点数

[复制链接]

22

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
213
金钱
213
注册时间
2012-8-24
在线时间
0 小时
发表于 2014-3-9 17:12:58 | 显示全部楼层 |阅读模式
比如,我要显示一个带小数的数:小数点前后各5位。如 “37222.70655”
我算好的数值,在串口上可以打印显示在串口上。现在想把这个数显式到OLED上。
没有看直接显示浮点数的函数,只有两位两位地去显示吗?感觉很麻烦呀?
有没有谁显示过这种数的?
是用的什么方法?
给点建议?
谢谢大家了!!!
有进步就好!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2018-9-26
在线时间
6 小时
发表于 2019-5-7 20:11:20 | 显示全部楼层
void LCD_FloatShow (u16 x,u16 y,float num,u8 size)
{
    char temp[10];
    sprintf((char *)temp,"%0.2f",num);
    LCD_ShowString(x,y,(size/2*strlen(temp)),size,size,temp);
}
转换为字符串,用字符串显示函数
回复 支持 2 反对 0

使用道具 举报

19

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2016-10-30
在线时间
18 小时
发表于 2017-7-14 19:51:38 | 显示全部楼层
楼主注意参考那个TFTLCD实验例程中有注明显示整数部分和显示小数部分,我改了用OLED可显示这部分代码如下:
                        adcx=Get_Adc_Average(ADC_Channel_1,10);                //得到ADC转换值          
                        temp=(float)(adcx*(3.3/4096))/0.935;                  //得到ADC电压值
                        adcx=temp;
                        OLED_ShowNum(5+65,30,temp,1,16);
//                         LCD_ShowxNum(124,110,temp,1,16,0);             //显示电压值整数部分
                        temp-=adcx;
                        temp*=1000;//这一部分处理后用来显示小数
                        OLED_ShowString(5+75,30,".",16);
                        OLED_ShowNum(5+80,30,temp,3,16);
                        OLED_ShowString(5+105,30,"mA",16);
                        OLED_Refresh_Gram();
//                        LCD_ShowxNum(140,110,temp,3,16,0X80);         //显示电压值的小数部分
效果图如附件:

OLED显示小数

OLED显示小数
回复 支持 2 反对 0

使用道具 举报

1

主题

3

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2018-10-8
在线时间
7 小时
发表于 2019-1-24 19:15:05 | 显示全部楼层
用sprintf函数把float的数值转换成一个字符型的数组,然后在用一个循环显示出来:

float Da;
char array[20];
void main()
{
sprintf(array, "%.3f",Da);
          for(p=0;p<6;p++)
            {
         OLED_ShowChar((0+p*8),4,array[p]);               
            }
}
回复 支持 1 反对 0

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2014-3-9 17:56:25 | 显示全部楼层
这个就当一个c语言的练习题吧。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 1 反对 0

使用道具 举报

39

主题

2026

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2020
金钱
2020
注册时间
2013-5-1
在线时间
87 小时
发表于 2014-3-9 17:30:55 | 显示全部楼层
自己封装成函数也可以
博观而约取,厚积而薄发。
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2014-10-4
在线时间
10 小时
发表于 2015-5-4 18:54:33 | 显示全部楼层
我也有这样问题,不知小数点如何显示出来。
回复 支持 反对

使用道具 举报

4

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
140
金钱
140
注册时间
2016-6-22
在线时间
31 小时
发表于 2016-6-29 14:57:16 | 显示全部楼层
同求问题解决方法
回复 支持 反对

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2018-9-24
在线时间
1 小时
发表于 2018-9-24 20:16:03 | 显示全部楼层
非常感谢
回复 支持 反对

使用道具 举报

109

主题

5564

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10567
金钱
10567
注册时间
2017-2-18
在线时间
1913 小时
发表于 2019-1-24 19:51:11 | 显示全部楼层
多谢楼上的分享~~
回复 支持 反对

使用道具 举报

0

主题

11

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2017-8-2
在线时间
9 小时
发表于 2019-5-8 08:36:14 | 显示全部楼层
确实是C语言练习题,不是很难。好好考虑下
回复 支持 反对

使用道具 举报

2

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2019-6-20
在线时间
22 小时
发表于 2019-8-8 09:51:12 | 显示全部楼层
王雨辰 发表于 2017-7-14 19:51
楼主注意参考那个TFTLCD实验例程中有注明显示整数部分和显示小数部分,我改了用OLED可显示这部分代码如下: ...

第四行 oled显示函数中应该是adcx吧
回复 支持 反对

使用道具 举报

2

主题

3

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2019-12-25
在线时间
2 小时
发表于 2020-1-14 03:20:41 | 显示全部楼层
babyfightingli 发表于 2019-1-24 19:15
用sprintf函数把float的数值转换成一个字符型的数组,然后在用一个循环显示出来:

float Da;

实现不了
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-14 21:13

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表