液晶显示数据的小小技巧:(主要针对液晶显示浮点型数据) 我们在使用液晶屏的时候,无论是1602/12864、NOKIA、J2004A还是其他的,常常遇到需要显示一个变量(尤其是小数),那么显示变量又有一些小小的技巧,这里把我的一些使用方法,给新手介绍一下,欢迎新人学习,更加欢迎高手拍砖(但不能总是拍,得让我知道为什么被拍)
(1)首先,我们需要先做一些预备知识:如何进行四舍五入:
float temp = 2.376 ; 我们需要保留两位小数,也就是2.38(四舍五入后的结果) 在程序中,我们只需要一句话:temp = (unsigned int)((temp*100)+0.5) / 100 ;就完成了这个功能,得到的结果就是2.38(不信可以试试看额)
(2)液晶如何显示小数 使用以下代码:
#include #include 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); }
|