10121-基于单片机的农业蔬菜大棚温湿度智能监测系统设计(详细设计说明书+源码+protues+原理图)

10121-基于单片机的农业蔬菜大棚温湿度智能监测系统设计(详细设计说明书+源码+protues+原理图)

功能需求:

本次设计需要具体要求以下几点:
○1大棚内的温度和湿度数据用传感器进行实时监测,将数据采集并传输到处理器进行分析。
○2设定温湿度的上下限,当数据超过设定限制时,蜂鸣器会发出警报以提醒管理者及时采取措施。
○3使用LCD显示屏来反馈当前检测的温湿度信息,方便使用者了解大棚内的环境状况,并作出相应的调整。
○4通过对不同植物适宜生长环境的调整,可以提高生产效率和质量,同时降低农业生产成本,为使用者提供更好的管理服务。这种智能化系统设计可使得大棚管理更加便捷、高效,也有助于推动现代农业的发展。

资料摘要:

该系统可以通过传感器采集蔬菜大棚内部的温度、湿度等环境参数,并将这些数据发送到单片机进行处理。通过程序设计,单片机可以根据预设的控制策略自动调节降温、通风等操作,从而实现对蔬菜大棚内部环境的精密控制与管理。此外,该系统还可以配备显示屏、报警器等功能模块,方便用户随时了解蔬菜大棚内部状况并做出相应调整。
使用该系统可以提高蔬菜存活率和生产效率,降低管理成本和风险。同时,也为蔬菜大棚的环境保护和资源节约做出了贡献。因此,智能化监测系统是现代农业生产中不可或缺的重要工具,对于推动农业产业升级、提高农业经济效益有着积极的意义。

资料包含:

1、源码
2、详细设计说明书-20245字
3、搭建过程录屏
4、任务书
5、流程图
6、开题报告

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

#include "reg51.h"
#include "ADC0832.h"
#include "lcd1602.h"
#include "DHT11.h"

sbit k1=P2^5;//按钮
sbit k2=P2^6;
sbit k3=P2^7;
sbit beep=P1^4;//蜂鸣器
sbit jiangwen = P1^0;
sbit shengwen = P1^1;
sbit jiashi = P1^2;
sbit chushi = P1^3;

//========================================
uchar air=0;//空气质量 0-100
uchar alc=0;//酒精检测 0-100
uchar time=0;//系统定时
uchar mode=0;//系统模式,测量、设置
uchar disp1[]=" Control System";
uchar disp2[]="T:00 C S:00%";
uchar disp3[]="  UP T:00 S:00";
uchar disp4[]="DOWN   00   00";
uchar temp1=20,temp2=40,humi1=30,humi2=60;
uchar shidu=0;

//========================================
void disp()//显示阀值
{
	write_string(1,0,"                ");
	write_string(2,0,"                ");

	disp3[7]=temp2/10+0x30;
	disp3[8]=temp2%10+0x30;
	disp3[12]=humi2/10+0x30;
	disp3[13]=humi2%10+0x30;

	disp4[7]=temp1/10+0x30;
	disp4[8]=temp1%10+0x30;
	disp4[12]=humi1/10+0x30;
	disp4[13]=humi1%10+0x30;
	write_string(1,0,disp3);
	write_string(2,0,disp4);
	//设置光标
	switch(mode)
	{

		case 1:write_sfm(1,8);break;
		case 2:write_sfm(1,13);break;
		case 3:write_sfm(2,8);break;
		case 4:write_sfm(2,13);
	}
}
//主函数
void main()
{
	init_1602();//初始化
	disp2[4]=0xdf;

	SCON=0X50;			//设置为工作方式1
	TMOD=0X21;			//设置计数器工作方式2
	TH1=0XFD;			
	TL1=0XFD;
	ES=1;						//打开接收中断
	TR1=1;					//打开计数器

	TH0=0X3C;
	TL0=0XB0;	
	ET0=1;//打开定时器0中断允许
	EA=1;//打开总中断
	TR0=1;//打开定时器
	while(1)
	{
		if(!k1)//设置,确认
		{
			delay_uint(5000);//延时防抖
			if(!k1)
			{
				if(mode<4)
					mode++;
				else
					mode=0;
				if(mode>0)
					disp();
				write_com(0x0e);
				//设置光标
				switch(mode)
				{
	
					case 1:write_sfm(1,8);break;
					case 2:write_sfm(1,13);break;			
					case 3:write_sfm(2,8);break;
					case 4:write_sfm(2,13);
				}
				while(!k1);
			}
		}
		if(mode>0)//设置
		{
			if(!k2)//加
			{
				delay_uint(5000);//延时防抖
				if(!k2)
				{
					switch(mode)
					{
						case 1://温度上限
							if(temp2<99)
								temp2++;
							disp();
							break;
						case 2://湿度上限
							if(humi2<99)
								humi2++;
							disp();
							break;
						case 3://温度下限
							if(temp1<temp2)
								temp1++;
							disp();
							break;
						case 4://湿度下限
							if(humi1<humi2)
								humi1++;
							disp();	
					}
					while(!k2);
				}
			}
			if(!k3)//减
			{
				delay_uint(5000);//延时防抖
				if(!k3)
				{
					switch(mode)
					{

						case 1://温度上限
							if(temp2>temp1)
								temp2--;
							disp();
							break;
						case 2://湿度上限
							if(humi2>humi1)
								humi2--;
							disp();
							break;
						case 3://温度下限
							if(temp1>0)
								temp1--;
							disp();
							break;
						case 4://湿度下限
							if(humi1>0)
								humi1--;
							disp();	
					}
					while(!k3);
				}
			}
		} 
	}
}
//定时器0中断
void Timer0() interrupt 1
{
	uint i=0,a=0;
	if(time<10)//0.5s
		time++;
	else
	{
		time=0;

	disp3[7]=temp2/10+0x30;
	disp3[8]=temp2%10+0x30;
	disp3[12]=humi2/10+0x30;
	disp3[13]=humi2%10+0x30;

	disp4[7]=temp1/10+0x30;
	disp4[8]=temp1%10+0x30;
	disp4[12]=humi1/10+0x30;
	disp4[13]=humi1%10+0x30;

		dht11_recive();//测量温湿度
		shidu=dht11_dat[0];

		disp2[2]=dht11_dat[2]/10+0x30;
		disp2[3]=dht11_dat[2]%10+0x30;
		disp2[9]=shidu/10+0x30;
		disp2[10]=shidu%10+0x30; 





		if(mode==0)//显示
		{
			write_string(1,0,"                ");
			write_string(2,0,"                ");
			write_string(1,0,disp1);
			write_string(2,0,disp2);
		
		//报警
		if((dht11_dat[2]>temp2)||(dht11_dat[2]<temp1)||(shidu>humi2)||(shidu<humi1) )
			beep=0;
		else
		{
			beep=1;
			write_com(0x0c);
		}


		if((dht11_dat[2]>temp2)||(dht11_dat[2]<temp1))
		{
			write_com(0x0e);
			write_sfm(2,3);
		}
		
			if((dht11_dat[2]>temp2))
		{
			jiangwen = 0;
		}else jiangwen = 1;
		
			if((dht11_dat[2]<temp1))
		{
			shengwen = 0;
		}else shengwen = 1;
		
		
			if((shidu>humi2))
		{
			chushi = 0;
		}else chushi = 1;
		
		
			if((shidu<humi1))
		{
			jiashi = 0;
		}else jiashi = 1;
		
		
		
		
		if((shidu>humi2)||(shidu<humi1))
		{
			write_com(0x0e);
			write_sfm(2,10);
		}
		
		
		
		}

	}
	TH0=0X3C;
	TL0=0XB0;
}

作者:cqtianxingkeji

物联沃分享整理
物联沃-IOTWORD物联网 » 10121-基于单片机的农业蔬菜大棚温湿度智能监测系统设计(详细设计说明书+源码+protues+原理图)

发表回复