标题:
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://www.51hei.com/bbs/)
Powered by Discuz! X3.1