找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 463|回复: 6
打印 上一主题 下一主题
收起左侧

STM32+DS18B20 大佬帮我看看,为什么OLED屏幕上显示是00

[复制链接]
跳转到指定楼层
楼主
ID:1103088 发表于 2023-12-7 14:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
温度传感器是DS18B20,单片机是STM32F103C8T6。OLED屏是0.96,4引脚。

bishe.7z

196.71 KB, 下载次数: 9

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:452475 发表于 2023-12-7 15:10 | 只看该作者
Main函数第15行 “u8 DS18B20_Init();” 为什么要加个u8,等于你在主函数声明了一个DS18B20_Init()函数,但没有引用到ds18b20.c文件里面的DS18B20_Init()初始化函数,那没反应是当然的了
回复

使用道具 举报

板凳
ID:1103088 发表于 2023-12-7 16:13 | 只看该作者
夏至浅浅落 发表于 2023-12-7 15:10
Main函数第15行 “u8 DS18B20_Init();” 为什么要加个u8,等于你在主函数声明了一个DS18B20_Init()函数,但 ...

大佬,还是没反应。OLED屏幕上还是显示00。
回复

使用道具 举报

地板
ID:452475 发表于 2023-12-7 21:21 | 只看该作者
世间美好 发表于 2023-12-7 16:13
大佬,还是没反应。OLED屏幕上还是显示00。

那就一步一步查,比如先确认有没有识别18B20。例如将DS18B20_Check()的返回值通过oled显示出来看看有没有检测到18b20的存在后再继续分析
回复

使用道具 举报

5#
ID:507029 发表于 2023-12-7 22:20 | 只看该作者
夏至浅浅落 发表于 2023-12-7 21:21
那就一步一步查,比如先确认有没有识别18B20。例如将DS18B20_Check()的返回值通过oled显示出来看看有没有 ...

18b20单线数据传输对数据BIT脉宽度要求比较严格,可以先用示波器查看下数据BIT电平宽度是否满足要求。
回复

使用道具 举报

6#
ID:628113 发表于 2023-12-8 10:59 | 只看该作者
DS18B20 真心不好用, 谁用谁知道。
有几个注意事项, 一个个查,总能解决的。
1.  1us 延时的 误差不要太大
2.  硬件光靠MCU上拉 是不行的
3.  GPIO 永远不要设置为 PP 模式
4.  读写时 关中断!!!
5. 读写完成 第一时间释放总线

调试时, 先判断 DS18B20 存在是否 正确 。 就是 有个 低电平回应 。 如不存在 , 检查硬件。
回复

使用道具 举报

7#
ID:72088 发表于 2023-12-8 16:38 | 只看该作者
18B20还是很好用的,主要是时序延时,有个逻辑分析仪就很好解决,网上买好像30多元吧,分析程序时序对写程序很有帮助的,
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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