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

news2024/11/23 21:12:42

目录

  • 基于STM32单片机的大棚温度测控系统
    • 一、原理图
    • 二、部分代码
    • 三、视频演示


基于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;
			}
		}
}

三、视频演示

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/702189.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

linux curl命令使用教程(curl指令)

文章目录 curl指令介绍curl的历史curl指令的安装Ubuntu/DebianCentOS/RHELFedoramacOSWindows curl使用方法示例使用curl命令注意事项 curl指令介绍 curl是一个用于发送HTTP请求的命令行工具,它支持多种协议,包括HTTP、HTTPS、FTP、SMTP等。curl可以用来…

人工智能:揭示未来科技所带来的革命性变革

目录 引言: 一、人工智能的定义与发展历程: 二、人工智能的应用领域: 三、人工智能对未来的影响: 结论: 引言: 在当今科技快速发展的时代,人工智能(Artificial Intelligence&am…

开展全媒体营销的具体步骤和策略

随着移动互联网的发展和智能手机的普及,网络营销的主战场从PC端向移动端转移,新型的全媒体营销就是在如此的背景下兴起且被广泛应用。全媒体营销强调的是通过多个平台和渠道传播信息,与目标受众进行全方位、多角度的沟通。 企业如何高效开展全…

1σ Random Jitter of SSB for TIE Period

1σ Random Jitter of SSB for TIE & Period ,该章节厘清了jitter基本概念,并给出了对应的表达式。

FineReport学习4

通过按钮控件来实现插入删除行 通过sql公式实现填报联动 设置插入行策略 通过sql实现控件联动

数据结构---------(2)排序

排序 1.选择排序 从待排序的数据中选择最小的元素,将其放在已排序的序列末尾,然后在剩余的数据中再选择最小的元素,放在已排序序列的末尾,以此类推,直到所有的数据都排好序为止。 public static void main(String[…

大数据分析案例-基于KMeans聚类算法对客户进行分群分析

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

【GESP】2023年03月图形化二级 -- 绘制图形

文章目录 绘制图形1. 准备工作2. 功能实现3. 设计思路与实现(1)角色、舞台背景设置a. 角色设置b. 舞台背景设置 (2)脚本编写a. 角色:小猫 4. 评分标准 绘制图形 1. 准备工作 (1) 隐藏默认角色小猫。 2. 功…

【Redis入门】 —— 关于Redis的一点儿知识

💧 【 R e d i s 入门】——关于 R e d i s 的一点儿知识 \color{#FF1493}{【Redis入门】 —— 关于Redis的一点儿知识} 【Redis入门】——关于Redis的一点儿知识💧 🌷 仰望天空,妳我亦是行人.✨ 🦄 个人主页…

2023年华中杯数学建模B题小学数学应用题相似性度量及难度评估解题全过程文档及程序

2023年华中杯数学建模 B题 小学数学应用题相似性度量及难度评估 原题再现 某 MOOC 在线教育平台希望能够进行个性化教学,实现用户自主学习。在用户学习时,系统从题库中随机抽取若干道与例题同步的随堂测试题,记录、分析学生的学习和答题信息…

深入Vite:再谈ESM的高阶特性

谈到前端模块化的发展历史,就一定不会漏掉ESM,除此之外,还有大家熟知的CommonJS、AMD、CMD以及ES6等。目前, ESM 已经逐步得到各大浏览器厂商以及 Node.js 的原生支持,正在成为主流前端模块化方案。 而 Vite 本身就是…

chatgpt赋能python:Python除零错误:原因,解决办法和实践建议

Python 除零错误:原因,解决办法和实践建议 介绍 Python 作为一门广泛使用的高级编程语言,它的强大之处就体现在它的简洁性、可读性和易用性上。但是在实践中,有时候我们会遇到一些让我们不得不头痛的问题,其中之一就…

(0017) H5-vue创建项目vue init webpack

1、初始化项目 1、vue 命令讲解 vue list &#xff1a;查看可以基于那些模板创建vue应用vue init <template-name> <project-name>init&#xff1a;表示要用vue-cli来初始化项目 <template-name>&#xff1a;表示模板名称&#xff0c;vue-cli官方提供的5种…

【LeetCode】218. 天际线问题

218. 天际线问题&#xff08;困难&#xff09; 思路 题意转化 完整思路分析 multiset的使用 multiset 是关联容器的一种&#xff0c;是排序好的集合&#xff08;元素默认升序&#xff09;&#xff0c;并且允许有相同的元素。 不能直接修改 multiset 容器中元素的值。因…

柯美658 558 458 308 554 364等报错故障代码C2152,C2153,C2154,C2155,C2156 C2253.C2254维修

代码基本都是转印带故障代码,转印带有两个传感器是检测转印带工作和没有工作时加压有没有归位的,传感器基本不会坏,更多的情况是因为转印带上的废粉落在了传感器上导致传感器故障,清洁即可。

剑指offer--JZ24 反转链表

反转链表需要三个指针&#xff0c;一个保留前一个结点的指针&#xff0c;一个后移指针&#xff0c;一个当前指针。C语言版本代码如下&#xff1a; #include <stdio.h> #include <stdlib.h>// 单链表节点结构定义 struct ListNode {int val;struct ListNode* next;…

用acsii , unicode,utf-8讨论为什么采用中文编程不行

一、背景介绍 很多刚接触计算机的同学&#xff0c;可能会发出一个疑问&#xff0c;为什么不能直接使用中文编程&#xff1f; 要了解这个问题&#xff0c;还得从计算机的起源说起&#xff01; 在计算机软件里面&#xff0c;一切的信息都可以用 1 和 0 来表示&#xff08;严格…

mongodb节点一直处于recovering状态问题修复

mongoDB版本&#xff1a;5.0.4 该节点mongod服务日志一直在刷如下日志 {"t":{"$date":"2023-06-19T15:24:50.15608:00"},"s":"I", "c":"REPL", "id":5579708, "ctx":"…

云计算的发展趋势及其对企业的影响

第一章&#xff1a;引言 近年来&#xff0c;云计算在IT行业迅猛发展&#xff0c;成为企业提升业务效率和创新能力的重要工具。通过云计算&#xff0c;企业能够将数据和应用程序存储在云端的服务器上&#xff0c;实现灵活的资源调配和高效的数据管理。本文将探讨云计算的发展趋…

Win11无法连接Win7的打印机解决方法

win11无法连接win7的打印机怎么解决&#xff1f;在日常的办公中&#xff0c;局域网可以实现文件管理&#xff0c;打印机共享文件打印等功能&#xff0c;但是如果两个机器系统各不同的话&#xff0c;可能有的就会提示无法连接&#xff0c;下面就把基本简单的共享设置方法分享给大…