矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
查看: 9624|回复: 26

stc 89c52单片机啊 + 1602LCD液晶屏,如何显示小数呢?

[复制链接]
     
发表于 2018-2-15 15:27:41 | 显示全部楼层 |阅读模式
stc 89c52单片机啊 + 1602LCD液晶屏,如何显示小数呢?
之前用数码管显示小数已经搞定,现在用1602的LCD液晶屏不知如何下手,望老师赐教,越详细越好呢!
加分鼓励哈。
     
发表于 2018-3-13 15:08:22 来自手机 | 显示全部楼层
eric20060310 发表于 2018-3-13 11:05
这都不会还写什么程序

不是不会,我看楼主是想找个简单点的方法,我看过很多人都是把浮点拆成一个个字符,再以字符形式显示出来,这样确实有点复杂了

我也想知道,有没有一个什么函数,直接把一个浮点转换成一个字符串的?
回复 支持 1 反对 0

使用道具 举报

     
发表于 2018-2-15 15:46:27 | 显示全部楼层
本帖最后由 w6955 于 2018-2-15 15:48 编辑

显示小数与显示其他数字字符完全相同,小数有几个格式如果显示“#####.####”格式,你就把整数部分与小数部分事先分离开,准备好后依次写入就是了。最高水平的例子就在XJW01许老师的数字电桥程序中,直接可用,无需再找其他例子。
回复 支持 反对

使用道具 举报

     
发表于 2018-2-15 15:47:02 | 显示全部楼层
我都是浮点运算直接输出小数的,我也是新手

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2018-2-15 15:47:31 | 显示全部楼层
w6955 发表于 2018-2-15 15:46
显示小数与显示其他数字字符完全相同,小数有几个格式如果显示“#####.####”格式,你就把整数部分与小数部 ...

老师,这个整数部分 和 小数部分 如何进行分离呢?
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2018-2-15 15:48:08 | 显示全部楼层
ycx2002 发表于 2018-2-15 15:47
我都是浮点运算直接输出小数的,我也是新手

直接输出给 1602LCD液晶屏显示吗?
回复 支持 反对

使用道具 举报

     
发表于 2018-2-15 16:02:54 | 显示全部楼层
本帖最后由 w6955 于 2018-2-15 16:11 编辑
生鱼片 发表于 2018-2-15 15:48
直接输出给 1602LCD液晶屏显示吗?


是的,直接用,在专门函数中处理。请参看许老师的那个电桥的程序。
http://www.crystalradio.cn/forum ... &authorid=43237
13楼14楼的程序
回复 支持 反对

使用道具 举报

     
发表于 2018-2-15 16:14:07 | 显示全部楼层
本帖最后由 w6955 于 2018-2-15 16:15 编辑

徐老师的程序很值得细读仔细品味,看了就明白那是有功底的,学习不要闷头钻,那样效果不好。
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2018-2-15 21:49:50 来自手机 | 显示全部楼层
简燕 发表于 2018-2-15 18:14
写一个printf()的重定向函数.无论接LCD,TFT,还是串口,都可以使用printf() 的格式化输出.

我之前写了个这个函数,但是显示不了!
老师来个例程!
回复 支持 反对

使用道具 举报

     
发表于 2018-2-15 22:51:59 来自手机 | 显示全部楼层
将LCD1602显示函数以字符串形式传参,然后将要显示的浮点数转换成字符串,在调用显示函数。
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2018-2-15 23:01:20 | 显示全部楼层
gxg0000 发表于 2018-2-15 22:51
将LCD1602显示函数以字符串形式传参,然后将要显示的浮点数转换成字符串,在调用显示函数。

老师,其他都倒能理解,就是不知用何大法将浮点数转成ASCII码的字符串呢,传参调用显示函数能理解。
回复 支持 反对

使用道具 举报

     
发表于 2018-2-15 23:58:24 | 显示全部楼层
把上面说的分段法概念,写成一个浮点数转换ASCII码字符串的函数,每次浮点转字符串时调用一次即可。
回复 支持 反对

使用道具 举报

     
发表于 2018-2-16 07:12:43 | 显示全部楼层
给你个参考,只能是个参考
20180216071018020.jpg
20180216071045197.jpg
回复 支持 反对

使用道具 举报

     
发表于 2018-2-17 14:06:40 | 显示全部楼层
楼上的代码挺麻烦,可以直接用格式化输出sprintf(buff,“%f,data)就可以把字符串输出到buff里,然后调用LCD驱动函数刷屏。或者如8楼所说重定向prinf函数也可以(重新实现一下fputc函数)。

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

     
发表于 2018-2-18 07:06:08 | 显示全部楼层
确实是麻烦,不过也就是麻烦一次,以后就抄过来用就是了。大部分都是为了显示格式在折腾。
回复 支持 反对

使用道具 举报

     
发表于 2018-2-19 18:46:01 | 显示全部楼层
我是先取整数,然后把小数分开
float j = 2.5;
int i = j; //此语句直接减去
float k = (j - i)*10;
int l = k;
上面的代码没有考虑小数点后面两位四舍五入的情况

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入会员

本版积分规则

小黑屋|手机版|矿石收音机 ( 蒙ICP备05000029号-1 )

蒙公网安备 15040402000005号

GMT+8, 2025-4-30 10:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表