|
基于STM32單片機(jī)遠(yuǎn)程智能花盆GSM短信澆水補(bǔ)光設(shè)計(jì)
程序編程已經(jīng)添加附件,有需要的朋可以參考
單片機(jī)源程序如下:
- #include "led.h"
- #include "delay.h"
- #include "sys.h"
- #include "key.h"
- #include "usart.h"
- #include "timer.h"
- #include "lcd1602.h"
- #include "dht11.h"
- char tab[16];
- u8 ReadDhtFlag=0; //讀取溫濕度標(biāo)志 定時(shí)器中處理
- u8 LighFlag=0; //光照標(biāo)志
- u8 ReadMes=0; //讀取短信標(biāo)志 定時(shí)器中處理
- u8 delmes=0; //刪除短信
- u8 MesgJiaoShuiFlag=0; //短信澆水標(biāo)志
- u8 CountJiao=0; //短信澆水計(jì)時(shí) 定時(shí)器中處理
- u8 MesgBuguangFlag=0; //短信補(bǔ)光標(biāo)志
- u8 CountBu=0; //短信補(bǔ)光計(jì)時(shí) 定時(shí)器中處理
- int main(void)
- {
- unsigned int i;
- delay_init(); //延時(shí)函數(shù)初始化
- NVIC_Configuration();//設(shè)置NVIC中斷分組2:2位搶占優(yōu)先級(jí),2位響應(yīng)優(yōu)先級(jí)
- uart_init(115200); //串口初始化
- LED_Init(); //LED端口初始化
- KEY_Init(); //按鍵端口初始化
- TIM3_Int_Init(499,7199);//10Khz的計(jì)數(shù)頻率,計(jì)數(shù)到500為50ms
- LED=0;
- Lcd_GPIO_init(); //初始化lcd引腳
- Lcd_Init(); //初始化lcd屏幕
- delay_ms(20);
- Lcd_Puts(0,0,"My Designer! "); //初始化顯示
- // sprintf(tab,"NowTemp:%02d DH:%02d",(u16)DHT11.Tem_H,(u16)DHT11.Hum_H); //1602顯示
- sprintf(tab,"Temp:%02d DH:%02d L ",(u16)DHT11.Tem_H,(u16)DHT11.Hum_H);
- Lcd_Puts(0,1,(unsigned char *)tab); //初始化顯示
- CTRL_LIGH=1; //關(guān)閉燈光
- CTRL_RELAY=1; //關(guān)閉繼電器
- for(i=0;i<50;i++) //延時(shí) 待gsm穩(wěn)定
- {
- delay_ms(100);
- }
- printf("AT+CMGF=1\r\n"); //設(shè)置字符
- for(i=0;i<20;i++) //延時(shí)
- {delay_ms(200);}
- printf("AT+CSCS=\"GSM\"\r\n"); //設(shè)置gsm格式
- for(i=0;i<20;i++) //延時(shí)
- {delay_ms(20);}
- printf("AT+CMGDA=\"DEL ALL\"\r\n");
- for(i=0;i<20;i++) //延時(shí)
- {delay_ms(20);}
- LED=1;
- while(1)
- {
- if(ReadDhtFlag==1)
- {
- ReadDhtFlag=0;
- if(DHT11_ReadData()) //是否讀取到溫濕度
- {
- sprintf(tab,"Temp:%02d DH:%02d L ",(u16)DHT11.Tem_H,(u16)DHT11.Hum_H);
- Lcd_Puts(0,1,(unsigned char *)tab); //初始化顯示
- if(LighFlag==1) //查看光照強(qiáng)度
- {Lcd_1Put(14,1,'H');}
- else
- {Lcd_1Put(14,1,'L');}
- if(DHT11.Hum_H<35) //
- {
- if(MesgJiaoShuiFlag==0) //短信不在控制時(shí)
- {
- CTRL_RELAY=0; //打開(kāi)繼電器
- }
- }
- else
- {
- if(MesgJiaoShuiFlag==0) //短信不在控制時(shí)
- {
- CTRL_RELAY=1; //關(guān)閉繼電器
- }
- }
- }
- }
- if(ReadMes==1)
- {
- ReadMes=0;
- printf("AT+CMGR=1\r\n"); //讀取短信 串口中接收到 timebuf[]中
- delay_ms(200);
- for(i=0;i<SIZEBUF-4;i++)
- {
- LED=0;
- if((timebuf[i]=='j')&&(timebuf[i+1]=='i')&&(timebuf[i+2]=='a')&&(timebuf[i+3]=='o')&&(timebuf[i+4]=='s')) //查詢(xún)是否接收到JW
- {
- MesgJiaoShuiFlag=1;
- CountJiao=0;
- CTRL_RELAY=0; //打開(kāi)繼電器
- printf("AT+CMGDA=\"DEL ALL\"\r\n");//刪除所有短信
- delay_ms(500);
- }
- if((timebuf[i]=='b')&&(timebuf[i+1]=='u')&&(timebuf[i+2]=='g')&&(timebuf[i+3]=='u')&&(timebuf[i+4]=='a')) //查詢(xún)是否接收到JW
- {
- MesgBuguangFlag=1;
- CountBu=0;
- CTRL_LIGH=0; //打開(kāi)燈光
- printf("AT+CMGDA=\"DEL ALL\"\r\n");//刪除所有短信
- delay_ms(500);
- }
- LED=1;
- }
- for(i=0;i<SIZEBUF;i++)
- {
- timebuf[i]='0'; //清空timebuf
- }
- delmes++;
- if(delmes>=10)
- {
- delmes=0;
- printf("AT+CMGDA=\"DEL ALL\"\r\n");//刪除所有短信
- delay_ms(500);
- }
- ReadMes=0; //讀短信標(biāo)志清空
- delay_ms(10);
- }
- if(LighR==1)
- {
- delay_ms(5);
- if(LighR==1)
- {
- LighFlag=1;
- if(MesgBuguangFlag==0) //短信不在控制時(shí)
- {
- CTRL_LIGH=0; //打開(kāi)燈光
- }
- }
- }
- else
- {
- LighFlag=0;
- if(MesgBuguangFlag==0) //短信不在控制時(shí)
- {
- CTRL_LIGH=1; //關(guān)閉燈光
- }
- }
- }
- }
復(fù)制代碼
所有資料51hei提供下載:
USER.rar
(93.93 KB, 下載次數(shù): 50)
2018-11-11 22:50 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|