【单片机毕业设计选题24002】-基于51单片机的智能灌溉系统

系统功能:

此设计采用51核单片机STC8系列来完成,系统采集环境温湿度光照强度土壤湿度等数据显示在OLED上,并将这些信息上报至手机蓝牙APP。

资料获取方法

系统分为手动和自动模式,上电默认为自动模式,自动模式下如获取到的土壤湿度AD值大于设定的土壤湿度AD值时自动开启继电器,手动模式下可通过按键或手机APP手动开关继电器。

系统功能框图:

主要功能模块原理图:

系统主要功能模块代码

初始化代码:

//========================================================================

//                                系统初始化

//========================================================================

void InitSystem(void)

{

    InitVar();

         InitGPIO();

         InitTimer();

    InitUart();

    InitADC();

    ResetDHT11();

    InitOled();

    InitOledDisp();

    DelayMs(50);


         EA = 1;

}

系统控制代码:

//系统信息更新

void SystemControl(void)

{

    static uint8_t updateCnt = 0;

   

    updateCnt++;   

    if(updateCnt>=SYSTEM_UPDATE_INTER)

    {

        updateCnt = 0;

        if(DHT11ReadData()==0)  //DHT11温湿度读取OK

        {

            ;

        }

    }

    ReadSensorVal();

//自动模式下定时上报系统信息

    if(sysMode==AUTO_MODE)

    {

        UpdateBleData();

    }

}

按键检测代码:

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

  * @brief  Scan key board

  * @param  None

  * @retval None

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

void ScanKeyBoard(void)

{

         uint8_t keyVal;

        

         keyVal = CheckKeyVal();

         if(KeyInfo.OldVal!=keyVal)     //first time enter after key changed

         {

                  KeyInfo.ReleaseCnt = 0;    //clear key release time count

                  if(keyVal!=NO_KEY_PRESSED_DEF)

                  {

                          KeyInfo.HoldCnt = 0;

                  }

                  KeyInfo.OldVal = keyVal;

         }

         else 

         {

                  if(keyVal!=NO_KEY_PRESSED_DEF)    //have key press

                  { 

//                       if(KeyInfo.HoldDelayCnt<254)

            if(KeyInfo.HoldCnt<1000)

                          {

                                   KeyInfo.HoldCnt++;

                          }                        

                          if(KeyInfo.HoldCnt==SHORT_PRESS_TIME_DEF) //pressed for a short time

                          {

                                   KeyInfo.TempNewVal = KeyInfo.OldVal;

                          }

                  }

                  else    //release

                  {  

                          if(KeyInfo.ReleaseCnt<254) 

                          {

                                   KeyInfo.ReleaseCnt++;

                      }

                          if(KeyInfo.ReleaseCnt==RELEASE_TIME_DEF)

                          {

                if(KeyInfo.HoldCnt>=LONG_PRESS_TIME_DEF)    //长按键

                {

                    KeyInfo.LongPress = KEY_LONG_PRESS;

                }

                else    //短按键

                                   {

                                       KeyInfo.LongPress = KEY_SHORT_PRESS;

                                   }                                 

                KeyInfo.ConfirmVal = KeyInfo.TempNewVal;

                                   KeyInfo.HoldCnt = 0;

                                   KeyInfo.TempNewVal = NO_KEY_PRESSED_DEF;

                          }

                  }

         }

}

系统图片:

此设计提供的资料包含原理图PCB(包含PDF,AD,立创EDA三个版本),源代码,系统框图,主程序流程图,物料清单(包含使用到的器件手册),功能操作说明等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

单片机毕业设计-远望创客学堂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值