LCD浮点数显示函数的探讨

发布者:心若清泉最新更新时间:2019-03-13 来源: eefocus关键字:LCD  浮点数  显示函数 手机看文章 扫描二维码
随时随地手机看文章

单片机开放附赠的学习资料里面很少见到显示浮点数的函数,显示浮点数的操作也相当烦坠!


一般转换显示法

拿STM32单片机资源,我们选取ADC采样部分函数来看显示过程


adcx=Get_Adc_Average(ADC_Channel_5,20);

LCD_ShowxNum(134,130,adcx,4,16,0);   

temp=(float)adcx*(3.3/4096);          

adcx=temp;                          

LCD_ShowxNum(134,150,adcx,1,16,0);    

temp-=adcx;                         

temp*=1000;                           

LCD_ShowxNum(150,150,temp,3,16,0X80); 

LED0=!LED0;

delay_ms(250);  


分别取出整数部分和小数部分,分别显示出来


调整改进

void OLED_ShowFloatNum(u8 x,u8 y,double num,u8 len,u8 size)

u32 interger=(u32)num;

u32 fractional=(u32)((num-interger)*1000);

u32 x_tmp;

if(num<0)

{

    OLED_ShowString(x,y,"Minus!",16);

}       

else

{

    if(interger>=100)

    {

            x_tmp=x;

            OLED_ShowNum(x,y,interger,3,size);

    }

    else if(interger>=10&&interger<=99)

    {

        x_tmp=x-8;

        OLED_ShowNum(x,y,interger,2,size);

    }

    else if(interger>=1&&interger<=9)

    {

        x_tmp=x-16;

        OLED_ShowNum(x,y,interger,1,size);

    }

    else

    {

        x_tmp=x-16;

        OLED_ShowNum(x,y,0,1,size);

    }


    OLED_ShowChar(x_tmp+24,y,'.',size,1);


    if(fractional>=100)

        OLED_ShowNum(x_tmp+32,y,fractional,3,size);

    else if(fractional>=10&&fractional<=99)

    {

        OLED_ShowNum(x_tmp+40,y,fractional,2,size);

        OLED_ShowChar(x_tmp+32,y,'0',size,1);

    }

    else if(fractional>=1&&fractional<=9)

    {

        OLED_ShowNum(x_tmp+48,y,fractional,1,size);

        OLED_ShowChar(x_tmp+40,y,'0',size,1);

        OLED_ShowChar(x_tmp+32,y,'0',size,1);   

    }

    else

    {

        OLED_ShowChar(x_tmp+32,y,'0',size,1);

        OLED_ShowChar(x_tmp+40,y,'0',size,1);

        OLED_ShowChar(x_tmp+48,y,'0',size,1);

    }

}



另一种直接调用c语言函数sprintf

定义buffer,这里注意添加头文件#include“stdio.h”


 adcx=Get_Adc_Average(ADC_Channel_0,10);

 temp=(float)adcx*(3.3/4096);

 sprintf(buffer,"%5.2f",temp);//浮点型数据转为指定格式的字符串

 LCD_ShowString(152,150,200,16,16,buffer); //直接送字符显示函数


关键字:LCD  浮点数  显示函数 引用地址:LCD浮点数显示函数的探讨

上一篇:关于STM32精准采频率的实现
下一篇:STM32F4四路ADC采样问题探讨

推荐阅读最新更新时间:2024-03-16 16:25

Sony、三星LCD世纪合作案画下句点
        在2004年液晶电视产业发产初期,在全球液晶面板产能有限的时空背景下,面板供给大都处于供不应求的状况。为稳定液晶电视面板的供应来源,Sony与三星(Samsung)两大电子龙头,共同合资催生S-LCD公司,由当初的7代线,陆续扩大合作范围至8代线。     时至2011年,随着台、韩、日面板厂在这段时间的产能竞争,而中国的8.5代线亦将于2012年开始放量生产。但自2008年下半年后全球大环境受到欧美经济疲软的影响,加上液晶电视产业发展至今,在各主要市场渗透率已来到高点,整体市场对于液晶电视需求开始放缓,也因此造成液晶面板严重供过于求的窘境。     而Sony电子的液晶电视部门已连续亏损达7个季度,液晶电
[手机便携]
单片机LCD1602底层驱动子程序
晶振11.0592M /**********************LCD1602底层驱动程序***************************/ /********************************************************************/ //delay: 延时xms void delay(uint xms) { uchar i, j; for(i = 0; i xms; i++) for(j = 0; j 110; j++); } //wait: 判忙等待 void wait() { P0 = 0xff; do { RS = 0; RW = 1; EN = 0; EN =
[单片机]
刷新LCD投影仪行业里程碑 BOE(京东方)携手小明投影正式开启LCD投影仪4K时代
近日,BOE(京东方)携手LCD投影仪行业领导者小明投影在北京恒通国际创新园(UCP)召开2023年投影仪旗舰新品发布会,联合推出两款划时代新品:搭载BOE(京东方)4K LCD显示屏的小明V1 Ultra超高清投影仪及搭载BOE(京东方)璨光S60光机的小明V1高亮投影仪。单片式LCD 4K投影仪、“璨光”系列高亮光机两款新品发布是BOE(京东方)在投影仪行业树立的技术产品里程碑,不仅彰显了BOE(京东方)创立三十年来在LCD领域的技术创新实力,也是BOE(京东方)在“屏之物联”战略指导下开拓全新应用场景的最新成果之一。 根据洛图数据显示,2017年以来中国智能投影市场销量持续增长,2022年已超600万台。从不同投影
[家用电子]
刷新<font color='red'>LCD</font>投影仪行业里程碑  BOE(京东方)携手小明投影正式开启<font color='red'>LCD</font>投影仪4K时代
STM32开发板中如何点亮一个LCD
网络上配套STM32开发板有很多LCD例程,主要是TFT LCD跟OLED的。从这些例程,大家都能学会如何点亮一个LCD。但这代码都有下面问题: 分层不清晰,通俗讲就是模块化太差。 接口乱。只要接口不乱,分层就会好很多了。 可移植性差。 通用性差。 为什么这样说呢?如果你已经了解了LCD的操作,请思考如下情景: 1、代码空间不够,只能保留9341的驱动,其他LCD驱动全部删除。能一键(一个宏定义)删除吗?删除后要改多少地方才能编译通过? 2、有一个新产品,收银设备。系统有两个LCD,都是OLED,驱动IC相同,但是一个是128x64,另一个是128x32像素,一个叫做主显示,收银员用;一个叫顾显,顾客看金额。怎么办?这些例
[单片机]
基于MSP430F149的KS0108(LCD)驱动程序
//MSP430与12864连接驱动程序(KS0108) #include msp430x14x.h // Standard Equations #include math.h #include stdlib.h #include stdio.h #include string.h #include ctype.h //#include HZTable.h //#include ASCII816.h #define uint unsigned int #define uchar unsigned char //***************
[单片机]
lcd1602的4线数据传输驱动程序
#include lcd1602_driver.h #include msp430g2553.h #include typedef.h #ifndef _LCD_1602_ #define _LCD_1602_ //lcd1602的io #define LCD1602_WR_DATA_PORT P2OUT //数据输出端口 #define LCD1602_RD_DATA_PORT P2IN //数据输入端口 #define LCD_EN_SET { P1DIR |= BIT5 ; P1OUT |= BIT5; } //lcd使能设置 #define LCD_EN_CLR { P1DIR |= BIT5; P1OUT &= ~
[单片机]
在P87LPC764单片机I2C总线系统中扩展LCD显示
1 引言 I2C总线是Philips公司推出的芯片间串行传输总线。它仅用串行数据线(SDA)和串行时钟线(SCL)两根连线便实现了完善的全双工同步数据传送,并可很方便地构成多机系统和外围器件扩展系统。    本文介绍在P87LPC764单片机中利用I2C总线系统中典型的LCD驱动控制器件PCF8577C来扩展256段静态LCD的电路设计方法。 2 硬件电路设计 2.1 P87LPC764单片机的I2C总线接口 P87LPC764是Philips公司生产的一种小封装、低成本、高性能的单片机(具体内容见参考文献2)。它采用80C51加速处理器结构,片内带有支持I2C总线的硬件接口。当激活I2C总线时,P87LPC764端
[单片机]
在P87LPC764单片机I2C总线系统中扩展<font color='red'>LCD</font><font color='red'>显示</font>器
基于STM32物联网开发板(4)--LCD
1.概述 屏幕尺寸为1.3寸,分辨率240*240,颜色格式RGB565,驱动IC:ST7789VW; 超大可视角度:大于160°(显示屏中可视角度最大的一种屏幕); 宽电压供电(3V~5V),兼容3.3V和5V电平逻辑,无需电平转换芯片; 采用7线制SPI接口; 工作温度范围为工业级(-20℃~60℃); 军工级工艺标准,长期稳定工作; 硬件接口: 引脚 说明 LEDK PB0背光 CS PA4片选 SCL PA5时钟 SDA PA7主机输出 RES PB1复位脚(电平复位) D/C PC4数据命令选择脚 2.通讯协议 ST7789VW是一款用于262K彩色图形型TFT-LCD的单片
[单片机]
基于STM32物联网开发板(4)--<font color='red'>LCD</font>屏
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多精选电路图
换一换 更多 相关热搜器件
更多每日新闻
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved