基于51单片机智能大棚浇花花盆浇水灌溉补光散热设计

一.硬件方案

本设计通过光敏电阻检测光照强度,然后A/D模块PCF8591处理后,将光照强度值实时显示在液晶上,并且可以按键控制光照的强度值,当光照低于设定的阈值,1颗白色高亮LED灯亮进行补光,光照高于设定的阈值,就不用管。通过DS18B20检测温度值,并且实时显示在1602液晶上,并且可以通过按键设定温度值,当温度低于设定值时,通过一颗黄色高亮LED灯模拟。
主要由STC89C52单片机、LCD1602液晶显示、光照检测、土壤湿度传感器、A/D采样PCF8591、风扇控制、继电器控制、补光灯、补温灯、按键及电源组成;

二.设计功能

(1)通过光敏电阻检测光照强度,然后A/D模块PCF8591处理后,将光照值实时显示在液晶上,按键可以设置光照阈值。当光照低于设定的阈值,高亮LED灯亮进行补光,否则关闭。
(2)通过DS18B20检测温度值,实时显示在1602液晶上,可以通过按键设定温度阈值,当温度低于设定值时,补温灯打开,否则关闭;当温度超过设定值时,风扇旋转。
(3)通过土壤湿度传感器检测土壤的湿度,将湿度值显示在液晶上,按键设置湿度阈值,当土壤湿度小于设定的阈值,继电器打开,继电器可以外接水泵;否则继电器不动作。

三.设计原理图

(1)原理图主要采用AD软件进行设计,如图:
在这里插入图片描述

(2)PCB图如下:
在这里插入图片描述

四.软件设计

主程序源码

void main (void)
{     
	unsigned char midval;             
	Init_Timer0();

	LCD_Init();           //初始化液晶
	DelayMs(20);          //延时有助于稳定
	LCD_Clear();          //清屏

	led_l = 0;relay = 0;led_b = 0;fan = 0; //上电检测下 方便检测硬件
	DelayMs(200);  
	led_l = 1;relay = 1;led_b = 1;fan = 1;

	sprintf(disdat,"L:%2d R:%2d T:%2d C",Lval,Rval,distem);//打印电压电流值
	LCD_Write_String(0,0,disdat);//显示
	sprintf(disset," L:%2d R:%2d T:%2d",(unsigned int)setLval,(unsigned int)setRval,(unsigned int)setTval);//打印电压电流值
	LCD_Write_String(0,1,disset);
	while (1)         //主循环
	{		
		

		key(); //按键处理程序
		if(readADCFlag == 1)		//定时读取adc
		{
			midval=ReadADC(1);		//转换的结果,在下次,才能读出
			Lv=5.15-(float)midval*5.15/255;		//光照
			Lval  = (unsigned int )(Lv * 100 )/5.16;
			DelayMs(10);          //延时有助于稳定
			midval=ReadADC(0);				//读取AD检测到的 光敏地值	
			Tv=5.15-(float)midval*5.15/255;		//光照
			Rval  = (unsigned int )(Tv * 100 )/5.16;
			sprintf(disdat,"L:%2d R:%2d T:%2d C",Lval,Rval,distem);//打印电压电流值
			LCD_Write_String(0,0,disdat);//显示
			LCD_Write_Char(14,0,0XDF) ;
			readADCFlag = 0 ;

			sprintf(disset," L:%2d R:%2d T:%2d ",(unsigned int)setLval,(unsigned int)setRval,(unsigned int)setTval);//打印电压电流值
			LCD_Write_String(0,1,disset);
			if(SetFlag == 1)	//进入设置
			{
				LCD_Write_Char(0,1,'S') ;		//显示S
				LCD_Write_Char(5,1,' ') ;
				LCD_Write_Char(10,1,' ') ;
			}
			else if(SetFlag == 2)
			{
				LCD_Write_Char(0,1,' ') ;
				LCD_Write_Char(5,1,'S') ;  //显示S
				LCD_Write_Char(10,1,' ') ;
			}
			else if(SetFlag == 3)
			{
				LCD_Write_Char(0,1,' ') ;
				LCD_Write_Char(5,1,' ') ;  //显示S
				LCD_Write_Char(10,1,'S') ;
			}
			else
			{
				LCD_Write_Char(0,1,' ') ;
				LCD_Write_Char(5,1,' ') ;  //显示S
				LCD_Write_Char(10,1,' ') ;
			}
			if(Lval <= setLval)		 //光照对比
			{
			 	led_l = 0;		   //打开led
			}
			else
			{
				led_l = 1;		   //关闭led
			}
			if(Rval <= setRval)		 //土壤对比
			{
			 	relay = 0;		   //打开继电器
			}
			else
			{
				relay = 1;		  //关闭继电器
			}
			if(distem <= setTval)		 //温度对比
			{
			 	led_b = 0;		  //led及风扇处理
				fan = 1;
			}
			else
			{
				led_b = 1;	  //led及风扇处理
				fan = 0;
			}

		}
		if(readTem==1)		 //定时温度读取
		{
		    temp=ReadTemperature();			   //温度读取
			temperature=(float)temp*0.0625;	   //温度处理
			if(temperature >1)					//防止温度读错
			{distem = (unsigned int )temperature;}	//温度处理
			readTem=0;
		}			
	}
}

资料链接:https://pan.baidu.com/s/1YDpZ7RI3Pm12G_wSlt-Cxw?pwd=q3v3
提取码:q3v3

  • 14
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值