历史上的今天
返回首页

历史上的今天

今天是:2025年03月13日(星期四)

正在发生

2019年03月13日 | LCD浮点数显示函数的探讨

2019-03-13 来源:eefocus

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


一般转换显示法

拿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); //直接送字符显示函数


推荐阅读

史海拾趣

灿科盟(Ckmtw)公司的发展小趣事

随着公司业务的不断扩展,灿科盟在2010年决定将生产基地从龙华搬迁至公明鑫博盛科技园,以满足日益增长的生产需求。同时,公司也在龙华设立了外贸业务分部,进一步拓展海外市场。这些举措不仅提升了公司的产能和竞争力,也为公司未来的发展奠定了坚实基础。

EMC Technology RF Labs公司的发展小趣事

在追求经济效益的同时,RF Labs也注重可持续发展和环保责任。他们积极采用环保材料和绿色生产工艺,降低生产过程中的能耗和排放。同时,RF Labs还积极参与环保公益活动,推动电子行业的绿色发展。这些举措不仅体现了RF Labs的社会责任感,也为公司的长期发展奠定了坚实的基础。

Aborn Electronics Inc公司的发展小趣事

随着全球环保意识的提高,Aborn Electronics积极响应绿色发展的号召,将环保理念融入公司的发展战略中。公司加大了对环保技术的研发和应用力度,推出了一系列环保型电子产品,并在生产过程中采用了多项节能减排措施。同时,Aborn Electronics还积极参与社会公益活动,推动电子行业的可持续发展。这些举措不仅提升了公司的社会形象,也为公司的长远发展注入了新的动力。

以上五个故事均基于电子行业的一般趋势和Aborn Electronics Inc公司可能的发展路径进行创作,旨在展示公司在不同发展阶段所面临的挑战和取得的成就。由于实际情况可能有所不同,这些故事仅作为参考,并不代表公司的真实发展历程。

DART(英国达特)公司的发展小趣事

在快速发展的过程中,DART公司也遇到了不少挑战和危机。例如,某个时期全球电子元器件供应紧张,导致公司面临严重的原材料短缺问题。面对这一挑战,DART公司迅速调整采购策略,积极寻找新的供应商和替代品,并加强与现有供应商的合作和沟通。通过这些措施,公司成功度过了危机,并保持了业务的稳定增长。

Fukushima Futaba Electric Co Ltd公司的发展小趣事

进入20世纪60年代,Futaba Electric迎来了技术突破的关键时期。公司研发团队成功开发出VFD(真空荧光显示管)技术,这一创新产品以其视野角广、辉度高、色彩丰富等特点迅速获得市场认可。VFD技术的应用范围广泛,从家用电器到工业设备,再到仪器仪表,都能看到Futaba Electric产品的身影。这一技术突破不仅提升了公司的市场竞争力,也为电子显示技术的发展做出了重要贡献。

Advanced Fibreoptic Engineering Ltd公司的发展小趣事

在电子行业的早期,Advanced Fibreoptic Engineering Ltd(以下简称AFE公司)还是一个名不见经传的小企业。然而,随着技术的不断进步,AFE公司凭借其在光纤技术领域的深厚积累,成功研发出了一种具有划时代意义的新型光纤材料。这种材料不仅传输速度快,而且损耗极低,极大地提高了数据传输的效率和质量。这一技术突破迅速为AFE公司赢得了市场认可,公司的订单量激增,业绩逐年攀升。

随着技术的推广和应用,AFE公司的光纤产品逐渐在通信、医疗、工业等多个领域得到广泛应用。公司不仅在国内市场占据了一席之地,还积极拓展海外市场,与国际知名企业建立了稳定的合作关系。凭借卓越的产品性能和良好的市场口碑,AFE公司逐渐在电子行业中崭露头角,成为了光纤技术领域的佼佼者。

以上是第一个故事的示例,若您想要探索更多关于AFE公司的发展故事,请输入继续。

(注:由于我无法实时获取具体公司的实际发展故事,以上故事为虚构内容,仅用于展示故事编写风格和结构。如果您需要真实、具体的故事,请提供更多关于AFE公司的信息,以便我能为您编写更贴近实际的内容。)

问答坊 | AI 解惑

请问JY134G9是哪家的液晶屏,这是我下载的资料中出现的一个型号,网上查不到是哪家的

请问JY134G9是哪家的液晶屏,这是我下载的资料中出现的一个型号,网上查不到是哪家的,所以问问大家。 …

查看全部问答>

闲置电源适配器改装成可调电源

分享的一位UP主的作品,闲置电源适配器改装成可调电源,有感兴趣的可以搞起来!     …

查看全部问答>

【创龙科技全志A40i开发板】TL7606I模块测试

## 前 言 本文主要介绍基于全志科技A40i(ARM Cortex-A7)处理器的8/16通道AD采集开发案例,使用核芯互联CL1606/CL1616AD芯片,亦适用于ADI AD7606/AD7616。CL1606/CL1616与AD7606/AD7616软硬件兼容。 > 备注: > > (1)创龙科技TL7606I ...…

查看全部问答>

招聘 软件开发工程师(嵌入式)

浙江南都电源动力股份有限公司(股票代码:300068)面向智慧储能、数据中心、工业后备和绿色出行四大应用领域,提供以锂离子电池和铅电池为核心的产品、系统集成及服务,同时打造了“锂电池循环产业链”和“铅电池循环产业链” ...…

查看全部问答>

招聘 BMS软件开发工程师 工作地点北京

浙江南都电源动力股份有限公司(股票代码:300068)面向智慧储能、数据中心、工业后备和绿色出行四大应用领域,提供以锂离子电池和铅电池为核心的产品、系统集成及服务,同时打造了“锂电池循环产业链”和“铅电池循环产业链” ...…

查看全部问答>

最小的CP/M微型计算机

  爱好者Kian Ryan组装了一台很可能是最小的CP/M微型计算机--建立在Pimoroni Tiny 2040和Adafruit microSD读卡器之上。   “我一直在使用RC 2014作为CP/M开发机器,特别是在开发跨平台的Rogue类游戏时。我喜欢它,” ...…

查看全部问答>

逻辑功能求助

inout reg [15:0] Fsmc_data; reg id_temp; always @(negedge Fsmc_NOE or negedge rst_n) begin                   case ({Fsmc_addr, Fsmc_NBL0, Fsmc_NBL1, Fsmc_NE ...…

查看全部问答>

ESP8266的GPIO16的用法问题

本帖最后由 chenbingjy 于 2022-11-18 08:34 编辑 我想使用GPIO16控制LED灯的亮灭,不知可行否? 我用第一个图的函数操作,编译通不过,说是没定义。 高手指教,谢谢! …

查看全部问答>

电源电路中,整流二极管的作用的疑问

现象:         手里的一块板子,D1焊接漏了,没有焊接,测试的时候,迅速插拔电源,偶尔出现单片机无法启动的问题,经简单查看分析,3.3V放电慢了,未放电完全立马上电了,导致的无法启动,但是把D1补上 ...…

查看全部问答>

用放大器搭个双向带自锁efuse

    功能是,u1-vout(输出过高)过流后 q2d 立马就关掉了 lock被拉高 当reset将lock拉低后,又可以恢复保护 芯片大致手册如下:        主要是支持单电源比较方便   ...…

查看全部问答>