基于STM32单片机的大棚温度测控系统

该系统基于STM32单片机,通过DHT11传感器采集大棚内的温湿度数据,并在LCD屏幕上显示。用户可设置阈值,当数据超出设定范围时,系统会触发蜂鸣器报警,并通过继电器控制降温或除湿设备。代码中包含了关键函数如初始化、阈值调整和数据读取等。
摘要由CSDN通过智能技术生成


基于STM32单片机的大棚温度测控系统

功能:
1.通过LCD屏幕显示温湿度值和上限阈值
2.通过按键完成阈值加减功能
3.通过DHT11完成温湿度采集
4.若实时数据不满足条件,则进行降温或者除湿操作

一、原理图

在这里插入图片描述

二、部分代码

#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "lcd1602.h"
#include "key.h"
#include "dht11.h"
#include "stdio.h"

#define BEEP_ON GPIO_ResetBits(GPIOA, GPIO_Pin_6)
#define BEEP_OFF GPIO_SetBits(GPIOA, GPIO_Pin_6)

#define RELAY_ON GPIO_SetBits(GPIOA, GPIO_Pin_7)
#define RELAY_OFF GPIO_ResetBits(GPIOA, GPIO_Pin_7)

#define LED_ON GPIO_SetBits(GPIOA, GPIO_Pin_8)
#define LED_OFF GPIO_ResetBits(GPIOA, GPIO_Pin_8)

unsigned int Temp_L = 30;
unsigned int Hum_L = 60;

unsigned int key_value;
unsigned char buffer1[15];
unsigned char buffer2[15];

DHT11_Data_TypeDef DHT11_Data;


void BEEP_Init(void)
{
		GPIO_InitTypeDef GPIO_InitStructure;
		
		RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

		GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_6;
		GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
		GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
		GPIO_Init(GPIOA, &GPIO_InitStructure);
		BEEP_OFF;

}

void Relay_Init(void)
{
		GPIO_InitTypeDef GPIO_InitStructure;
		
		RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

		GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_7;
		GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
		GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
		GPIO_Init(GPIOA, &GPIO_InitStructure);
		RELAY_OFF;
}

void LED_Init(void)
{
		GPIO_InitTypeDef GPIO_InitStructure;
		
		RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

		GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_8;
		GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
		GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
		GPIO_Init(GPIOA, &GPIO_InitStructure);
		LED_OFF;
}



int main(void)
{   
		LED_Init();
		LCD_init();
    BEEP_Init();
		KEY_Init();
		BEEP_Init();
		Relay_Init();
	  DHT11_Init();  
		while(1)
		{
			DHT11_Read_TempAndHumidity(&DHT11_Data);

			sprintf((char*)buffer1, "Hum:%d%% Temp:%dC", DHT11_Data.humi_int, DHT11_Data.temp_int );
			LCD_write_string(0, 0, (char*)buffer1);
			
			sprintf((char*)buffer2, "H_L:%d%% T_L:%dC", Hum_L, Temp_L);
			LCD_write_string(0, 1, (char*)buffer2);
			
			key_value = KEY_Scan(0);
			
			if(key_value == 1)
			{
				Hum_L++;
			}
			else if(key_value == 2)
			{
				Hum_L--;
			}
			else if(key_value == 3)
			{
				Temp_L++;
			}
			else if(key_value == 4)
			{
				Temp_L--;
			}
			
			if(DHT11_Data.humi_int >= Hum_L || DHT11_Data.temp_int >= Temp_L)
			{
				BEEP_ON;
			}
			else 
			{
				BEEP_OFF;
			}
			
			if(DHT11_Data.temp_int >= Temp_L)
			{
				RELAY_ON;
			}
			else
			{
				RELAY_OFF;
			}
			
			if(DHT11_Data.humi_int >= Hum_L)
			{
				LED_ON;
			}
			else 
			{
				LED_OFF;
			}
		}
}

三、视频演示

哔哩哔哩视频演示链接跳转,请直接点击!

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值