欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
51單片機結合GSM模塊SIM900A接受短信來做控制
[打印本頁]
作者:
1061897836
時間:
2020-4-30 17:04
標題:
51單片機結合GSM模塊SIM900A接受短信來做控制
研究了下論壇里關于GSM模塊SIM900A的程序,稍微整理了一個單純接收短信來執行自定義內容的程序,但是沒有實物來調試,有用過的指點一下嗎~~~~附帶AT指令集和程序
#include <reg52.h>
#include <absacc.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar code AT_CMGF[]= "AT+CMGF=1\r"; //發送數據為文本格式
uchar code AT_CMGR[]= "AT+CMGR=2\r"; //讀短信
uchar code AT_CSCA[]="AT+CSCA=\"+8613800771500\""; //設置服務中心號碼
uchar code AT_CNMI[]= "AT+CNMI=2,1,0,0\r"; //新消息提示:設置為mode=2,mt=1
uchar code AT_CMGD[]="AT+CMGD=1,1\r\n"; //刪除已讀消息
uchar RsPoint=0;
uchar RsBuf[100]; //緩存接收數據
uint i, k,ii;
void delayms(uint x)//延時
{
uint i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
//=================================================//
void Print_Char(uchar ch) //發送單個字符
{
SBUF=ch; //送入緩沖區
while(TI==0); //等待發送完畢
TI=0; //軟件清零
}
//=================================================//
void Print_Str(uchar *str)//發送字符串
{
while(*str!='\0')
{
Print_Char(*str++);
}
}
//=================================================//
void clr_rsbuf(void) //清空接收緩存
{
for(RsPoint=0;RsPoint<100;RsPoint++)
{
RsBuf[RsPoint]=0x00;
}
RsPoint=0;
}
//======================================================//
void ser()interrupt 4 //串口中斷,接受數據
{
if(RI==1)
{
RI=0;
RsBuf[RsPoint++]=SBUF;
if (RsPoint>=sizeof(RsBuf)) //計算對象類型大小
{
RsPoint=0;//FlagRs485=0;
}
}
}
//=================================================//
Ini_UART(void)//串口初始化、定時器初始化
{
TMOD = 0x20; //T1方式2,用于UART波特率
TH1 = 0xFD; //UART波特率設置:9600
TL1 = 0xFD;
SCON = 0x50; ////UART方式1:8位UART; REN=1:允許接收
PCON = 0x00;
TF1 = 1; // 中斷標志位
TR1 = 1; // 啟動定時器1
ES=1; //啟動串行口中斷
ET0=1; //啟動中斷功能
EA=1;
}
//=================================================//
void ScanMessage(void) //信息檢測
{
for(ii=0;ii<100;ii++)
if(RsBuf[ii-3]=='C'&&RsBuf[ii-2]=='M'&&RsBuf[ii-1]=='T'&&RsBuf[ii]=='I') //接收到短信后返回的指令
{
clr_rsbuf();
Print_Str(AT_CMGR); //讀短信
delayms(250);delayms(250);delayms(250);delayms(250);
for(i=0;i<100;i++)
{
if(RsBuf[i-3]=='Z'&&RsBuf[i-2]=='F'&&RsBuf[i-1]=='C'&&RsBuf[i]=='G') //自定義接收特定的短信內容
{ //我這里是支付成功的簡寫
//這里添加控制內容
}
Print_Str(AT_CMGD); //刪除已讀短信
delayms(100);
clr_rsbuf();
}
}
}
//===============================================================//
void main()
{
Ini_UART();
k=0;
Print_Str("AT\r\n");
delayms(100);
Print_Str(AT_CMGF); //文本模式
delayms(100);
Print_Str(AT_CNMI); //新消息提示
delayms(200);
Print_Str("AT+CMGD=1,4\r\n"); //刪除所有短信
delayms(100);
clr_rsbuf(); //清緩存
delayms(100);
while(1)
{
ScanMessage();
}
}
復制代碼
GSM SIM900A.zip
2020-4-30 17:03 上傳
點擊文件名下載附件
1.48 MB, 下載次數: 47
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1