• 大小: 5KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-05-12
  • 语言: C/C++
  • 标签: GSM  

资源简介

用于单片机的课程设计 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

评论

共有 条评论