資源簡介
用于單片機的課程設計 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
評論
共有 條評論