467【毕设课设】基于51单片机智能大棚传感器检测控制系统设计

【资源下载】下载地址如下:
https://docs.qq.com/doc/DTlRSd01BZXNpRUxl

设一个温室大棚模型(用鞋盒子模拟),最上层铺上一层透明塑料保鲜膜。
设计由51单片机电路、
1602液晶显示电路、
光照检测电路、
土壤湿度检测电路组成。

A/D模块PCF8591电路、

1颗高亮LED灯补光电路、
温度检测DS18B20电路、
1颗黄色高亮LED灯加热电路、

风扇电路、
水泵灌溉电路、
4位按键电路、

1、通过光敏电阻检测光照强度,然后A/D模块PCF8591处理后,将光照强度值实时显示在液晶上,并且可以按键控制光照的强度值,
当光照低于设定的阈值,1颗白色高亮LED灯亮进行补光,光照高于设定的阈值,就不用管。
2、通过DS18B20检测温度值,并且实时显示在1602液晶上,并且可以通过按键设定温度值,当温度低于设定值时,通过一颗黄色高亮LED灯模拟。当温度超过设定值时,风扇旋转。
3、通过土壤湿度传感器检测土壤的湿度,并且将湿度值实时显示在液晶上,并且可以设定土壤的使读者,当土壤湿度小于设定的阈值,水泵加水。大于阈值时,不动作。

#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
#include<stdio.h>
#include "1602.h"
#include "delay.h"
#include "sysdefine.h"
#include"18b20.h"

sbit led_l = P1^0;
sbit led_b = P1^1;
sbit fan = P1^4;
sbit relay = P1^3;

sbit key_s = P3^4;
sbit key_a = P3^5;
sbit key_u = P3^6;

void Init_Timer0(void);

unsigned char readTem = FALSE ;//定义读时间标志
unsigned char readADCFlag = FALSE ;

int temp;
float temperature = 0;

char disdat[16];			   //打印数组初始化
char disset[16];
unsigned long time_20ms=0;		   //定时器计数

float Lv=0.0;		  	//光照采集电压
float Tv=0.0;				  //土壤采集电压
unsigned int Lval =0;		 //光照强度
unsigned int Rval = 0;		 //土壤湿度
unsigned int distem;
unsigned char rekey = 0;
unsigned char SetFlag = 0; 		//设置值
unsigned char setLval = 50;
unsigned char setRval = 50;
unsigned char setTval = 30;

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

	LCD_Init();           //初始化液晶
	DelayMs(20);          //延时有助于稳定
	LCD_Clear();          //清屏
	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)         //主循环
	{
		

猜你喜欢

转载自blog.csdn.net/weixin_51254112/article/details/109562502