【Proteus仿真】【51单片机】自动浇花灌溉系统设计

article/2025/9/20 1:07:09

文章目录

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


一、功能简介

本项目使用Proteus8仿真51单片机控制器,使用LCD1602液晶、按键、DS18B20、PCF8591 ADC、土壤湿度传感器、水位传感器、蜂鸣器模块等。

系统运行后,LCD1602显示传感器检测的温度、湿度及水位值;
默认以自动模式运行,若按下K4键切换为手动模式,此时可以
通过K1和K2控制水泵和水箱开关。当再次按下K4键切换为自动
模式;自动模式下,实时检测温度、湿度及水位值,当温度高于
或低于设定阈值,声光报警。当湿度高于上限声光报警,低于下限
且水箱水位高于30%,则开启水泵浇水。否则水箱开始加水,当水箱
水位高于80%,停止加水。
可通过K3键进入阈值设置,K1和K2调节,设置好后可按下K4键返回主
界面。
主要功能如下:
1、温度/湿度检测
2、LCD1602显示温湿度/水位
3、温湿度阈值设置
4、超限声光报警
5、自动/手动浇花灌溉


二、软件设计

/*
作者:嗨小易(QQ:3443792007)
*///系统参数初始化
void sys_parm_init(void)
{sys_ctrl.mode=0;sys_ctrl.temph=30;sys_ctrl.templ=25;sys_ctrl.humih=40;sys_ctrl.humil=20;sys_ctrl.auto_flag=0;	
}//系统开机界面显示
void sys_open_show(void)
{lcd1602_clear();lcd1602_show_string(0,0,"Tp:  C");lcd1602_show_string(7,0,"  -  ");lcd1602_show_string(13,0,"  %");lcd1602_show_string(0,1,"Sd:  %");lcd1602_show_string(7,1,"  -  %");lcd1602_show_string(14,1,"Au");
}//系统数据获取
void sys_data_get(void)
{static u8 i=0;while(1){//温度获取i++;if(i%10==0)sys_ctrl.temp=ds18b20_read_temperture();//湿度获取sys_ctrl.humi=pcf8591_read_adcvalue(1);sys_ctrl.humi=cal_map(sys_ctrl.humi,0,255,0,99);//水位获取sys_ctrl.level=pcf8591_read_adcvalue(0);sys_ctrl.level=cal_map(sys_ctrl.level,0,255,0,99);	break;}	
}//系统数据显示
void sys_data_show(void)
{static u8 i=0;while(1){//温度显示lcd1602_show_nums(3,0,sys_ctrl.temp,2,0);//湿度显示lcd1602_show_nums(3,1,sys_ctrl.humi,2,0);//水位显示lcd1602_show_nums(13,0,sys_ctrl.level,2,0);//温度阈值显示lcd1602_show_nums(7,0,sys_ctrl.templ,2,0);lcd1602_show_nums(10,0,sys_ctrl.temph,2,0);//湿度阈值显示lcd1602_show_nums(7,1,sys_ctrl.humil,2,0);lcd1602_show_nums(10,1,sys_ctrl.humih,2,0);	//温度下限闪烁显示if(sys_ctrl.mode==1){i++;if(i%100!=0)lcd1602_show_string(7,0,"  ");			}//温度上限闪烁显示else if(sys_ctrl.mode==2){i++;if(i%100!=0)lcd1602_show_string(10,0,"  ");			}//湿度下限闪烁显示else if(sys_ctrl.mode==3){i++;if(i%100!=0)lcd1602_show_string(7,1,"  ");			}//湿度上限闪烁显示else if(sys_ctrl.mode==4){i++;if(i%100!=0)lcd1602_show_string(10,1,"  ");			}delay_ms(1);//手动状态显示if(sys_ctrl.auto_flag)lcd1602_show_string(14,1,"SD");else lcd1602_show_string(14,1,"Au");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=0;}//在设置模式下,加else if(key==KEY1_PRESS){switch(sys_ctrl.mode){case 1://温度下限 sys_ctrl.templ++;if(sys_ctrl.templ>99)sys_ctrl.templ=0;break;case 2://温度上限 sys_ctrl.temph++;if(sys_ctrl.temph>99)sys_ctrl.temph=0;break;case 3://湿度下限 sys_ctrl.humil++;if(sys_ctrl.humil>99)sys_ctrl.humil=0;break;case 4://湿度上限 sys_ctrl.humih++;if(sys_ctrl.humih>99)sys_ctrl.humih=0;break;}//手动模式,开关水泵if(sys_ctrl.auto_flag==1)SB_PIN=!SB_PIN;	}//在设置模式下,减else if(key==KEY2_PRESS){switch(sys_ctrl.mode){case 1://温度下限 sys_ctrl.templ--;if(sys_ctrl.templ<0)sys_ctrl.templ=99;break;case 2://温度上限 sys_ctrl.temph--;if(sys_ctrl.temph<0)sys_ctrl.temph=99;break;case 3://湿度下限 sys_ctrl.humil--;if(sys_ctrl.humil<0)sys_ctrl.humil=99;break;case 4://湿度上限 sys_ctrl.humih--;if(sys_ctrl.humih<0)sys_ctrl.humih=99;break;}//手动模式,开关水箱if(sys_ctrl.auto_flag==1)SX_PIN=!SX_PIN;	}else if(key==KEY4_PRESS){if(sys_ctrl.mode!=0)//确定sys_ctrl.mode=0;else//自动/手动切换{sys_ctrl.auto_flag=!sys_ctrl.auto_flag;//自动模式下,关闭水箱水泵if(sys_ctrl.auto_flag==0){SX_PIN=1;SB_PIN=1;	}		}	}
}//系统功能控制
void sys_fun_ctrl(void)
{//自动模式下控制if(sys_ctrl.auto_flag==0){//如果温度高于上限或低于下限,声光报警if(sys_ctrl.temp>sys_ctrl.temph || sys_ctrl.temp<sys_ctrl.templ){LED=0;beep_alarm(100,20);}//温度正常,声光报警取消elseLED=1;		//如果湿度高于上限,声光报警if(sys_ctrl.humi>sys_ctrl.humih){LED=0;beep_alarm(100,20);		}//如果湿度低于下限,声光报警else if(sys_ctrl.humi<sys_ctrl.humil){LED=0;beep_alarm(100,20);//当水箱有水,水泵打开浇水,关闭水箱加水if(sys_ctrl.level>LEVEL_MIN_VALUE){SB_PIN=0;SX_PIN=1;	}//当水箱水不够,水泵停止浇水,开启水箱加水else{SB_PIN=1;SX_PIN=0;	} }//如果湿度正常,声光报警关闭,水泵停止浇水else {LED=1;SB_PIN=1;			}//如果水箱水不够,开始加水if(sys_ctrl.level<LEVEL_MIN_VALUE)SX_PIN=0;//如果水箱水足够,停止加水else if(sys_ctrl.level>LEVEL_MAX_VALUE)SX_PIN=1;	}}//应用控制系统
void appdemo_show(void)
{u8 i=10;sys_parm_init();//系统参数初始化lcd1602_init();ds18b20_init();//读取温度数据,等待稳定while(i--){sys_ctrl.temp=ds18b20_read_temperture();//湿度获取sys_ctrl.humi=pcf8591_read_adcvalue(1);sys_ctrl.humi=cal_map(sys_ctrl.humi,0,255,0,99);//水位获取sys_ctrl.level=pcf8591_read_adcvalue(0);sys_ctrl.level=cal_map(sys_ctrl.level,0,255,0,99);delay_ms(100);	}sys_open_show();//系统开机界面显示while(1){	sys_data_get();//系统数据获取sys_data_show();//系统数据显示sys_data_set();//系统数据设置sys_fun_ctrl();//系统功能控制}
}

三、实验现象

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

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


联系作者

专注于51单片机、STM32、国产32、DSP、Proteus、ardunio、ESP32、物联网软件开发,PCB设计,视频分享,技术交流。


http://chatgpt.dhexx.cn/article/aHyZovmh.shtml

相关文章

自动浇花系统的电路分析

目录 ​​​电源电路 复位电路和晶振 UCB转TTL ​​​电源电路 首先是电源电路&#xff0c;我们来看电源电路的原理图。 首先忽略D、D-&#xff0c;我们先来看电源本身&#xff0c;除了两头的接地和VCC&#xff08;这是USB接口的特性&#xff09;&#xff0c;我们观察到右…

51单片机wifi物联网的浇花控制系统设计

硬件设计 浇花控制系统采用51单片机与LCD液晶显示屏来实现&#xff0c;利用温度、湿度传感器及相应的显示、驱动执行机构、报警装置等实现温室作物生长环境控制器的设计。 硬件电路主要由51单片机最小系统lcd1602显示屏蜂鸣器报警模块设置按键微型水泵adc0832模数转换模…

毕业设计 远程智能浇花灌溉系统 - stm32 单片机 嵌入式 物联网

文章目录 0 前言1 简介2 主要器件3 实现效果4 设计原理5 部分关键代码5 最后 0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点&#xff0c;往往达不到毕业答辩的要求&#xff0c;这两年不断有学弟学妹告诉学…

基于51单片机的智能浇花系统(可做毕设)

基于51单片机的智能浇花系统&#xff08;可做毕设&#xff09; 一、系统介绍二、仿真展示三、实物展示四、仿真过程五、代码1、ADC08322、LCD16023、按键4、水泵5、温湿度6、定时器7、main.c 五、完整工程 对LCD1602原理和操作掌握不好的可以看这篇&#xff1a; 快速掌握——LC…

毕设--自动浇花系统的设计

目录 毕设--自动浇花系统的设计1、作品实物图2、PCB原理图3、元器件清单4、土壤温湿度采集与显示5、硬件电路设计6、程序源码7、资料获取 毕设–自动浇花系统的设计 注&#xff1a;本毕设资源可在微信公众号&#xff1a;“Kevin的学习站” 中获取&#xff01; 1、作品实物图 2、…

单片机毕业设计 自动浇花灌溉系统设计

文章目录 1 简介2 主要器件3 实现效果4 设计原理5 关键代码 1 简介 Hi&#xff0c;大家好&#xff0c;今天向大家介绍一个学长做的单片机项目 基于单片机的自动浇花灌溉系统设计 大家可用于 课程设计 或 毕业设计 选题指导&#xff0c;项目分享&#xff1a; https://gitee…

基于android智能浇花装置,一种基于WiFi通讯远程控制的智能浇花装置的制作方法...

本实用新型涉及自动浇水装置技术领域&#xff0c;具体涉及一种基于WiFi 通讯远程控制的智能浇花装置。 背景技术&#xff1a; 花卉作为一种极具观赏性的植物&#xff0c;在室内和室外广泛种植。上班族工作紧张&#xff0c;空闲时间较少&#xff0c;长期不在家时需要花草被照料。…

基于51单片机的自动浇花系统

目录 一、项目需求 二、仿真 三、程序 四、资料清单 资料下载地址&#xff1a;基于51单片机的自动浇花系统 一、项目需求 1、自动检测土壤湿度、温度、光照强度&#xff1b; 2、土壤湿度过低驱动水泵进行浇花&#xff1b; 3、LCD1602显示当前土壤湿度、温度、光照强度…

【IoT开发】基于机智云物联网的智能浇花教程

摘要:随着近年来物联网技术的发展,相关的技术已经广泛应用于人们的生产和生活中。文章针对长期无人在家时花卉植物的浇水问题,设计了一套基于物联网的智能浇花系统。系统采用STM32与51增强型单片机作为控制器,esp8266物联网模块作为通信设备,底层采用MQTT协议,连接到物联网云平…

条件概率的链式法则

条件概率 条件概率是指事件A在事件B发生的条件下发生的概率。条件概率表示为&#xff1a;P&#xff08;A|B&#xff09;&#xff0c;读作“A在B发生的条件下发生的概率”。若只有两个事件A&#xff0c;B&#xff0c;那么&#xff0c; xx 事件发生时 yy 事件发生的概率: P(yy|x…

链式法则总结

链式法则&#xff08;chain rule&#xff09;微积分中求导法则&#xff0c;用于求复合函数的导数&#xff1b; 链式法则应用广泛&#xff0c;比如神经网络中的反向传播算法就是已链式法则为基础演变的&#xff1b;接下来先说说链式法则的概念然后通过链式法则的两种形式学习链式…

【深度学习数学基础之线性代数】研究使用链式法则进行反向传播的求导算法

链式法则 简单的说链式法则就是原本y对x求偏导&#xff0c;但是由于过程较为复杂&#xff0c;我们需要将函数进行拆分&#xff0c;通过链式进行分别求导&#xff0c;这样会使整个计算更为简单。 假设f k ( a b c ) f k(a bc)fk(abc) 通俗来说&#xff0c;链式法则表明&a…

微积分-链式法则

来看复合函数如何求导&#xff1a; 现实中要解决的问题&#xff0c;大多可以总结为这三种函数的组合 减法可以看做是加上某个函数的-1倍 除法可以转化为乘法 先来看加法 两个函数的和的导数&#xff0c;就是他们导数的和 两个函数sin&#xff08;x&#xff09;和 x 2 x…

求导——链式法则

参考文献&#xff1a;https://www.math.hmc.edu/calculus/tutorials/multichainrule/

【深入浅出】条件概率的链式法则:定义、公式与应用

前言 在概率论的研究中&#xff0c;条件概率是一种非常重要的概念。当多个随机事件发生时&#xff0c;我们有时需要考虑它们同时发生的概率。条件概率的链式法则就是一种用于计算多个随机事件同时发生的概率的方法。本文将会介绍条件概率的链式法则的定义、公式以及应用。 定…

深度学习基础6(微分,偏导,梯度,链式法则)

微积分 如下图所示&#xff0c;内接多边形的等长边越多&#xff0c;就越接近圆。 这个过程也被称为逼近法&#xff08;method of exhaustion&#xff09;。 事实上&#xff0c;逼近法就是**积分&#xff08;integral calculus&#xff09;**的起源 微积分的另一支&#xff0c…

浅谈神经网络之链式法则与反向传播算法

反向传播是训练神经网络最重要的算法&#xff0c;可以这么说&#xff0c;没有反向传播算法就没有深度学习的今天。但是反向传播算法涉及一大堆数据公式概念。所以我们了解导数计算过程以及要介绍的新的复合函数多层求导计算过程。 链式法则 简单的说链式法则就是原本y对x求偏…

链式法则-梯度更新公式推导(手写笔记)

虽然以前学过导数、偏导、梯度之类的相关知识&#xff0c;但时间久远导致总感觉晕晕乎乎的&#xff0c;于是自己推导一下具有一个隐藏层的神经网络的梯度反向传播公式&#xff0c;希望对大家有帮助。 笔记中指出了为什么会存在梯度消失以及梯度爆炸现象。 梯度消失 主要是由…

微积分拾遗——链式法则

链式法则&#xff08;chain rule&#xff09;微积分中求导法则&#xff0c;用于求复合函数的导数&#xff1b; 链式法则应用广泛&#xff0c;比如神经网络中的反向传播算法就是已链式法则为基础演变的&#xff1b;接下来先说说链式法则的概念然后通过链式法则的两种形式学习链式…