基于STM32单片机远程智能花盆GSM短信浇水补光设计
程序编程已经添加附件,有需要的朋可以参考
单片机源程序如下:
- #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; //读取温湿度标志 定时器中处理
- u8 LighFlag=0; //光照标志
- u8 ReadMes=0; //读取短信标志 定时器中处理
- u8 delmes=0; //删除短信
- u8 MesgJiaoShuiFlag=0; //短信浇水标志
- u8 CountJiao=0; //短信浇水计时 定时器中处理
- u8 MesgBuguangFlag=0; //短信补光标志
- u8 CountBu=0; //短信补光计时 定时器中处理
- int main(void)
- {
- unsigned int i;
- delay_init(); //延时函数初始化
- NVIC_Configuration();//设置NVIC中断分组2:2位抢占优先级,2位响应优先级
- uart_init(115200); //串口初始化
- LED_Init(); //LED端口初始化
- KEY_Init(); //按键端口初始化
- TIM3_Int_Init(499,7199);//10Khz的计数频率,计数到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; //关闭灯光
- CTRL_RELAY=1; //关闭继电器
- for(i=0;i<50;i++) //延时 待gsm稳定
- {
- delay_ms(100);
- }
- printf("AT+CMGF=1\r\n"); //设置字符
- for(i=0;i<20;i++) //延时
- {delay_ms(200);}
- printf("AT+CSCS=\"GSM\"\r\n"); //设置gsm格式
- for(i=0;i<20;i++) //延时
- {delay_ms(20);}
- printf("AT+CMGDA=\"DEL ALL\"\r\n");
- for(i=0;i<20;i++) //延时
- {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) //查看光照强度
- {Lcd_1Put(14,1,'H');}
- else
- {Lcd_1Put(14,1,'L');}
- if(DHT11.Hum_H<35) //
- {
- if(MesgJiaoShuiFlag==0) //短信不在控制时
- {
- CTRL_RELAY=0; //打开继电器
- }
- }
- else
- {
- if(MesgJiaoShuiFlag==0) //短信不在控制时
- {
- CTRL_RELAY=1; //关闭继电器
- }
- }
- }
- }
- 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')) //查询是否接收到JW
- {
- MesgJiaoShuiFlag=1;
- CountJiao=0;
- CTRL_RELAY=0; //打开继电器
- 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')) //查询是否接收到JW
- {
- MesgBuguangFlag=1;
- CountBu=0;
- CTRL_LIGH=0; //打开灯光
- 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; //读短信标志清空
- delay_ms(10);
- }
- if(LighR==1)
- {
- delay_ms(5);
- if(LighR==1)
- {
- LighFlag=1;
- if(MesgBuguangFlag==0) //短信不在控制时
- {
- CTRL_LIGH=0; //打开灯光
- }
- }
- }
- else
- {
- LighFlag=0;
- if(MesgBuguangFlag==0) //短信不在控制时
- {
- CTRL_LIGH=1; //关闭灯光
- }
- }
- }
- }
复制代码
所有资料51hei提供下载:
USER.rar
(93.93 KB, 下载次数: 50)
|