家电维修网

 找回密码
 注册
家电维修网 网站首页 维修文章 查看内容

基于单片机的自动浇花系统的设计与制作

2019-4-5 10:15| 发布者: 南召修电视| 查看: 1014| 评论: 0

摘要: 生活中,人工浇灌花木要耗费大量时间,而且土壤湿度不好控制,有时候由于主人长时间外出,家里的花木会因无人浇水而枯死。为了解决上述问题,本文利用单片机,设计了自动和手动浇花系统(如图1所示)。图1 自动浇花 ...
参考程序


I2CDelay();

I2C_SCL = 1; //拉高SCL

if(I2C_SDA == 0) //读取SDA 的值

dat &= ~mask; //0 时,dat 中对应位清零

else

dat |= mask; //1 时,dat 中对应位置1

I2CDelay();

I2C_SCL = 0; //再拉低SCL,以使从机发送出下一位

}

I2C_SDA = 0; //8 位数据发送完后,拉低SDA,发送应答信号

I2CDelay();

I2C_SCL = 1; //拉高SCL

I2CDelay();

I2C_SCL = 0; //再拉低SCL 完成应答位,并保持住总线

return dat;

}/***************************************

Keyboard.h

***************************************/

#ifndef _KEY_BOARD_H

#define _KEY_BOARD_H

 

#ifndef _KEY_BOARD_C

extern unsigned char SetVal;

#endif

 

void KeyAction();//按键处理,手动运行

#endif

/***************************************

KEYBOARD.C

***************************************/

#define _KEY_BOARD_C

#include "config.h"

#include "keyboard.h"

#include "Lcd1602.h"

#include "main.h"

 

unsigned char SetVal=25;//设定初始值  

/****************************************

函数功能:按键处理,手动运行

入口参数:无

*****************************************/

void KeyAction()

{   

       if(AK_KEY==0)//LCD1602背光控制

        {

              delayms(10);

              if(AK_KEY==0)

              {

              LCD1602_AK=!LCD1602_AK;      

              while(!AK_KEY);

              }

             

       }

       if(MA_KEY==0)

       {

              delayms(10);

              if(MA_KEY==0)

              {

                     if(staSystem==E_AUTO)

                     {

                     staSystem=E_MANUAL;   

                     AUTO_LED=OFF;

                     MANUAL_LED=ON;

                     }

                     elseif(staSystem==E_MANUAL)

                     {

                     staSystem=E_AUTO;

                     AUTO_LED=ON;

                     MANUAL_LED=OFF;

                     }

                     while(!MA_KEY);

              }     

       }

       if(staSystem==E_MANUAL)//手动工作状态

       {

             if(UP_KEY==0){PUMP=ON;PUMP_LED=ON;}//手动开

              elseif(DN_KEY==0){PUMP=OFF;PUMP_LED=OFF;}//手动关}

    }

       elseif(staSystem==E_AUTO)//自动状态

       {

               if(UP_KEY==0)

                {         

                     delayms(10);

                     if(UP_KEY==0)

                     {

                    if(SetVal<100) SetVal++; //设置+

                    while(!UP_KEY);

                     }

                }

              if(DN_KEY==0)

                {         

                     delayms(10);

                     if(DN_KEY==0)

                     {

                    if(SetVal>0) SetVal--; //设置-

                    while(!DN_KEY);

                }

       }                                 

}

}

1234567

最新评论

  • 消毒柜惊魂夜:一个被忽视的家居安全隐患
  • 写一篇关于饮水机故障维修的文章
  • 家电坏了哪里找人维修
  • 卫星机顶盒有信号收不到台什么原因
  • 用户问的是微信收款提示音延迟的原因
  • 燃气热水器一直闪不加热,这是什么造成的?
  • 万家乐热水器不出热水是什么原因?万家乐电
  • 电热水器有哪些常见故障?电热水器故障维修
  • 热水器怎么安装?热水器详细安装教程分享
  • 电热水器通电不加热是什么原因?电热水器故

QQ|门户地图|网站地图|家电维修|手机版|家电维修技术论坛 ( 蜀ICP备14030498号-16 川公网安备51102502000162号 )

GMT+8, 2025-5-1 01:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

返回顶部