目录
正文
设计目的
生活中难免会忘记给自己可爱的花花浇水,本设计就来给我们解决这一难题
功能设计
可实现自动浇花,遥控浇花,按键浇花,可以随时观看土壤湿度,水流大小等
所需元件
51单片机,湿度检测模块,PCF8591,LCD1602,抽水泵,,红外遥控,按键,AT24C02
设计方法
基于51单片机
湿度检测模块检测湿度
PCF8591对采集来的湿度进行AD转换
LCD1602显示当前湿度,水流大小
设置阈值下限控制抽水泵进行自动浇花
按键进行近距离手动浇花,调节水流大小
红外遥控进行远距离手动遥控浇花,调节水流大小
AT24C02进行掉电保存
主要代码
main()
{
Init_all();//初始化
while(1)
{
/*********红外遥控浇花*************/
if(IRok)//判断33次脉宽是否提取完成
{
IRcordpro();//根据33次脉宽解码出4个字节数据
IRok=0;//清零脉宽检查完成标志位等待下一次脉宽检查
}
if(IRpro_ok)
{
IR_Work();
IRpro_ok=0;
}
/**********按键浇花*****************/
Key();//按键浇花
/**********湿度检测+AD转换*********/
EA = 0;
num = PCF8591Read(3);
EA = 1;
delay(5);
AD_num=ADC_num(num);//AD归一化
/**********阈值设置+自动浇花*******/
VPT=(shi-48)*10+(ge-48);
if(AD_num<VPT)
{
flag1=1;
}
else
{
flag1=0;
}
if(flag==0)
{
switch(flag1)
{
case 0: ET1=0;TR1=0;PWM=0; break;
case 1: ET1=1;TR1=1;break;
}
}
shi1=AD_num/10;
ge1=AD_num-shi1*10;
/********LCD1602显示********/
LCD1602_Work();
/********AT24C02**********/
AT24_write(2,shi);
AT24_write(3,ge);
AT24_write(4,M);
}
}
详细代码
链接:https://pan.baidu.com/s/1wbrABMEA1BS28ZBpyF76-w
提取码:1234