【不用开发板学习STM32】DS18B20温度采集+OLED显示(文末获取代码及工程文件)

发布于:2022-11-02 ⋅ 阅读:(460) ⋅ 点赞:(0)

• 实验环境

本次实验是通过Proteus+MDK一起模拟完成的。Proteus模拟实际电路,MDK编译代码。Proteus版本是8.13,MDK版本是5.21。需要注意的是,Proteus需要安装8.8以上版本,器件库里面要支持STM32F103R8。

• 实验目的

    1.读取DS18B20的数值转换成温度,正负值都能读取;

    2.OLED12864屏幕显示当前温度,上限阈值,下限阈值;

    3.可通过按键调节温度上下限阈值;

    4.温度超过范围红色LED亮起报警,在范围内绿色LED亮起。

• 硬件电路

• 主控:

STM32F103R8(之前用的是C6,但是觉得IO少了点改成了R8,本质上只有Flash和SRAM大小的区别,所以没有必要纠结)

• 时钟:

没有用外部晶振,因为Proteus只支持一种时钟树,所以这里采用内部晶振,做实验够了,倍频后是48M。

• 复位电路:

复位电路直接去掉了,因为不是实际电路,在仿真环境中感觉作用不大,还占地方。

• IO说明:

  1. OLED的I2C通信SCL-PB12,SDA-PB13;

  2. DS18B20的1-wrie的IO-PA11;

  3. RED-LED-PB0,GREEN-LED-PB1;

  4. 串口用来调试PA9和PA10;

  5. 上限设置按键-PC0,下限设置按键PC1。

DS18B20温度采集+OLED显示(文末获取代码及工程文件下载链接!)

• 代码概述:

• 代码目录概述:

APP文件夹:主要包含应用函数的.C文件。

BSP文件夹:主要包含底层硬件驱动的.C文件。

MDK-ARM文件夹:主要包含STM32的启动的.S文件。

StdPeriph_Driver文件夹:主要包含ST官方提供的标准外设驱动.C文件(不是HAL库哦)。

CMSIS文件夹:系统内核配置文件,标准库自带的。

• 代码内容概述:
DS18B20温度采集+OLED显示(文末获取代码及工程文件下载链接!)icon-default.png?t=M85Bhttps://mp.weixin.qq.com/s?__biz=MzU2OTc4ODA4OA==&mid=2247522309&idx=1&sn=891b73614eaac959fe4f83a3a350d521&chksm=fcfb8bd2cb8c02c457ed3354a0fe90d12136fb89cf29235d31efb6dd20ec95de62bb0779bc4a&token=454270454&lang=zh_CN#rd

• 实验结果展示:

  1. 开机经过初始化以后,显示欢迎界面以及当前的温度,默认上限温度是10℃,下限温度是-10℃;

  2. 按下上下限设置温度设置按键后,界面切换到设置按键,按一下上限+1,下限-1。