• 实验环境
本次实验是通过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说明:
OLED的I2C通信SCL-PB12,SDA-PB13;
DS18B20的1-wrie的IO-PA11;
RED-LED-PB0,GREEN-LED-PB1;
串口用来调试PA9和PA10;
上限设置按键-PC0,下限设置按键PC1。
DS18B20温度采集+OLED显示(文末获取代码及工程文件下载链接!)
• 代码概述:
• 代码目录概述:
APP文件夹:主要包含应用函数的.C文件。
BSP文件夹:主要包含底层硬件驱动的.C文件。
MDK-ARM文件夹:主要包含STM32的启动的.S文件。
StdPeriph_Driver文件夹:主要包含ST官方提供的标准外设驱动.C文件(不是HAL库哦)。
CMSIS文件夹:系统内核配置文件,标准库自带的。
• 实验结果展示:
开机经过初始化以后,显示欢迎界面以及当前的温度,默认上限温度是10℃,下限温度是-10℃;
按下上下限设置温度设置按键后,界面切换到设置按键,按一下上限+1,下限-1。