先乘上100,将浮点数强制转换成int类型,然后才能取余,分离每位数,否则错误。显示时中间加上小数点。末尾数字跳动时可以用平均值滤波。 |
先乘上100,注意要转换成int类型,否则取余错误。 |
void xianshi1() { uint8 i; long a; a=tmp*100; temp[8]=0x30+a/10000; temp[9]=0x30+a/1000%10; temp[11]=0x30+a/100%10; temp[12]=0x2e; temp[13]=0x30+a/10%10; temp[14]=0x30+a%10; lcd_order(0x80+0x40); for(i = 0;i<16;i++) lcd_data(temp[i]); } |
本帖最后由 真皮沙发 于 2021-4-23 13:25 编辑 小数乘100化整数,再显示,中间加小数点 |
没看你的代码。但是我分享下思路,温度读出来以后,将温度*100,比如21.12*100=2112。然后你可以取余将21和12分别用÷和%的方法提取出来放在数组内,然后,显示的时候,你显示21然后显示一个小数点,然后显示12。只要你温度传感器精度够,想显示几位小数都没问题。 |
你图片的分解方法就很好啊,只要温度不大于100,直接将第三位小数缓存不要就行了 |
鹤见川 发表于 2021-4-22 22:29 ![]() |
好好看看ds18b20的datasheet就明白了 |
wulin 发表于 2021-4-22 22:17 参考了您的但是改出来还是乱码我懵了 ![]() |
wulin 发表于 2021-4-22 22:17 ![]() |
鹤见川 发表于 2021-4-22 18:55 给你一个ds18b20+LCD1602显示2位小数的示例参考,但在实践中显示1位小数足以,末位小数频繁变化看的不太舒服。 ![]() |
![]() ![]() ![]() ![]() |
这是网友的程序 求解 |