打印
[应用方案]

液晶如何显示小数并且小数自动四舍五入

[复制链接]
1984|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ccw1986|  楼主 | 2016-5-5 22:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

液晶显示数据的小小技巧:(主要针对液晶显示浮点型数据)

    我们在使用液晶屏的时候,无论是1602/12864、NOKIA、J2004A还是其他的,常常遇到需要显示一个变量(尤其是小数),那么显示变量又有一些小小的技巧,这里把我的一些使用方法,给新手介绍一下,欢迎新人学习,更加欢迎高手拍砖(但不能总是拍,得让我知道为什么被拍)


(1)首先,我们需要先做一些预备知识:如何进行四舍五入:


float temp = 2.376 ;  

    我们需要保留两位小数,也就是2.38(四舍五入后的结果)

    在程序中,我们只需要一句话:temp = (unsigned int)((temp*100)+0.5) / 100 ;就完成了这个功能,得到的结果就是2.38(不信可以试试看额)


    (2)液晶如何显示小数

    使用以下代码:


#include   
#include   
#include "LCD1602.h"  
void main(void)  
{  
    float a = 182.376 ;  
    lcd1602Init();  
    lcd1602WriteCommand(0X0C);  
    /*显示原来的数字,非重点*/  
    lcd1602AddressWriteByte(LCD1602_ROW0,0,((unsigned long)a)%1000/100+'0') ;  
    lcd1602AddressWriteByte(LCD1602_ROW0,1,((unsigned long)a)%100/10+'0') ;  
    lcd1602AddressWriteByte(LCD1602_ROW0,2,((unsigned long)a)%10+'0') ;  
    lcd1602AddressWriteByte(LCD1602_ROW0,3,'.') ;  
    lcd1602AddressWriteByte(LCD1602_ROW0,4,(unsigned long)(a*10)%10+'0') ;  
    lcd1602AddressWriteByte(LCD1602_ROW0,5,(unsigned long )(a*100)%10+'0') ;  
    lcd1602AddressWriteByte(LCD1602_ROW0,6,(unsigned long )(a*1000)%10+'0') ;  
    lcd1602AddressWriteByte(LCD1602_ROW0,8,0x7e) ;  
    /*重点部分*/  

    /*显示,百位这里我一直最高是百位,所以没有判断更加位,实际操作时,应该添加其他机制,使其更加智能*/  
    lcd1602AddressWriteByte(LCD1602_ROW0,10,((unsigned long)a)%1000/100+'0') ;  
    /*显示十位*/  
    lcd1602AddressWriteByte(LCD1602_ROW0,11,((unsigned long)a)%100/10+'0') ;  
    /*显示各位*/  
    lcd1602AddressWriteByte(LCD1602_ROW0,12,((unsigned long)a)%10+'0') ;  
    /*显示小数点*/  
    lcd1602AddressWriteByte(LCD1602_ROW0,13,'.') ;  
    /*显示小数点后第一位*/  
    lcd1602AddressWriteByte(LCD1602_ROW0,14,(unsigned long)(a*10)%10+'0') ;  
    /*显示小数点后第二位,此时需要四舍五入计算*/  
    lcd1602AddressWriteByte(LCD1602_ROW0,15,(unsigned long )(a*100+0.5)%10+'0') ;  

    lcd1602AddressWriteString(LCD1602_ROW1,0,"QQ:279729201") ;  

    while(1);  
}  

沙发
yiyigirl2014| | 2018-8-13 19:10 | 只看该作者
跟液晶无关,跟你的输出给液晶的内容有关。

使用特权

评论回复
板凳
zhuomuniao110| | 2018-8-14 07:58 | 只看该作者
你用printf函数做,然后格式化输出就行

使用特权

评论回复
地板
ayb_ice| | 2018-8-14 09:15 | 只看该作者
sprintf

使用特权

评论回复
5
zhuomuniao110| | 2018-8-14 12:02 | 只看该作者
楼主的想法是可以的

使用特权

评论回复
6
zhuomuniao110| | 2018-8-14 12:02 | 只看该作者
给力,谢谢分享。

使用特权

评论回复
7
wangshujun| | 2018-8-14 13:36 | 只看该作者
这么折腾真不如用printf
除非公司按照行数算工资

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

84

主题

925

帖子

6

粉丝