找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4201|回復: 1
打印 上一主題 下一主題
收起左側

基于STM32單片機遠程智能花盆GSM短信澆水補光設計源碼

[復制鏈接]
跳轉到指定樓層
樓主
ID:227539 發(fā)表于 2018-11-11 22:51 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
基于STM32單片機遠程智能花盆GSM短信澆水補光設計

程序編程已經(jīng)添加附件,有需要的朋可以參考

單片機源程序如下:
  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();                     //延時函數(shù)初始化
  22.         NVIC_Configuration();//設置NVIC中斷分組2:2位搶占優(yōu)先級,2位響應優(yōu)先級
  23.         uart_init(115200);   //串口初始化

  24.         LED_Init();                   //LED端口初始化
  25.         KEY_Init();          //按鍵端口初始化
  26.         TIM3_Int_Init(499,7199);//10Khz的計數(shù)頻率,計數(shù)到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穩(wěn)定
  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, 下載次數(shù): 50)


評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏6 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:487813 發(fā)表于 2019-3-10 13:50 | 只看該作者
樓主,感覺附件程序貌似不完整,求分享完整程序
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表