当前位置:网站首页>51单片机的花卉、农田自动浇水灌溉系统开发,Proteus仿真,原理图和C代码
51单片机的花卉、农田自动浇水灌溉系统开发,Proteus仿真,原理图和C代码
2022-04-23 14:13:00 【蒋宇智】
设计要求
1.设计一种基于51单片机的花卉、农田自动浇水灌溉系统;
2.能够检测土壤湿度,当低于设定的下限值时,启动水泵进行浇水灌溉,并提供相应的声光报警指示;
3.能够通过按键设定湿度上下限值;
4.土壤湿度数据和湿度上下限值通过LCD1602显示屏显示;
5.完成系统元器件选型、电路绘制与C程序编写;
系统概述
自动浇水灌溉系统设计方案,以AT89C51单片机为控制核心,采用模块化的设计方法。
组成部分为:5V供电模块、土壤湿度传感器模块、ADC0832模数转换模块、水泵控制模块、按键输入模块、LCD显示模块和声光报警模块,结构如下。
工作原理为:土壤湿度传感器测出土壤湿度模拟信号,经AD转换器将模拟信号转换成数字信号后传输到51单片机,单片机将土壤湿度数据与设定的上下限值进行比较。
当土壤湿度低于下限时,驱动水泵工作进行灌溉浇水,并提供声光报警。当土壤湿度增加至超过下限时,声光报警关闭,但水泵会继续工作,直到土壤湿度继续增加并超过设定的上限值为止。
用户可通过按键设定湿度上下限值,土壤湿度数据和上下限值数据均通过LCD显示屏实时显示。
原理图
仿真分析
打开Proteus仿真文件,其后缀名为.DSN。双击单片机,加载AutoWater.hex文件(位于Keil C程序文件夹内),运行仿真,结果如下。
由图可知,LCD显示当前测量的土壤湿度(Humidity)为53%,系统预设的湿度上限(H:High的缩写)为60%,下限(L:Low的缩写)为30%,土壤湿度正常,在上下限范围之内。
此时,湿度低报警灯和蜂鸣器处于关闭状态,继电器RL1开关打至下方,水泵处于断电状态。
通过调节滑动变阻器RV2(鼠标点击上下两个红色箭头),改变输入到ADC0832采样通道0的电压大小来模拟土壤湿度的变化。
点击RV2向下的红色箭头,模拟土壤湿度的降低。例如,当土壤湿度从53%降低至23%,低于下限值30%时,红色LED报警灯点亮,蜂鸣器发声,继电器RL1开关打至上方,水泵通电,开始自动浇水,绿色的水泵工作指示灯也被点亮。
点击RV2向上的红色箭头,模拟土壤湿度的增加。
当土壤湿度从23%增加至37%,超过下限时,声光报警停止工作,但水泵会继续工作,直到土壤湿度继续增加到高于上限值为止,过程如下所示。
需要说明的是,水泵停止工作(即:土壤湿度超过上限)后,调节RV2模拟土壤湿度的下降,在下降到上下限范围内时,水泵不会启动,只有土壤湿度继续下降至低于下限时才会启动。
通过按键可以预设湿度的上下限值。
点击“设定”键,进入上下限设置模式,首先是H上限值光标闪烁,此时可以点击加/减键,改变上限值大小。
上限值设置完成后,点击“设定”键,L下限值光标闪烁,同理,点击加/减键,改变下限值大小。
上下限值都设置完成后,再次点击“设定”键,退出上下限设置模式。例如,我们设置湿度上限值H为75%,下限值L为25%,结果如下图所示。
综上所述,仿真运行效果满足设计要求。
部分代码
void main() //主函数
{
Init1602(); //初始化液晶函数
init(); //初始化定时器
init_eeprom(); //开始初始化保存的数据
while(1) //进入循环
{
for(m=0;m<50;m++) //读50次AD值
sum = adc0832(0)+sum; //读到的AD值,将读到的数据累加到sum
temp=sum/50; //跳出上面的for循环后,将累加的总数除以50得到平均值temp
sum=0; //平均值计算完成后,将总数清零
temp = temp*0.390625; //ADC0832存储数据为1个字节,湿度显示范围为0~100,因此1单位湿度=100/256=0.390625
// if(temp<=full_range)
// temp=(temp*100)/full_range;
// else
// temp=100;
if(set==0) //set为0,说明现在不是设置状态
Display_1602(temp,MH,ML);//显示AD数值和报警值
if(temp<ML&&set==0) //湿度值小于报警值
{
flag=1; //打开报警
Relay=0; //继电器触点闭合,水泵工作
LED_R=0; //红灯点亮
}
else if(temp>MH&&set==0) //湿度值大于报警值
{
flag=0; //关闭报警
Relay=1; //继电器触点打开,水泵停止
LED_R=1; //红灯熄灭
}
else
{
flag=0;
LED_R=1; //红灯熄灭
}
Key(); //调用按键函数
}
}
资料内容
(1)基于51单片机花卉、农田自动浇水灌溉系统设计论文;
(2)Proteus仿真文件;
(3)C程序文件;
(4)原理图文件;
(5)Visio流程图文件;
(6)参考资料;
(7)元器件清单;
资料图
重要的事情说一遍!!!
由于51单片机的花卉、农田自动浇水灌溉系统设计是我的原创设计,获取全套资料,
请搜索查看我的【公】(众*)“号”:交院小智
版权声明
本文为[蒋宇智]所创,转载请带上原文链接,感谢
https://blog.csdn.net/JiaoDaBoy/article/details/124328759
边栏推荐
猜你喜欢
使用Executors类快速创建线程池
统信UOS卸载php7.2.24,安装php7.4.27 ;卸载再安装为PHP 7.2.34
MySQL数据库讲解(九)
API Gateway/API 网关(三) - Kong的使用 - 限流rate limiting(redis)
API Gateway/API 网关(二) - Kong的使用 - 负载均衡Loadbalance
线程组ThreadGroup使用介绍+自定义线程工厂类实现ThreadFactory接口
MySQL数据库讲解(七)
Qt界面优化:Qt去边框与窗体圆角化
API Gateway/API 网关(四) - Kong的使用 - 集成Jwt和熔断插件
Installation and use of postman pit
随机推荐
sar命令详解
Nacos uses demo as configuration center (IV)
在电视屏幕上进行debug调试
贷款市场报价利率(LPR)与贷款基准利率介绍
source insight via samba
Tongxin UOS php7 2.3 upgrade to php7.0 two point two four
Man man notes and @ reboot usage of crontab
JumpServer
ArrayList集合基本使用
爬虫练习题(一)
LLVM - 生成加法
grep无法重定向到文件的问题
网页自适应,等比缩放
LLVM - 生成 if-else 以及 PH
js 键值判断
初识STL
man man随记和crontab的@reboot用法
KVM learning resources
Golang 对分片 append 是否会共享数据
基础正则表达式