找回密码
 立即注册
搜索
热搜: STM32
查看: 64|回复: 0

新手入门 STM32 做 DS18B20 测水温 + OLED 显示:必备知识 + 学习路径

[复制链接]

13

主题

1

回帖

47

积分

新手上路

积分
47
发表于 2026-3-24 16:46:59 |中国| 显示全部楼层 |阅读模式
一、先明确:这个项目的核心逻辑(新手先懂整体,不迷茫)
整个项目的流程特别简单,一句话讲透:
```
DS18B20采集水温(单总线通信)→ STM32读取温度数据 → STM32把数据格式化(比如“25.5℃”)→ I2C/SPI通信把数据发给OLED → OLED显示温度
```
本质就是「两个外设的通信+数据处理+简单显示」,没有复杂算法,纯基础外设应用,正好适配新手。

二、必备知识清单(按学习优先级,江科大教程全覆盖)
1. 核心必学(90%项目内容,江科大讲得超细)
知识点
作用
江科大对应章节
难度
STM32 GPIO 口配置控制 DS18B20 的单总线、OLED 的通信引脚GPIO 输出 / 输入 / 上拉下拉配置
延时函数(us/ms)DS18B20 单总线的时序要求(关键!)SysTick 延时 / 定时器延时
DS18B20 单总线协议读取温度的核心通信规则外设篇 - 单总线(DS18B20 专题)⭐⭐
I2C/SPI 通信基础驱动 OLED 屏幕(优先学 I2C,接线更少)I2C 协议 / OLED 显示屏专题⭐⭐
数据格式处理把 DS18B20 的原始数据转成 “XX.X℃” 格式字符处理 / 数值转字符串

### 2. 拓展了解(10%辅助知识,不懂也能做,后续补)
知识点
作用
学习建议
STM32 系统时钟配置保证延时函数精准(江科大默认配好)直接用教程里的时钟配置,不用改
串口打印(可选)调试时打印温度数据,方便找问题学完项目再补,不影响核心功能
电源 / 接地规范避免 DS18B20/OLED 乱码、数据不准记住 “共地” 即可,新手不用深究


三、为什么说江科大的教程完全够用?
江科大的STM32教程(尤其是「STM32F103入门教程」)是新手天花板,针对你的项目:
1. **GPIO+延时**:教程里有详细的GPIO配置步骤,以及精准的us/ms延时函数(DS18B20对时序要求严格,这个是核心,教程里的延时直接能用);
2. **DS18B20专题**:专门讲了DS18B20的单总线协议、初始化、读取温度的代码,复制修改引脚就能用;
3. **OLED专题**:I2C版OLED的驱动代码、显示字符/数字的函数都给了,只需调用`OLED_ShowNum()`就能显示温度;
4. **代码风格**:教程里的代码是“寄存器版/库函数版”,新手能看懂,且没有冗余功能,直接适配小项目。

👉 唯一要注意:如果你的STM32是F4/H7系列,只需把教程里F1的GPIO/I2C配置换成对应系列的库函数,核心逻辑完全一样。


四、新手学习&实操路径(7天就能搞定)
Day1-Day2:打基础(必学)
1. 看江科大「GPIO输出」章节:学会配置引脚为输入/输出,掌握高低电平控制;
2. 看「延时函数」章节:把us/ms延时函数写进自己的工程,验证延时是否精准(比如延时1000ms,看LED亮灭是否准1秒);
3. 实操:用GPIO控制一个LED亮灭,熟悉代码下载、调试流程。

Day3-Day4:搞定DS18B20
1. 看江科大「DS18B20温度传感器」章节:理解单总线的初始化、写指令、读数据时序;
2. 实操:
   - 接线:DS18B20的VCC接STM32 5V(或3.3V)、GND接GND、DQ接任意GPIO(比如PB12);
   - 把教程里的DS18B20代码移植到工程,修改引脚定义,用串口(可选)打印读取到的温度值,验证是否能读到正确温度。

Day5-Day6:搞定OLED显示
1. 看江科大「OLED显示屏(I2C版)」章节:学会初始化OLED、显示字符/数字;
2. 实操:
   - 接线:I2C版OLED的VCC接3.3V、GND接GND、SCL接PB6、SDA接PB7(教程常用引脚);
   - 把DS18B20读取的温度值,通过`OLED_ShowNum()`/`OLED_ShowString()`显示在OLED上,比如第一行显示“Temp:”,第二行显示“25.5℃”。

Day7:整合调试
1. 把DS18B20代码和OLED代码整合到一个工程,主循环里每隔500ms读取一次温度,更新OLED显示;
2. 调试常见问题:
   - DS18B20读不到温度:检查接线(DQ引脚是否接对)、延时函数是否精准、上拉电阻(DS18B20的DQ引脚建议串一个4.7K上拉电阻);
   - OLED乱码/不显示:检查I2C引脚、电源是否接3.3V(接5V容易烧)、OLED初始化是否成功。

五、新手避坑提醒(少走90%弯路)
1. **DS18B20接线必加电阻**:DQ引脚和VCC之间一定要接4.7K上拉电阻,否则读不到数据(新手最容易忘!);
2. **OLED供电选3.3V**:I2C版OLED接5V容易烧,优先接STM32的3.3V引脚;
3. **延时函数要精准**:DS18B20的时序要求到us级,别用不准的延时(江科大的SysTick延时直接用,别自己瞎改);
4. **共地!共地!共地!**:DS18B20、OLED、STM32的GND必须接在一起,否则数据乱跳、OLED显示异常;
5. **水温测试别直接泡传感器**:DS18B20的金属探头可以泡水,但电路板部分要防水(套热缩管),避免短路。


总结
1. **核心结论**:江科大的教程完全覆盖这个项目的所有知识点,新手跟着学就行,不用额外找资料;
2. **关键重点**:先搞定DS18B20的时序(延时)和OLED的I2C通信,这两个是核心,剩下的就是数据拼接显示;
3. **实操建议**:先分模块调试(先读温度,再单独显示OLED),再整合,新手别一上来就写完整代码,容易懵。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Discuz! X

GMT+8, 2026-4-5 14:54 , Processed in 0.050586 second(s), 21 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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