资源简介
用于单片机的课程设计 sim900a GSM模块接收短信的C语言程序
代码片段和文件信息
/***GSM接收模块***/
#include
#include
#define Buf_Max 200//缓冲区长度
#define Delay_time 3000//延时长度
#define uchar unsigned char
#define uint unsigned int
sbit led1=P2^0; //状态指示灯
sbit led2=P2^2; //状态指示灯
sbit led3=P2^3; //状态指示灯
sbit led4=P2^4; //状态指示灯
//sbit IGT=P2^1; //点火程序
uchar i=0;//缓存区指针
uchar Rec_Buf[Buf_Max ];
bit Hand(uchar *a); //声明判断字符
void Send_ASCII(uchar *b);
void Serial_Init();
void Delay_ms(uint time) ;
void Send_Hex(uchar c);
void CLR_Buf();
void main()
{
// IGT=0;
Delay_ms(1000); //延时
// IGT=1;
Serial_Init(); //初始化串口
CLR_Buf(); //清除缓存
Delay_ms(60000); //延时
while(!Hand(“OK“)) //判断是否握手成功,不成则一直等待,在发送握手指令
{
Send_ASCII(“AT“);//发送联机指令
Send_Hex(0x0d); //回车符
Send_Hex(0x0a); //换行符
Delay_ms(60000); //延时
}
CLR_Buf(); //清除缓存
Delay_ms(Delay_time);//延时
Send_ASCII(“AT+CPMS=\“MT\“\“MT\“\“MT\““);
Send_Hex(0x0d); //回车符
Send_Hex(0x0a); //换行符
Delay_ms(Delay_time);//延时
while(!Hand(“OK“));//等待设置成功
CLR_Buf(); //清除缓存
//led2=0;
Delay_ms(Delay_time);//延时
Send_ASCII(“AT+CNMI=21“); //设置新短信到来时提示
Send_Hex(0x0d); //回车符
Send_Hex(0x0a); //换行符
Delay_ms(Delay_time);//延时
while(!Hand(“OK“));//等待设置成功
CLR_Buf(); //清除缓存
//led3=0;
Delay_ms(Delay_time);//延时
Send_ASCII(“AT+CMGF=1“);//文本(TEXT模式)
Send_Hex(0x0d); //回车符
Send_Hex(0x0a); //换行符
Delay_ms(Delay_time);//延时
while(!Hand(“OK“));//等待设置成功
CLR_Buf(); //清除缓存
//led4=0 ;
Delay_ms(Delay_time);//延时
Send_ASCII(“AT+CMGD=1“);//删除第一条消息
Send_Hex(0x0d); //回车符
Send_Hex(0x0a); //换行符
Delay_ms(Delay_time);//延时
while(!Hand(“OK“));//等待设置成功
CLR_Buf(); //清除缓存
//led1=0 ;
while(1)
{
if(strstr(Rec_Buf“+CMTI“)!=NULL)//看缓存字符串中是否含有“+CMTI“ 就是表示有新的短信
{
CLR_Buf(); //清除缓存
Delay_ms(Delay_time);//延时
Send_ASCII(“AT+CMGR=1“);//发送
Send_Hex(0x0d); //回车符
Send_Hex(0x0a); //换行符
Delay_ms(Delay_time);//延时
while(!Hand(“OK“));//等待设置成功
//LED2
if(strstr(Rec_Buf“openled3“)!=NULL) //如果有信息内容
led3=0; //开
else
评论
共有 条评论