基于51单片机农业土壤湿度监测及自动灌溉系统设计

news/2024/12/5 12:50:39/

基于51单片机农业土壤湿度监测及自动灌溉系统设计

    • 1开发环境
    • 2 功能说明介绍
    • 3 程序
      • 3.1工程文件
      • 3.2代码
    • 4 资料清单

1开发环境

仿真图:proteus8.9以上

程序代码:KEIL4/KEIL5

原理图/PCB:AD

设计编号:A0002

(代码+仿真+原理图+报告+视频讲解)

讲解视频

2 功能说明介绍

基于51单片机土壤湿度检测及盆栽自动浇花系统设计
由STC89C52单片机+ADC0832+LCD1602液晶+yl-69土壤湿度传感器+5V抽水电机+按键+蜂鸣器构成。

具体功能:
1、液晶第一行显示实际湿度,液晶第二行显示湿度上限值与湿度下限值;

2、按键说明:减键、加键、设置键。

3、可以通过按键设置湿度上下限报警范围。

4、当湿度低于下限值时,打开水泵进行抽水且声光报警,当湿度高于上限值时,自动关闭水泵停止抽水。

开始仿真

1.开始仿真,第一行显示测试到的湿度,第二行SH设置的高阈值,SL设置的低阈值,蜂鸣器不报警,水泵不工作。

img

2.通过滑动变阻器改变测试到的湿度值

img

3.按下设定键,高阈值闪烁,可以通过按键加减改变高阈值

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V2Y6UKN4-1670140003310)(https://picturebed-1300424929.cos.ap-nanjing.myqcloud.com/typora/202212041533063.png)]img

4.湿度低于报警低阈值后,蜂鸣器报警,打开水泵进行抽水且声光报警,当湿度高于上限值时,自动关闭水泵停止抽水。

img

3 程序

3.1工程文件

img

3.2代码

img

主函数


/***************主函数*****************/void main(){​	init_1602();			  //1602液晶初始化​	time_init();				//初始化定时器 ​	while(1)​	{​		key();					//独立按键程序​		if(key_can < 10)​		{​			key_with();			//按键按下要执行的程序​		}​		if(flag_300ms == 1)​		{		​			flag_300ms = 0;	 ​			clock_h_l();	 //报警函数 ​			if(beep == 1)​			{​				shidu = Adc0832(0);	//读出湿度​				shidu = 99 - shidu * 99 / 255;​			}​			if(menu_1 == 0)​			{​				write_sfm2(1,9,shidu);		  //显示湿度等级​			}​		} ​		delay_1ms(1);​	}}

该主程序流流程图是硬件初始化之后,设定好数值,然后采集湿度样本,把湿度样本传给单片机之后,单片机系统处理该湿度数值,判断湿度值是不是在设定值范围内,如果高于湿度值,停止灌溉,假如低于湿度值,返回到湿度采样,再次判断湿度值,直到达到湿度值结束。主程序流程图如图4-1所示。img

4 资料清单

img
下载方式,见文章最开头的视频


http://www.ppmy.cn/news/434635.html

相关文章

CANopen SDO下载

文章目录 CANopen SDO 下载SDO下载协议SDO下载启动协议SDO分段下载协议参考 CANopen SDO 下载 CANopen SDO下载分为快速&#xff08;expedited&#xff09;和正常&#xff08;normal&#xff09;两种&#xff0c;平时我们写对象字典基本都在用SDO快速下载&#xff08;适用于写…

English Learning - L3 综合练习 7 TED-Living Beyond the Limits 2023.06.14 周三

English Learning - L3 综合练习 7 TED-Living Beyond the Limits 2023.06.14 周三 句 1扩展 go 句 2句 3句 4 - 6句 7-8句 9 - 10句 11扩展 detour 句 12 -13句 14扩展生词 句 15 -16句 17 -18扩展 patchwork 句 18句 19扩展生词 句 20句 21扩展生词 句 22句 23句 24句 25 -26…

项目中FastJSON 设置PropertyNamingStrategy不生效

首先了解PropertyNamingStrategy 有四种序列化方式。 CamelCase策略&#xff0c;Java对象属性&#xff1a;personId&#xff0c;序列化后属性&#xff1a;persionId – 实际只改了首字母 大写变小写 PascalCase策略&#xff0c;Java对象属性&#xff1a;personId&#xff0c;序…

理解命令行: 一种强大的IT工具

理解命令行: 一种强大的IT工具 在当今数字化时代&#xff0c;计算机已经成为我们生活中不可或缺的一部分。作为IT从业者或计算机爱好者&#xff0c;了解和掌握各种工具和技术是至关重要的。而其中一个强大而受欢迎的工具就是命令行。 什么是命令行&#xff1f; 命令行是一种通…

京东架构师复盘2022最新最全最实用2340页面试题jvm+spring+redis+MQ+微服务PDF

题库第2版 包括 Java 集合、JVM、多线程、并发编程、设计模式、Spring全家桶、Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、MongoDB、Redis、MySQL、RabbitMQ、Kafka、Linux、Netty、Tomcat、Python、HTML、CSS、Vue、React、JavaScript、Android 大数据、阿…

python模拟安卓手机点击,支付宝打年兽,未完待续

环境 windows 10&#xff0c;python3,adb import subprocess import time # 试试中文变量名# 变量 adb_help adb help adb_connect adb connect adb_getevent adb shell getevent adb_max_x adb shell getevent -p | find "0035" adb_max_y adb shell getevent…

Ansible源码学习(一)

一、背景说明 基于Ansible1.1源码学习 二、目录结构 ansible核心目录 ansible ├─bin # 入口命令 │ ├─ansible │ ├─ansible-doc │ ├─ansible-playbook │ ├─ansible-pull ├─lib # 核心代码 │ └─ansible │ ├─callback_plugins …

Leetcode 2340. Minimum Adjacent Swaps to Make a Valid Array [Python]

Greedy 找到最靠左的最小数字&#xff0c;找到最靠右的最大数字&#xff0c;查看最小数字往左边需要挪动几次&#xff08;假设为n次&#xff09;&#xff0c;同理&#xff0c;查看最大数字往右边需要挪动几次&#xff08;假设为m次&#xff09;。如果两者会在挪动过程中见面&am…