OpenEdv-开源电子网

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

关于LCD显示屏如何显示浮点数的问题?

[复制链接]

16

主题

71

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
275
金钱
275
注册时间
2015-7-16
在线时间
14 小时
发表于 2016-3-14 08:40:39 | 显示全部楼层 |阅读模式
1金钱
大家好 ,不知道你们在钻研原子哥的开发板的同时是否拥有这样子的困惑?就是在使用LCD时,你并没有在程序里写小数点  但是在显示屏上却可以出现小数点?例如:
int main(void)
{                        
        u16 adcx;
        float temp;  
        float temperate;                             
          Stm32_Clock_Init(9);        //系统时钟设置
        uart_init(72,115200);        //串口初始化为115200
        delay_init(72);                            //延时初始化
        LED_Init();                                  //初始化与LED连接的硬件接口
          LCD_Init();                                //初始化LCD
        Adc_Init();                                  //ADC初始化            
        POINT_COLOR=RED;//设置字体为红色
        LCD_ShowString(30,50,200,16,16,"WarShip STM32");       
        LCD_ShowString(30,70,200,16,16,"ADC TEST");       
        LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");
        LCD_ShowString(30,110,200,16,16,"2015/1/14");       
        //显示提示信息
        POINT_COLOR=BLUE;//设置字体为蓝色
        LCD_ShowString(30,130,200,16,16,"ADC_CH0_VAL:");
//        printf("ADC_CH0_VAL: %d\n",Get_Adc_Average(ADC_CH1,10));             
        LCD_ShowString(30,150,200,16,16,"ADC_CH0_VOL:0.000V");         
//        printf("ADC_CH0_VOL: %.2f\n",(float)Get_Adc_Average(ADC_CH1,10)*(3.3/4096));     
        LCD_ShowString(60,170,200,16,16,"TEMPERATE:00.00C");

        while(1)
        {
                adcx=Get_Adc_Average(ADC_CH1,10);
                printf("ADC_CH0_VAL: %d\n",adcx);
                LCD_ShowxNum(126,130,adcx,4,16,0);//显示ADC的值
                temp=(float)adcx*(3.3/4096);  //12位的转换器        这里的3.3v是参考电压
                printf("ADC_CH0_VOL: %.2f\n",temp);
                adcx=temp;
                LCD_ShowxNum(126,150,adcx,1,16,0);//显示电压值
                temp-=adcx;
                temp*=1000;
                LCD_ShowxNum(142,150,temp,3,16,0X80);
                temperate=(1.43-temperate)/0.0043+35;
                printf("temperate:%.2f\n",temperate);
                LCD_ShowNum(140,170,(u8)temperate,2,16,0);
                temperate-=(u8)temperate;
                LCD_ShowNum(164,170,temperate*100,2,16,0x80);
                LED0=!LED0;
                delay_ms(250);       
        }
               

最佳答案

查看完整内容[请看2#楼]

先用sprintf,将浮点数输出到数组,然后显示字符串,即可。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-3-14 08:40:40 | 显示全部楼层
先用sprintf,将浮点数输出到数组,然后显示字符串,即可。
回复

使用道具 举报

3

主题

2178

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3323
金钱
3323
注册时间
2013-7-19
在线时间
195 小时
发表于 2016-3-14 09:33:47 | 显示全部楼层
printf里面有显示2位小数的代码
回复

使用道具 举报

16

主题

71

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
275
金钱
275
注册时间
2015-7-16
在线时间
14 小时
 楼主| 发表于 2016-3-14 13:24:49 | 显示全部楼层
ricefat 发表于 2016-3-14 09:33
printf里面有显示2位小数的代码

printf是我自己加上去的,为了打印方便  但是原子哥板子上的lcd屏是怎么显示出来的呢
回复

使用道具 举报

3

主题

2178

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3323
金钱
3323
注册时间
2013-7-19
在线时间
195 小时
发表于 2016-3-14 14:59:28 | 显示全部楼层
LCD_ShowxNum(126,150,adcx,1,16,0);估计这个函数里面包括小数显示功能,自己看下
回复

使用道具 举报

16

主题

71

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
275
金钱
275
注册时间
2015-7-16
在线时间
14 小时
 楼主| 发表于 2016-3-24 11:38:10 | 显示全部楼层
ricefat 发表于 2016-3-14 14:59
LCD_ShowxNum(126,150,adcx,1,16,0);估计这个函数里面包括小数显示功能,自己看下

谢谢你 啊  谢谢
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-19 17:42

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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