基于STM32单片机的温度控制系统(Proteus仿真+Keil源码+设计文档)DS18B20 附下载链接!
提供对应的Proteus仿真电路图,Keil程序源码(C语言)+设计文档等电子资料参考学习,附全部资料的下载链接。
1)项目完整资料获取链接:下载链接
2)Keil、Proteus各个版本安装包: 下载链接
01设计要求
设计一个基于STM32单片机的温度控制系统:
- DS18B20监测环境温度,显示在LCD1602上
- 可以设置温度上下限
- 可以控制加热或者降温
- 超过限制温度用LED或者蜂鸣器进行提示
02Proteus仿真![]()
03示例代码
#include"main.h"#include"bsp-lcd1602.h"#include"ds18b20.h"#include"delay.h"intmain(void){/* USER CODE BEGIN 1 */u8 state=0,i=0,j=0;/* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();/* USER CODE BEGIN 2 */LCD1602_Init();DS18B20_Init();//DS18B20初始化HAL_Delay(10);//延时一段时间LCD1602_ShowStr(2,0,"Temp Alarm",11);LCD1602_ShowStr(0,1,"detection system",16);HAL_Delay(1000);//延时1SLCD1602_WriteCmd(0x01);//清屏/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while(1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */switch(state){case0:display_temperature(0,0);//获取温度值并在LCD1602上显示,当前温度值与阈值进行比较并报警if(key==KEY2_PRESS){key=0;LCD1602_WriteCmd(0x01);//清屏state=1;}if(key==KEY3_PRESS){key=0;i=~i;LCD1602_WriteCmd(0x01);//清屏state=3;}if(key==KEY4_PRESS){key=0;j=~j;LCD1602_WriteCmd(0x01);//清屏state=4;}break;case1:LCD1602_ShowStr(0,0,"SetHighTemp:",12);LCD1602_ShowStr(0,1,"HTemp =",7);LCD1602_ShowNum(8,1,Hight_Temp_Value/100);LCD1602_ShowNum(9,1,Hight_Temp_Value%100/10);if(key==KEY0_PRESS){key=0;Hight_Temp_Value=Hight_Temp_Value+10;if(Hight_Temp_Value>1000)Hight_Temp_Value=0;}elseif(key==KEY1_PRESS){key=0;Hight_Temp_Value=Hight_Temp_Value-10;if(Hight_Temp_Value<1)Hight_Temp_Value=0;}elseif(key==KEY2_PRESS){key=0;LCD1602_WriteCmd(0x01);//清屏state=2;}break;case2:LCD1602_ShowStr(0,0,"SetLowTemp:",11);LCD1602_ShowStr(0,1,"LTemp =",7);LCD1602_ShowNum(8,1,Low_Temp_Value/100);LCD1602_ShowNum(9,1,Low_Temp_Value%100/10);if(key==KEY0_PRESS){key=0;Low_Temp_Value=Low_Temp_Value+10;if(Low_Temp_Value>Hight_Temp_Value)Low_Temp_Value=Hight_Temp_Value-10;}elseif(key==KEY1_PRESS){key=0;Low_Temp_Value=Low_Temp_Value-10;if(Low_Temp_Value<1)Low_Temp_Value=0;}elseif(key==KEY2_PRESS){key=0;LCD1602_WriteCmd(0x01);//清屏state=0;}break;case3://每按一下,改变升温电机的状态if(i)HAL_GPIO_WritePin(Heat_OUT_GPIO_Port,Heat_OUT_Pin,GPIO_PIN_SET);elseHAL_GPIO_WritePin(Heat_OUT_GPIO_Port,Heat_OUT_Pin,GPIO_PIN_RESET);state=0;break;case4://每按一下,改变降温风机的状态if(j)HAL_GPIO_WritePin(Cold_OUT_GPIO_Port,Cold_OUT_Pin,GPIO_PIN_SET);elseHAL_GPIO_WritePin(Cold_OUT_GPIO_Port,Cold_OUT_Pin,GPIO_PIN_RESET);state=0;break;default:break;}/* USER CODE END 3 */}}注:
源码使用Keil4或Keil5打开
仿真使用的是Proteus8.13及以上版本,版本过低可能会打不开。
04资料获取
1)项目完整资料获取链接:下载链接
2)Keil、Proteus各个版本安装包: 下载链接
