找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3542|回复: 1
打印 上一主题 下一主题
收起左侧

基于STM32单片机远程智能花盆GSM短信浇水补光设计源码

[复制链接]
跳转到指定楼层
楼主
ID:227539 发表于 2018-11-11 22:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
基于STM32单片机远程智能花盆GSM短信浇水补光设计

程序编程已经添加附件,有需要的朋可以参考

单片机源程序如下:
  1. #include "led.h"
  2. #include "delay.h"
  3. #include "sys.h"
  4. #include "key.h"
  5. #include "usart.h"
  6. #include "timer.h"
  7. #include "lcd1602.h"
  8. #include "dht11.h"


  9. char tab[16];
  10. u8 ReadDhtFlag=0;                //读取温湿度标志  定时器中处理
  11. u8 LighFlag=0;                        //光照标志
  12. u8 ReadMes=0;                        //读取短信标志 定时器中处理
  13. u8 delmes=0;                                //删除短信

  14. u8 MesgJiaoShuiFlag=0; //短信浇水标志
  15. u8 CountJiao=0;                           //短信浇水计时 定时器中处理
  16. u8 MesgBuguangFlag=0;  //短信补光标志
  17. u8 CountBu=0;                                                 //短信补光计时 定时器中处理

  18. int main(void)
  19. {
  20.         unsigned int i;
  21.         delay_init();                     //延时函数初始化
  22.         NVIC_Configuration();//设置NVIC中断分组2:2位抢占优先级,2位响应优先级
  23.         uart_init(115200);   //串口初始化

  24.         LED_Init();                   //LED端口初始化
  25.         KEY_Init();          //按键端口初始化
  26.         TIM3_Int_Init(499,7199);//10Khz的计数频率,计数到500为50ms
  27.         LED=0;
  28.         Lcd_GPIO_init();  //初始化lcd引脚
  29.         Lcd_Init();                  //初始化lcd屏幕
  30.         delay_ms(20);
  31.   Lcd_Puts(0,0,"My Designer!    ");        //初始化显示
  32. //        sprintf(tab,"NowTemp:%02d DH:%02d",(u16)DHT11.Tem_H,(u16)DHT11.Hum_H);                //1602显示
  33.         sprintf(tab,"Temp:%02d DH:%02d L ",(u16)DHT11.Tem_H,(u16)DHT11.Hum_H);
  34.         Lcd_Puts(0,1,(unsigned char *)tab);        //初始化显示

  35.         CTRL_LIGH=1;                //关闭灯光
  36.         CTRL_RELAY=1;                //关闭继电器
  37.         for(i=0;i<50;i++)         //延时 待gsm稳定
  38.         {
  39.                 delay_ms(100);
  40.         }

  41.         printf("AT+CMGF=1\r\n");         //设置字符
  42.         for(i=0;i<20;i++)        //延时
  43.         {delay_ms(200);}
  44.         printf("AT+CSCS=\"GSM\"\r\n");                   //设置gsm格式
  45.         for(i=0;i<20;i++)        //延时
  46.         {delay_ms(20);}
  47.         printf("AT+CMGDA=\"DEL ALL\"\r\n");
  48.         for(i=0;i<20;i++)        //延时
  49.         {delay_ms(20);}       
  50.         LED=1;
  51.         while(1)
  52.         {
  53.                 if(ReadDhtFlag==1)
  54.                 {
  55.                         ReadDhtFlag=0;
  56.                         if(DHT11_ReadData())        //是否读取到温湿度
  57.                         {          
  58.                                 sprintf(tab,"Temp:%02d DH:%02d L ",(u16)DHT11.Tem_H,(u16)DHT11.Hum_H);
  59.                                    Lcd_Puts(0,1,(unsigned char *)tab);        //初始化显示
  60.                                 if(LighFlag==1)                        //查看光照强度
  61.                                 {Lcd_1Put(14,1,'H');}
  62.                                 else
  63.                                 {Lcd_1Put(14,1,'L');}       
  64.                                 if(DHT11.Hum_H<35)                          //
  65.                                 {
  66.                                         if(MesgJiaoShuiFlag==0)        //短信不在控制时
  67.                                         {
  68.                                                 CTRL_RELAY=0;                //打开继电器                       
  69.                                         }                                       
  70.                                 }
  71.                                 else
  72.                                 {
  73.                                         if(MesgJiaoShuiFlag==0)        //短信不在控制时
  74.                                         {
  75.                                                 CTRL_RELAY=1;                //关闭继电器                                       
  76.                                         }
  77.                                 }
  78.                         }
  79.                 }

  80.                 if(ReadMes==1)
  81.                 {
  82.                         ReadMes=0;
  83.                         printf("AT+CMGR=1\r\n");  //读取短信 串口中接收到 timebuf[]中
  84.                         delay_ms(200);
  85.                         for(i=0;i<SIZEBUF-4;i++)
  86.                         {          
  87.                                 LED=0;
  88.                                 if((timebuf[i]=='j')&&(timebuf[i+1]=='i')&&(timebuf[i+2]=='a')&&(timebuf[i+3]=='o')&&(timebuf[i+4]=='s'))        //查询是否接收到JW
  89.                                 {
  90.                                         MesgJiaoShuiFlag=1;
  91.                                         CountJiao=0;
  92.                                         CTRL_RELAY=0;                //打开继电器
  93.                                         printf("AT+CMGDA=\"DEL ALL\"\r\n");//删除所有短信
  94.                                         delay_ms(500);
  95.                                 }
  96.                                 if((timebuf[i]=='b')&&(timebuf[i+1]=='u')&&(timebuf[i+2]=='g')&&(timebuf[i+3]=='u')&&(timebuf[i+4]=='a'))        //查询是否接收到JW
  97.                                 {
  98.                                         MesgBuguangFlag=1;
  99.                                         CountBu=0;
  100.                                         CTRL_LIGH=0;                //打开灯光
  101.                                         printf("AT+CMGDA=\"DEL ALL\"\r\n");//删除所有短信
  102.                                         delay_ms(500);
  103.                                 }
  104.                                 LED=1;
  105.                         }
  106.                         for(i=0;i<SIZEBUF;i++)
  107.                         {
  108.                                 timebuf[i]='0';   //清空timebuf
  109.                         }
  110.                         delmes++;
  111.                         if(delmes>=10)
  112.                         {
  113.                                 delmes=0;
  114.                                 printf("AT+CMGDA=\"DEL ALL\"\r\n");//删除所有短信
  115.                                 delay_ms(500);
  116.                         }
  117.                         ReadMes=0;                        //读短信标志清空
  118.                         delay_ms(10);
  119.                 }
  120.                 if(LighR==1)
  121.                 {
  122.                         delay_ms(5);
  123.                         if(LighR==1)
  124.                         {
  125.                                 LighFlag=1;
  126.                                 if(MesgBuguangFlag==0)        //短信不在控制时
  127.                                 {
  128.                                         CTRL_LIGH=0;                //打开灯光                               
  129.                                 }
  130.                         }
  131.                 }
  132.                 else
  133.                 {
  134.                         LighFlag=0;
  135.                         if(MesgBuguangFlag==0)         //短信不在控制时
  136.                         {
  137.                                 CTRL_LIGH=1;                //关闭灯光                               
  138.                         }
  139.                 }
  140.         }
  141. }
复制代码

所有资料51hei提供下载:
USER.rar (93.93 KB, 下载次数: 50)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏6 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:487813 发表于 2019-3-10 13:50 | 只看该作者
楼主,感觉附件程序貌似不完整,求分享完整程序
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表