提供对应的Proteus仿真电路图Keil程序源码C语言设计文档等电子资料参考学习附全部资料的下载链接。1项目完整资料获取链接下载链接2Keil、Proteus各个版本安装包 下载链接01设计要求设计一个基于STM32单片机的温度控制系统DS18B20监测环境温度显示在LCD1602上可以设置温度上下限可以控制加热或者降温超过限制温度用LED或者蜂鸣器进行提示02Proteus仿真03示例代码#includemain.h#includebsp-lcd1602.h#includeds18b20.h#includedelay.hintmain(void){/* USER CODE BEGIN 1 */u8 state0,i0,j0;/* 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(keyKEY2_PRESS){key0;LCD1602_WriteCmd(0x01);//清屏state1;}if(keyKEY3_PRESS){key0;i~i;LCD1602_WriteCmd(0x01);//清屏state3;}if(keyKEY4_PRESS){key0;j~j;LCD1602_WriteCmd(0x01);//清屏state4;}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(keyKEY0_PRESS){key0;Hight_Temp_ValueHight_Temp_Value10;if(Hight_Temp_Value1000)Hight_Temp_Value0;}elseif(keyKEY1_PRESS){key0;Hight_Temp_ValueHight_Temp_Value-10;if(Hight_Temp_Value1)Hight_Temp_Value0;}elseif(keyKEY2_PRESS){key0;LCD1602_WriteCmd(0x01);//清屏state2;}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(keyKEY0_PRESS){key0;Low_Temp_ValueLow_Temp_Value10;if(Low_Temp_ValueHight_Temp_Value)Low_Temp_ValueHight_Temp_Value-10;}elseif(keyKEY1_PRESS){key0;Low_Temp_ValueLow_Temp_Value-10;if(Low_Temp_Value1)Low_Temp_Value0;}elseif(keyKEY2_PRESS){key0;LCD1602_WriteCmd(0x01);//清屏state0;}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);state0;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);state0;break;default:break;}/* USER CODE END 3 */}}注源码使用Keil4或Keil5打开仿真使用的是Proteus8.13及以上版本版本过低可能会打不开。04资料获取1项目完整资料获取链接下载链接2Keil、Proteus各个版本安装包 下载链接
基于STM32单片机的温度控制系统(Proteus仿真+Keil源码+设计文档)DS18B20 附下载链接!
提供对应的Proteus仿真电路图Keil程序源码C语言设计文档等电子资料参考学习附全部资料的下载链接。1项目完整资料获取链接下载链接2Keil、Proteus各个版本安装包 下载链接01设计要求设计一个基于STM32单片机的温度控制系统DS18B20监测环境温度显示在LCD1602上可以设置温度上下限可以控制加热或者降温超过限制温度用LED或者蜂鸣器进行提示02Proteus仿真03示例代码#includemain.h#includebsp-lcd1602.h#includeds18b20.h#includedelay.hintmain(void){/* USER CODE BEGIN 1 */u8 state0,i0,j0;/* 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(keyKEY2_PRESS){key0;LCD1602_WriteCmd(0x01);//清屏state1;}if(keyKEY3_PRESS){key0;i~i;LCD1602_WriteCmd(0x01);//清屏state3;}if(keyKEY4_PRESS){key0;j~j;LCD1602_WriteCmd(0x01);//清屏state4;}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(keyKEY0_PRESS){key0;Hight_Temp_ValueHight_Temp_Value10;if(Hight_Temp_Value1000)Hight_Temp_Value0;}elseif(keyKEY1_PRESS){key0;Hight_Temp_ValueHight_Temp_Value-10;if(Hight_Temp_Value1)Hight_Temp_Value0;}elseif(keyKEY2_PRESS){key0;LCD1602_WriteCmd(0x01);//清屏state2;}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(keyKEY0_PRESS){key0;Low_Temp_ValueLow_Temp_Value10;if(Low_Temp_ValueHight_Temp_Value)Low_Temp_ValueHight_Temp_Value-10;}elseif(keyKEY1_PRESS){key0;Low_Temp_ValueLow_Temp_Value-10;if(Low_Temp_Value1)Low_Temp_Value0;}elseif(keyKEY2_PRESS){key0;LCD1602_WriteCmd(0x01);//清屏state0;}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);state0;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);state0;break;default:break;}/* USER CODE END 3 */}}注源码使用Keil4或Keil5打开仿真使用的是Proteus8.13及以上版本版本过低可能会打不开。04资料获取1项目完整资料获取链接下载链接2Keil、Proteus各个版本安装包 下载链接