【Proteus仿真】【Arduino单片机】蔬菜大棚温湿度控制系统设计

news2024/11/28 0:55:05

文章目录

  • 一、功能简介
  • 二、软件设计
  • 三、实验现象
  • 联系作者


一、功能简介

本项目使用Proteus8仿真Arduino单片机控制器,使用PCF8574、LCD1602液晶、DHT11温湿度传感器、按键、继电器、蜂鸣器、加热、水泵电机等。
主要功能:
系统运行后,LCD1602显示DHT11温湿度采集值,
当按下K3键进入阈值设置,第一次进入温度上限,
第二次进入温度下限,第三次进入湿度上限,
第四次进入湿度下限,如此循环。可通过K1和K2键调节阈值。
设置好阈值后,按下K4键确认并退出,返回主界面。
若采集温度高于上限,开启风扇降温,声光报警。
若采集温度低于下限,开启加热,声光报警。
若采集湿度高于上限,关闭水泵,声光报警。
若采集湿度低于下限,开启水泵,声光报警。
若温湿度正常,关闭风扇、加热、水泵及声光报警。


二、软件设计

/*
作者:嗨小易(QQ:3443792007)

*/

/
//系统数据显示
void sys_data_show(void)
{
  while(1)
  {
    //正常模式显示
    if(sys_ctrl.mode==0)
    {
      lcd1602_show_nums(5,0,sys_ctrl.temp,2,0);
		  lcd1602_show_nums(5,1,sys_ctrl.humi,2,0);
    }
    //设置模式显示
    else 
    {
      switch(sys_ctrl.mode)
      {
        case 1://温度上限
          lcd1602_show_nums(10,0,sys_ctrl.temph,2,0);
          break;
        case 2://温度下限
          lcd1602_show_nums(10,0,sys_ctrl.templ,2,0);
          break;
        case 3://湿度上限
          lcd1602_show_nums(10,0,sys_ctrl.humih,2,0);
          break;
        case 4://湿度下限
          lcd1602_show_nums(10,0,sys_ctrl.humil,2,0);
          break;
      }
    }

    break;
  }
}

//系统数据设置
void sys_data_set(void)
{
  u8 key=0;

  key=key_scan(0);
  //模式设置
	if(key==KEY3_PRESS)
	{
		sys_ctrl.mode++;
		if(sys_ctrl.mode>=5)sys_ctrl.mode=1;
		lcd1602_clear();
		switch(sys_ctrl.mode)
		{
			case 1://温度上限设置显示界面 
				lcd1602_show_string(0,0,"TempH Set:");
				break;
			case 2://温度下限设置显示界面 
				lcd1602_show_string(0,0,"TempL Set:");
				break;
			case 3://湿度上限设置显示界面 
				lcd1602_show_string(0,0,"HumiH Set:");
				break;
			case 4://湿度下限设置显示界面 
				lcd1602_show_string(0,0,"HumiL Set:");
				break;
		}			
	}
	//确定
	else if(key==KEY4_PRESS)
	{
		sys_ctrl.mode=0;
		sys_open_show();	
	}
	//温度上限设置
	while(sys_ctrl.mode==1)
	{
		if(key==KEY1_PRESS)//加
		{
			sys_ctrl.temph+=1;
			if(sys_ctrl.temph>=80)sys_ctrl.temph=0;		
		}
		else if(key==KEY2_PRESS)//减
		{
			sys_ctrl.temph-=1;
			if(sys_ctrl.temph<=0)sys_ctrl.temph=80;				
		}
		
		break;
	}
	//温度下限设置
	while(sys_ctrl.mode==2)
	{  	
		if(key==KEY1_PRESS)//加
		{
			sys_ctrl.templ+=1;
			if(sys_ctrl.templ>=40)sys_ctrl.templ=0;			
		}
		else if(key==KEY2_PRESS)//减
		{
			sys_ctrl.templ-=1;
			if(sys_ctrl.templ<=0)sys_ctrl.templ=40;				
		}
		
		break;			
	}
	//湿度上限设置
	while(sys_ctrl.mode==3)
	{  	
		if(key==KEY1_PRESS)//加
		{
			sys_ctrl.humih+=1;
			if(sys_ctrl.humih>=100)sys_ctrl.humih=0;		
		}
		else if(key==KEY2_PRESS)//减
		{
			sys_ctrl.humih-=1;
			if(sys_ctrl.humih<=0)sys_ctrl.humih=99;				
		}
		
		break;				
	}
	//湿度下限设置
	while(sys_ctrl.mode==4)
	{  	
		if(key==KEY1_PRESS)//加
		{
			sys_ctrl.humil+=1;
			if(sys_ctrl.humil>=100)sys_ctrl.humil=0;			
		}
		else if(key==KEY2_PRESS)//减
		{
			sys_ctrl.humil-=1;
			if(sys_ctrl.humil<=0)sys_ctrl.humil=99;				
		}
		
		break;			
	}
}

//系统功能控制
void sys_fun_ctrl(void)
{
  //正常模式下
  if(sys_ctrl.mode==0)
  {
    //如果温度高于上限,加热关闭,风扇开启,声光报警
		if(sys_ctrl.temp>=sys_ctrl.temph)
		{
			JW_PIN_OUT(0);JR_PIN_OUT(1);
			beep_alarm(100,1000);
		}
		//如果温度低于下限,加热开启,风扇关闭,声光报警
		else if(sys_ctrl.temp<=sys_ctrl.templ)
		{
			JW_PIN_OUT(1);JR_PIN_OUT(0);
			beep_alarm(100,1000);
		}
		//如果温度正常,加热关闭,风扇关闭,声光关闭
		else
		{
			JW_PIN_OUT(1);JR_PIN_OUT(1);
		}
		
		//如果湿度高于上限,水泵关闭,声光报警
		if(sys_ctrl.humi>=sys_ctrl.humih)
		{
			SB_PIN_OUT(1);
			beep_alarm(100,1000);
		}
		//如果湿度低于下限,水泵打开,声光报警
		else if(sys_ctrl.humi<=sys_ctrl.humil)
		{
			SB_PIN_OUT(0);
			beep_alarm(100,1000);
		}
		//如果湿度正常,水泵关闭,声光关闭
		else 
		{
			SB_PIN_OUT(1);
		}
  }
}





三、实验现象

B站演示视频:https://space.bilibili.com/444388619

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

联系作者

视频地址:https://space.bilibili.com/444388619/video
专注于51单片机、STM32、国产32、DSP、Proteus、arduino、ESP32、物联网软件开发,PCB设计,视频分享,技术交流。

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

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

相关文章

TikTok新媒体战略:数字时代的社交营销

引言 随着数字时代的来临&#xff0c;社交媒体已成为企业推广和品牌建设的关键平台之一。而在众多社交媒体中&#xff0c;TikTok以其独特的短视频形式和庞大的用户基数吸引了无数企业和个人创作者。本文将深入探讨TikTok新媒体战略&#xff0c;探讨在数字时代如何利用这一平台进…

距离向量路由协议——RIP

目录 动态路由动态路由简介为什么需要动态路由动态路由基本原理路由协议的分类 距离向量路由协议RIPv1 VS RIPv2RIP简介RIPv1的主要特征RIPv1的基本配置 VS RIPv2的基本配置RIP配置案例被动接口单播更新使用子网地址 动态路由 动态路由简介 为什么需要动态路由 如果采用静态…

3.3VPWM转24VPWM电路

一、MOS管导通原理。 MOS管的两个重要参数 VGS(th)&#xff1a;开启电压 VGS(off)&#xff1a;预夹断电压 VDS(max)漏源破坏电压 1、MOS管&#xff1a; 当0<VGS<VGS(th),MOS管关断。 当VGS>VGS(th)&#xff0c;VDS>0&#xff0c;NMOS管导通。 VGDVGS-VDS&#xff…

Python实现WOA智能鲸鱼优化算法优化LightGBM回归模型(LGBMRegressor算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 鲸鱼优化算法 (whale optimization algorithm,WOA)是 2016 年由澳大利亚格里菲斯大学的Mirjalili 等提…

超全超实用行业解决方案合集,覆盖十大行业数据应用需求

现代企业面对复杂的业务需求&#xff0c;对数据分析的需求日益增加。 从实时销售到市场趋势&#xff0c;从客户行为到产品优化&#xff0c;每个环节都依赖于数据支持。然而&#xff0c;传统的数据分析平台常分散在不同系统和团队中&#xff0c;形成数据孤岛&#xff0c;降低了…

Python实现AI助手

目录 1.介绍 2.准备工作 (1)登录百度智能云 (2)创建应用 (3) 获取Key 3.代码实现 4.效果展示 1.介绍 本文将介绍使用python调用百度云千帆大语言模型的API实现一个简单的AI助手,并且将在本文的第三部分贴出完整源码,供学习交流! 如果你觉得本篇文章对你有用,希望你动动宝…

单片机毕设实物买的成品,论文是自己查资料和照着实物写的

单片机毕设实物买的成品&#xff0c;论文是自己查资料和照着实物写的&#xff0c;算学术不端吗&#xff1f; 很多人的想法可能是这样的&#xff1a; 一般来说&#xff0c;毕业论文是独立完成的学术研究&#xff0c;需要表明作者自己的思考和研究成果&#xff0c;应该包括自己的…

2020年09月 Scratch(四级)真题解析#中国电子学会#全国青少年软件编程等级考试

Scratch等级考试(1~4级)全部真题・点这里 一、单选题(共15题,每题2分,共30分) 第1题 执行下面程序,输入4和7后,角色说出的内容是? A:4,7 B:7,7 C:7,4 D:4,4 答案:B 第2题 执行下面程序,输出是? A:大学 中庸 孟子 论语 B:论语 大学 孟子 中庸 C:大…

steam游戏搬砖新手最容易掉的五大坑

steam搬砖&#xff0c;月入5-8K 进入任何行业&#xff0c;起初都可能看起来很简单&#xff0c;但要稳定获得利润&#xff0c;需要一些努力和理解行业内的思维逻辑。steam搬砖项目有两条路可以选择&#xff1a;一是通过不断踩坑和试错来积累经验&#xff1b;二是进行知识付费&am…

python+feon有限元分析|feon安装

目录 1、查找 2、下载 3、解压 4、安装 Feon是湖北工业大学土木建筑与环境学院教师裴尧尧基于Python开发的一个开源免费的有限元计算框架。这是一个致力于有限元编程教学和有限元理论研究的框架&#xff0c;上手快&#xff0c;可扩展性强&#xff0c;代码开源。 1、查找 …

1998-2021年全国各地级市PM2.5平均浓度数据

1998-2021年全国各地级市PM2.5平均浓度数据 1、时间&#xff1a;1998-2021年 2、指标&#xff1a;省、省代码、市、市代码、年份、均值、总和、最小值、最大值、标准差 3、来源&#xff1a;Washington university Atmospheric Composition Analysis Group 4、范围&#xff…

【JMeter】运行方式

第一种&#xff1a; 使用GUI 操作&#xff1a; 在JMeter界面菜单导航上点击运行按钮 一般用作创建TestPlan和调试脚本增加java堆空间来满足测试环境 第二种&#xff1a;使用CLI(Command Line) 性能测试一般请求量比较大&#xff0c;为了节省资源 CLI参数用法&#xff1a; 字段…

Java开发者的Python快速进修指南:自定义模块及常用模块

自定义模块 我来举一个在Java开发中常用的开发方式作为例子。在我们进行项目开发时&#xff0c;通常会在项目的结构中创建一个util包&#xff0c;用于存放一些工具类。同样&#xff0c;Python也可以采用类似的方式来组织代码结构&#xff0c;让大家更容易理解。 在同目录下 如果…

数据中台具体是怎么解决数据孤岛的?_光点科技

在数字化时代&#xff0c;数据已成为企业的核心资产。然而&#xff0c;由于历史遗留问题、部门壁垒等因素&#xff0c;很多企业面临着“数据孤岛”的问题。数据孤岛是指在一个组织内&#xff0c;数据被分散在不同的系统中&#xff0c;彼此隔离&#xff0c;不能有效整合和利用。…

GWAS 分析模型 | FaST-LMM

GWAS 分析模型 | FaST-LMM FaST-LMM (Factored Spectrally Transformed Linear Mixed Models) 是一个用于进行全基因组关联分析&#xff08;GWAS&#xff09;的模型。与标准混合线性模型相比&#xff0c;FaST-LMM 通过对遗传相似性矩阵进行单次谱分解来减少计算资源消耗并提升运…

智慧城市交通大屏|助力解决城市交通问题

2017年起&#xff0c;数字孪生连续三年被Gartner列入“未来科技十大趋势”&#xff0c;由此可见数字孪生技术正屹立在数字化发展的风口之中。 数字孪生作为物理世界的数字映射&#xff0c;将流程、物体的信息利用数字技术实时映射到系统中&#xff0c;可以对某个设备、某个企业…

vivado产生报告阅读分析25-复杂性报告

对于顶层设计和 / 或包含 1000 个以上叶节点单元的层级单元 &#xff0c; 复杂性报告会显示每个叶节点单元类型的“ Rent Exponent” &#xff08; Rent 指数 &#xff09; 、“ Average Fanout ” &#xff08; 平均扇出 &#xff09; 和分布。 Rent 指数是指在使用最小割 …

Ubuntu+Tesla V100环境配置

系统基本信息 nvidia-smi’ nvidia-smi 470.182.03 driver version:470.182.03 cuda version: 11.4 查看系统体系结构 uname -aUTC 2023 x86_64 x86_64 x86_64 GNU/Linux 下载miniconda https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/?CM&OA https://mi…

无效的目标发行版: 21 和springboot爆错

目录 问题描述 原因分析&#xff1a; 问题描述 springboot爆红 调整一下这个&#xff1a;把这里的version调低一点应该就可以了 无效的目标发行版: 21 调整一下这个把这里的Java version调整一下&#xff0c;我是调整到1.8&#xff08;其他没有试过&#xff09; 原因分析&a…

数据结构 / day05 作业

1. 双向循环链表作图 双向循环链表节点创建 双向循环链表节点头部插入 双向循环链表节点尾插 双向循环链表节点头部删除 双向循环链表节点尾部删除 2.思维导图