标题: LCD1602如何显示FLOAT变量? [打印本页]

作者: 空闲游真    时间: 2021-4-15 20:11
标题: LCD1602如何显示FLOAT变量?
小白一枚,最近在用51单片机做个小设计:单片机RXD获取GPS速度后在1602上显示出来。GPS给到的速度数据格式是X.XXX或XX.XX或XXX.X,单位是节。




作者: 空闲游真    时间: 2021-4-15 20:29
本帖最后由 空闲游真 于 2021-4-15 20:41 编辑

现在的想法是把获取到的数据先赋给一个float变量再用LCD1602输出。输出这一步犯了难,LCD1602如何输出一个浮点数呢,望指教!
作者: lwh999995    时间: 2021-4-15 21:37
LCD1602只支持字符显示,那么小数或数字必须一个一个都转换成字符,如3 -> '3'   
如果显示函数是 show(0,0,字符),要显示num=3.14  先乘以100变成整数,num = 314,那么如下:
show(0,0,num/100%10 + 0x30);
show(0,0,'.');
show(0,0,num/10/%10 + 0x30);
show(0,0,num%10 + 0x30);
作者: 空闲游真    时间: 2021-4-15 22:02
lwh999995 发表于 2021-4-15 21:37
LCD1602只支持字符显示,那么小数或数字必须一个一个都转换成字符,如3 -> '3'   
如果显示函数是 show(0, ...

感谢回复!我一开始也是这么做的,但是这种做法有个缺点,就是变量的小数点位置是固定的。
我刚才又查了查资料,找到一种比较便捷的方法。就是把浮点变量转换成字符串再输出

float x=12.783
char str[6];
sprintf(str,"%f",x);





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1