⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smsdrive.c

📁 51单片机控制TC35模块的程序
💻 C
📖 第 1 页 / 共 3 页
字号:
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/* void TC35_ATV1(void)          // at联机测试命令   
{
    while(1)
    {
      TI=0;		  //清除发送标志
      RI=0;		  //清除接收标志
	  
      uart_send(Command_ATV1,6);	//串口发送 at联机测试命令    
    deal_with_attention(); 
	  
	 DelayMs(250);		   	//延时,等待TC35的反馈信息
	   DelayMs(250);
	    DelayMs(250);
		DelayMs(250);     
      
        if(flag == 1 && count == 6)
	     { 
	        if(rec[2]=='O'&&rec[3]=='K')   
               {
			     deal_with_right();
				 flag=0;
                 count=0;  
				 break;
			   }	
               else  
                 {
                   deal_with_error();
				   flag=0;
                   count=0; 
                 }         
	         }

                      
     }
}*/
//////////////////////////////////////////////////////////////////////////////////////////////////////
/*===========================================
*函数名:TC35信号强度测试 子函数
*参   数:
*功   能:
*返回值:
*作  者:weishao2401  2009/4/29
*============================================*/
 
void TC35_SignalTest(void)		  // TC35信号强度测试
{
    while(1)                                      
    {
      TI=0;
      RI=0;
      uart_send(Command_Csq,7);     // AT+CSQ
      deal_with_attention(); 

	  	 DelayMs(250);	//延时,等待TC35的反馈信息
	   DelayMs(250);
	    DelayMs(250);
		DelayMs(250);  
      
              if(flag == 1 && count == 28)
	     { 
	         if(rec[18]== '9'&& rec[19]== '9')   
               {
			     deal_with_right();
				 flag=0;
                 count=0;  
				 break;
			   }	//如果第19和第20个字符分别是“9和“9”,那正确,直接退出
               else  
                 {
                   deal_with_error();
				   flag=0;
                   count=0; 
                 }         //出错,进入下一次循环
           
	     }


    }
}

/*===========================================
*函数名:TC35短信格式设置 子函数
*参   数:
*功   能:
*返回值:
*作  者:weishao2401  2009/4/29
*============================================*/

void TC35_AtCmgf1(void)          // TC35短信格式设置
{	                                     
     while(1)                                      
    {
      TI=0;
      RI=0;
      uart_send(Command_Cmgf1,10);       // AT+Cmgf =1   
            deal_with_attention(); 

	  	 DelayMs(250);		   	//延时,等待TC35的反馈信息
		 DelayMs(250);
	   	 DelayMs(250);
	     DelayMs(250);  
		
	if(flag == 1 && count == 16)
	     { 
	         if(rec[12]=='O'&&rec[13]=='K')    
               {
			     deal_with_right();
				 flag=0;
                 count=0;  
				 break;
			   }//如果第13和第14个字符分别是“O和“K”,那说明正确,直接退出,否则就说明出错了

               else  
                 {
                   deal_with_error();
				   flag=0;
                   count=0; 
                 }         //出错,进入下一次循环
           
	     }     

     }
}

/*===========================================
*函数名:TC35编解码字符设置 子函数
*参   数:
*功   能:
*返回值:
*作  者:weishao2401  2009/4/29
*============================================*/

void TC35_AtCscs(void)          // TC35编解码字符设置
{	                                     
     while(1)                                      
    {
      TI=0;
      RI=0;
      uart_send(Command_Cscs,12);       // AT+CSCS=GSM 
            deal_with_attention(); 

	  	 DelayMs(250);		   	//延时,等待TC35的反馈信息
	   DelayMs(250);
	    DelayMs(250);
		DelayMs(250);  
		
	if(flag == 1 && count == 18)
	     { 
	         if(rec[14]=='O'&&rec[15]=='K')    
               {
			     deal_with_right();
				 flag=0;
                 count=0;  
				 break;
			   }//如果第15和第16个字符分别是“O和“K”,那说明正确,直接退出,否则就说明出错了

               else  
                 {
                  deal_with_error();
				   flag=0;
                   count=0; 
                 }         //出错,进入下一次循环
           
	     }     

     }
}


/*===========================================
*函数名:TC35新消息提示设置 子函数
*参  数:
*功  能:
*返回值:
*作  者:weishao2401  2009/4/29
*============================================*/

void TC35_AtCnmi(void)          // TC35新消息提示设置
{	                                     
     while(1)                                      
    {
      TI=0;
      RI=0;
      uart_send(Command_Cnmi,12);       // AT+CNMI=2,1 
      deal_with_attention(); 

	  DelayMs(250);		   	//延时,等待TC35的反馈信息
	  DelayMs(250);
	  DelayMs(250);
	  DelayMs(250);  
		
	  if(flag == 1 && count == 18)
	     { 
	         if(rec[14]=='O'&&rec[15]=='K')    
               {
			     deal_with_right();
				 flag=0;
                 count=0;  
				 break;
			   }//如果第15和第16个字符分别是“O和“K”,那说明正确,直接退出,否则就说明出错了

               else  
                 {
                   deal_with_error();
				   flag=0;
                   count=0; 
                 }         //出错,进入下一次循环
           
	     }     

     }
}

/*===========================================
*函数名:TC35读取短消息 子函数
*参  数:
*功  能:
*返回值:
*作  者:weishao2401  2009/4/29
*============================================*/

/*===========================================
AT+CMGR=7
+CMGR: 1,,23
[0891][683108301505F0][040D91][683164865667F7][0000][90607051008123][03][31D90C]

OK

41 54 2B 43 4D 47 52 3D 37 0D 0D 0A 2B 43 4D 47 52 3A 20 31 2C 2C 32 33 0D 0A [30 38 39 31 36 38 33 31 30 38 33 30 31 35 30 35 46 30 30 34 30 44 39 31 36 38 33 31 36 34 38 36 35 36 36 37 46 37 30 30 30 30 39 30 36 30 37 30 35 31 30 30 38 31 32 33 30 33 33 31 44 39 30 43] 0D 0A 0D 0A 4F 4B 0D 0A  
前26个字符是状态显示的,27开始是数据,倒数8个也是命令格式方面的。 
*============================================*/
void TC35_AtCmgd();
            
void TC35_AtCmgr()          // TC35读取短消息
{
                                    
                                        
                                 
      TI=0;
      RI=0;
      uart_send(Command_Cmgr,10);       // AT+CMGR=
      
      deal_with_attention(); 

	  DelayMs(250);		   	//延时,等待TC35的反馈信息
	  DelayMs(250);
	  DelayMs(250);
	  DelayMs(250); 
	  DelayMs(250);   
     

//	  TC35_AtCmgd();	
			     //出错,进入下一次循环
	
	    

    
}

/*===========================================
*函数名:TC35删除短消息 子函数
*参  数:
*功  能:
*返回值:
*作  者:weishao2401  2009/4/29
*============================================*/

/*===========================================
接收到:41 54 2B 43 4D 47 44 3D 36 0D 0D 0A 4F 4B 0D 0A
对应字符:
AT+CMGD=6<CR>
OK
*============================================*/

void TC35_AtCmgd()          // TC35删除短消息
{
	                                     
       ydl=0;                                  
   
      TI=0;
      RI=0;
	 
      uart_send(Command_Cmgd,10);       // AT+CMGD=
      
      
   
      deal_with_attention(); 

	  DelayMs(250);		   	//延时,等待TC35的反馈信息
	  DelayMs(250);
	  DelayMs(250);

	 {  if(flag == 1&& count == 16)
	     { 
	         if(rec[12]=='O'&&rec[13]=='K')    
               {
			     deal_with_right();
				 flag=0;
                 count=0;  
				
			   }

               else  
                 {
                   deal_with_error();
				   flag=0;
                   count=0; 
                 }         //出错,进入下一次循环
           
	     }     

     }

}


/*===========================================
*函数名:TC35 初始化 子函数
*参   数:
*功   能:
*返回值:
*作  者:weishao2401  2009/4/29
*============================================*/

void TC35_Init(void)
{
    TC35_AtSend(); 	  //AT联机测试
	DelayMs(250);
	DelayMs(250);
		 
    TC35_SignalTest(); 	   //TC35信号测试
    DelayMs(250);
	DelayMs(250);

    TC35_ATE1() ;
    DelayMs(250);	
	DelayMs(250);

	//TC35_ATV1() ;
    //DelayMs(250);	
//	DelayMs(250);

    TC35_AtCmgf1();	   //TC35短信格式设置,设为 文本格式
    DelayMs(250);	
	DelayMs(250);
	
    TC35_AtCscs();      //TC35显示字符设置,设为 GSM字符
    DelayMs(250);	
	DelayMs(250);

	TC35_AtCnmi();      // TC35新消息提示设置,设置为来消息提示
    DelayMs(250);	
    DelayMs(250);

	
}   




/*===========================================
*函数名:TC35 文本短信发送 子函数
*参   数:U8 User_ID
*功   能:选择用户User_ID,给他发送短信
*返回值:
*作  者:weishao2401  2009/4/29
*============================================*/

void TC35_AtCmgsT(U8 User_ID)	// 发送短信 子函数
{                                  
    while(1)                                      
    {
      TI=0;
      RI=0;
      switch(User_ID)
      {
        case 1: uart_send(Command_CmgsT1,20);   break;    // 给用户1发短信 
        case 2: uart_send(Command_CmgsT2,20);   break;    // 给用户2发短信 
      //   case 3: uart_send(Command_CmgsT3,20);   break;    // 给用户3发短信 
      //   case 4: uart_send(Command_CmgsT4,20);   break;    // 给用户4发短信 
        default: deal_with_error(); break;
      }

      deal_with_attention(); 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -