加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入

基于51单片机的自动浇花系统设计

5小时前
152
服务支持:
技术交流群

完成交易后在“购买成功”页面扫码入群,即可与技术大咖们分享疑惑和经验、收获成长和认同、领取优惠和红包等。

虚拟商品不可退

当前内容为数字版权作品,购买后不支持退换且无法转移使用。

加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论
放大
实物图
  • 方案介绍
  • 相关文件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

毕业设计是设计一种51单片机控制的自动浇水系统,实现室内盆花浇水的自动化系统。该系统可对土壤的湿度进行监控,并对作物进行适时适量的浇水。其核心是51单片机和土壤湿度检测器YL-69和显示电路以及浇水继电器驱动电路构成的检测控制部分。主要研究土壤湿度与浇水时间之间的关系、浇灌控制技术及设备系统的硬件软件编程各个部分。

检测部分,单片机选用AT89C51单片机,软件选用C51语言编程。土壤湿度采集与显示电路可将检测到的土壤湿度模拟量放大转换成数字量通过单片机内程序控制精确的将温度与湿度分别显示在LED数码管显示屏上,通过单片机内的中断服务程序判断是否要给盆花浇水,若需浇水,则单片机系统发出浇水信号,开始浇水,若不需要浇水,则进行下一次循环检测。

在浇水系统中也同时设计一个定时浇水部分,通过按键开关设置不同的浇水时间段,在时间段以内时,单片机驱动浇水系统,开始浇水,如不在时间段内,则不浇水。

/ADC0809
sbit ST=P3^3;
sbit EOC=P3^4;
sbit OE=P3^2;
//按键
sbit Key1=P3^5;
sbit Key2=P3^6;
sbit Key3=P3^7;

//显示数组		0-9+F
uchar Data_[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x71,0x3f};
sbit Wei1 = P2^7;
sbit Wei2 = P2^6;
sbit Wei3 = P2^5;
sbit Wei4 = P2^4;
//函数声明
extern uchar ADC0809();
void Display(uchar X,uchar Data);
void delay(uint t);

//酒精含量变量
uchar temp=0;
//蜂鸣器变量
uchar FF=125;
//显示模式
uchar Mode=0;
uchar p;

void main()
{

	while(1)
	{
		//正常模式
		if(Mode==0)
		{
			//读取AD值
			temp=ADC0809();
			for(p=0;p<30;p++)
			Display(0,temp);
			//判断是否报警
			if(temp>FF)
			{
				Feng=0;
			}
			else
			{
				Feng=1;
			}
		}
		//调整模式
		else
		{
			Display(1,FF);
		}
		//功能键
		if(Key3==0)
		{
			Feng=0;
			delay(100);
			while(Key3==0)
			{
				if(Mode==0)
					Display(0,temp);	
				else
					Display(1,FF);									
			}
			if(Mode==0)
				Mode=1;
			else
				Mode=0;
			Feng=1;
		}
		//增加
		if(Key2==0&&Mode==1)
		{
			Feng=0;
			delay(100);
			while(Key2==0)
			{
					Display(1,FF);									
			}
			FF++;
			if(FF==251)	
				FF=250;	
			Feng=1;
		}
		//减少
		if(Key1==0&&Mode==1)
		{
			Feng=0;
			delay(100);
			while(Key1==0)
			{
					Display(1,FF);									
			}
			FF--;
			if(FF==0xff)	
				FF=0;	
			Feng=1;
		}
	}
}
//ADC0809读取信息
uchar ADC0809()
{
	uchar temp_=0x00;
	//初始化高阻太
	OE=0;
	//转化初始化
	ST=0;
	//开始转换
	ST=1;
	ST=0;
	//外部中断等待AD转换结束
	while(EOC==0)
	//读取转换的AD值
	OE=1;
	temp_=Data_ADC0809;
	OE=0;
	return temp_;
}
//延时
void delay(uint t)
{
	uint i,j;
	for(i=0;i<t;i++)
		for(j=0;j<10;j++);
}

//显示       X表示状态     Data表示数据
void Display(uchar X,uchar Data)
{
	Wei1=1;
	Wei2=1;
	Wei3=1;
	Wei4=1;
	P0=0xff;

	//正常模式
	if(X==0)
	{
		P0=~Data_[11];
	}
	//非正常
	else

资料借鉴于此纷传

  • 有需要资料的可了解一下.docx

相关推荐

电子产业图谱