久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
stm32煙霧報警器源程序_手機發送短信
[打印本頁]
作者:
JN0717
時間:
2021-3-15 19:26
標題:
stm32煙霧報警器源程序_手機發送短信
單片機源程序如下:
/**********************************************************************************
* 工程名 :發送TEXT文本短信
* 描述 :通過STM32開發板控制模塊發送TEXT文本短信
* 實驗平臺:STM32F10X
* 庫版本 :
* 硬件連接說明
使用單片串口2與GPRS模塊通信 注:使用串口2可以避免下載和通信不會沖突
STM32 GPRS模塊
5V ->5V
3.3V ->V_TTL
PA3 (RXD2)->TXD
PA2 (TXD2)->RXD
GND ->GND
VBAT ->供電5V(大電流)
GND ->GND
PB9 ->PWR
PWR:這個引腳是控制模塊啟動,V1.2版本已經有自啟動電路所以不必接
* 軟件功能說明
板子上電后運行指示燈600ms亮/3000ms滅的頻率閃爍
修改短信中心號、接收方手機號和短信內容,編譯成功后下載到單片機里面,就可以實現發
送一條文本短信
**********************************************************************************/
#include "sys.h"
#include "delay.h"
#include "lcd.h"
#include "usart.h"
#include "timer.h"
#include "string.h"
#include "MQ_smog.h"
#include "ds18b20.h"
#define Buf1_Max 60 //串口1緩存長度
#define Buf2_Max 200 //串口2緩存長度
/************* 本地常量聲明 **************/
static unsigned char *SMS_Num="\"+8613800270500\"";//短信中心號 關于中心號的介紹可以看串口調試筆記的第二部分
static unsigned char *phone="\"18672942506\""; //短信接收方手機號
static unsigned char *content="Fire Alarm!";//發送短信內容
static unsigned char *content1="I am a fire alarm";
/************* 本地變量聲明 **************/
char Uart2_Buf[Buf2_Max];//串口2接收緩存
u8 Times=0,First_Int = 0,shijian=0;
vu8 Timer0_start; //定時器0延時啟動計數器
vu8 Uart2_Start; //串口2開始接收數據
vu8 Uart2_End; //串口2接收數據結束
u8 t=0;
u8 SMS_flag=1;
u8 flag1 = 1;
short temperature;
extern int flag;
/************* 本地函數聲明 **************/
void CLR_Buf2(void);
u8 Find(char *a);
void Second_AT_Command(char *b,char *a,u8 wait_time);
void Set_Text_Mode(void);
void Wait_CREG(void);
void Send_Text_Sms(void);
void Send_Text_Sms1(void);
/*******************************************************************************
* 函數名 : main
* 描述 : 主函數
* 輸入 :
* 輸出 :
* 返回 :
* 注意 : 串口2負責與MG323模塊通信,串口1用于串口調試,可以避免在下載程序時數據
還發送到模塊
*******************************************************************************/
int main(void)
{
NVIC_Configuration(); //設置NVIC中斷分組2:2位搶占優先級,2位響應優先級
delay_init(); //延時函數初始化
uart_init(9600);
USART2_Init_Config(9600);
Timer2_Init_Config();
LCD_Init();
Init_smog();
BACK_COLOR=WHITE; //字體背景色
POINT_COLOR=RED;
LCD_Clear(WHITE);
Wait_CREG(); //查詢等待模塊注冊成功
Set_Text_Mode();//設置短信為TEXT模式
while(DS18B20_Init()) //1:未檢測到DS18B20的存在 0:存在
{
LCD_ShowString(60,130,200,16,16,"DS18B20 Error");
delay_ms(200);
LCD_Fill(60,130,239,130+16,WHITE);
delay_ms(200);
}
// LCD_ShowString(60,20,200,16,16,"DS18B20 OK");
LCD_ShowString(60,40,200,16,16,"Temp: . C");
while(1)
{
if(t%10==0)//每100ms讀取一次
{
temperature=DS18B20_Get_Temp();
if(temperature<0)
{
LCD_ShowChar(60+40,40,'-',16,0); //顯示負號
temperature=-temperature; //轉為正數
}else LCD_ShowChar(60+40,40,' ',16,0); //去掉負號
POINT_COLOR=BLUE;//設置字體為藍色
LCD_ShowNum(60+40+8,40,temperature/10,2,16); //顯示正數部分
LCD_ShowNum(60+40+32,40,temperature%10,1,16); //顯示小數部分
smog();
if(flag == 1){
POINT_COLOR=RED;
LCD_ShowString(30,180,160,16,16,"smog:warning!");
}
else LCD_ShowString(30,180,160,16,16," ");
}
LCD_ShowxNum(30,220,flag,1,16,0);
if(flag1 == 1){
Send_Text_Sms1();//發送一條短消息
flag1=0;
}
if(flag==1 && (temperature/10)>20 && SMS_flag==1){ //使用溫度報警時。只用了整數部分
LCD_ShowString(60,200,160,16,16,"Fire Alarm!");
Send_Text_Sms();//發送一條短消息
SMS_flag = 0;
}
// else{
// LCD_ShowString(60,200,160,16,16," ");
// //SMS_flag = 1;
// }
}
}
/*******************************************************************************
* 函數名 : CLR_Buf2
* 描述 : 清除串口2緩存數據
* 輸入 :
* 輸出 :
* 返回 :
* 注意 :
*******************************************************************************/
void CLR_Buf2(void)
{
u16 k;
for(k=0;k<Buf2_Max;k++) //將緩存內容清零
{
Uart2_Buf[k] = 0x00;
}
First_Int = 0; //接收字符串的起始存儲位置
}
/*******************************************************************************
* 函數名 : Find
* 描述 : 判斷緩存中是否含有指定的字符串
* 輸入 :
* 輸出 :
* 返回 : unsigned char:1 找到指定字符,0 未找到指定字符
* 注意 :
*******************************************************************************/
u8 Find(char *a)
{
if(strstr(Uart2_Buf,a)!=NULL)
return 1;
else
return 0;
}
/*******************************************************************************
* 函數名 : Second_AT_Command
* 描述 : 發送AT指令函數
* 輸入 : 發送數據的指針、希望接收到的應答數據指針、發送等待時間(單位:S)
* 輸出 :
* 返回 :
* 注意 :
*******************************************************************************/
void Second_AT_Command(char *b,char *a,u8 wait_time)
{
u8 i;
char *c;
c = b; //保存字符串地址到c
CLR_Buf2(); //清除串口2緩存數據
i = 0;
while(i == 0)
{
if(!Find(a)) //判斷緩存中是否含有指定的字符串,如果沒有就一直發送
{
if(Timer0_start == 0)
{
b = c; //將字符串地址給b
for (; *b!='\0';b++) // \0--字符串結尾---一次發送一位字符串,然后b++,當字符串結束時,發送完成
{
while(USART_GetFlagStatus(USART2, USART_FLAG_TC)==RESET); //串口2接收引腳無數據時,空循環
USART_SendData(USART2,*b); //UART2_SendData(*b);
}
UART2_SendLR();
Times = 0;
shijian = wait_time;
Timer0_start = 1;
}
}
else //如果有,即發送成功,則令i=1跳出循環
{
i = 1;
Timer0_start = 0;
}
}
CLR_Buf2();
}
/*******************************************************************************
* 函數名 : Set_Text_Mode
* 描述 : 設置短信為TEXT文本模式
* 輸入 :
* 輸出 :
* 返回 :
* 注意 :
*******************************************************************************/
void Set_Text_Mode(void)
{
char temp[50]="AT+CSCA=";
Second_AT_Command("ATE0","OK",3); //取消回顯 ,發送ATE0,等待接收到“OK”才結束,并執行下一步
Second_AT_Command("AT+CMGF=1","OK",3); //TEXT模式
Second_AT_Command("AT+CPMS=\"SM\",\"SM\",\"SM\"","OK",3);//所有操作都在SIM卡中進行
strcat(temp,(char*)SMS_Num); //字符串拼接函數(庫函數)---把"AT+CSCA="與\"+8613800270500\"拼接,并存入temp
Second_AT_Command(temp,"OK",3);//設置短信中心號
LCD_ShowString(30,60,200,16,16,"Set_Text_Mode successful");
}
/*******************************************************************************
* 函數名 : Send_Text_Sms
* 描述 : 發送TEXT文本短信
* 輸入 :
* 輸出 :
* 返回 :
* 注意 :
*******************************************************************************/
void Send_Text_Sms(void)
{
char temp[50]="AT+CMGS=";
strcat(temp,(char*)phone); //字符串拼接函數(庫函數)
Second_AT_Command(temp,">",3); //發送temp,等待接收到“>”才發送短信內容
UART2_SendString((char*)content); //發送短信內容
USART_SendData(USART2 ,0X1A); //發送結束符
UART2_SendLR();
LCD_ShowString(30,90,200,16,16,"Send_Text_Sms successful");
}
void Send_Text_Sms1(void)
{
char temp[50]="AT+CMGS=";
strcat(temp,(char*)phone); //字符串拼接函數(庫函數)
Second_AT_Command(temp,">",3); //發送temp,等待接收到“>”才發送短信內容
UART2_SendString((char*)content1); //發送短信內容
USART_SendData(USART2 ,0X1A); //發送結束符
UART2_SendLR();
LCD_ShowString(30,90,200,16,16,"Send_Text_Sms successful");
}
/*******************************************************************************
* 函數名 : Wait_CREG
* 描述 : 等待模塊注冊成功
* 輸入 :
* 輸出 :
* 返回 :
* 注意 :
*******************************************************************************/
void Wait_CREG(void)
{
u8 i;
u8 k;
i = 0;
CLR_Buf2();
while(i == 0)
{
CLR_Buf2();
UART2_SendString("AT+CREG?"); //查詢模塊是否注冊成功
// UART2_SendString("/r/n");
UART2_SendLR(); //發回車換行
// LCD_ShowString(30,120,200,16,16,"debug1");
delay_ms(5000);
for(k=0;k<Buf2_Max;k++)
{
u8 aa = Uart2_Buf[0];
LCD_ShowString(30,140,200,16,16,(u8*)aa);
if(Uart2_Buf[k] == ':') //如果響應返回的結果中有分號
{
// LCD_ShowString(30,140,200,16,16,"debug2");
if((Uart2_Buf[k+4] == '1')||(Uart2_Buf[k+4] == '5')) //說明模塊注冊成功 0:未注冊,且沒有進行搜尋新網絡,1:已注冊本地網絡,2:未注冊,正在搜尋網絡,4:未知代碼,5:已注冊,處于漫游狀態
{
i = 1; //可跳出while
break; //跳出for
}
}
}
// LCD_ShowString(30,120,200,16,16," ");
}
LCD_ShowString(30,120,200,16,16,"CREG successful");
}
//void USART2_IRQHandler(void)
//{
// u8 Res=0;
// Res =USART_ReceiveData(USART2);
// LCD_ShowString(30,140,200,16,16,(u8*)Res);
// Uart2_Buf[First_Int] = Res; //將接收到的字符串存到緩存中
// First_Int++; //緩存指針向后移動
// if(First_Int > Buf2_Max) //如果緩存滿,將緩存指針指向緩存的首地址
// {
// First_Int = 0;
// }
//}
void USART2_IRQHandler(void)
{
u8 Res=0;
if(USART_GetITStatus(USART2,USART_IT_RXNE)!=RESET){
Res = USART_ReceiveData(USART2);
// LCD_ShowString(30,140,200,16,16,(u8*)Res);
Uart2_Buf[First_Int] = Res; //將接收到的字符串存到緩存中
First_Int++; //緩存指針向后移動
if(First_Int > Buf2_Max) //如果緩存滿,將緩存指針指向緩存的首地址
{
First_Int = 0;
}
}
}
復制代碼
_煙霧報警器_手機發送短信.zip
2021-3-15 19:25 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
567.29 KB, 下載次數: 45, 下載積分: 黑幣 -5
作者:
1763333333
時間:
2025-6-9 16:26
可以看看原理圖嗎
作者:
18539804054
時間:
2025-6-25 14:29
有硬件原理圖嗎
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
欧美久久精品
|
麻豆久久久
|
欧美黑人一区二区三区
|
国产精品一级
|
在线一区二区三区
|
亚洲天堂免费视频
|
亚洲精品www久久久久久广东
|
天天舔天天操
|
欧美日韩一区二区三区
|
欧美一区二区三区免费
|
九九视频在线
|
久久最新网址
|
久久精品久久久久久久
|
午夜网站在线观看
|
国产一级黄色录像
|
欧美色综合天天久久综合精品
|
久久久久久综合
|
欧美色图一区二区
|
亚洲毛片av
|
成人羞羞国产免费
|
天天干天天操天天爽
|
日本一区二区三区精品
|
亚洲精品乱码久久久久久蜜桃91
|
午夜专区
|
国产欧美一区二区精品性色超碰
|
国产剧情在线
|
日本黄色三级视频
|
人人干人人看
|
国产精品日韩欧美
|
亚洲综合日韩
|
欧美日韩在线一区二区
|
国产精品免费一区二区三区
|
精品亚洲国产成人av制服丝袜
|
激情高潮到大叫狂喷水
|
韩国精品一区二区
|
最新国产在线视频
|
日本成人免费网站
|
18成人免费观看网站
|
久久精品一区二区三区不卡牛牛
|
国产传媒在线观看
|
国产福利av
|