9C51单片机(特别是AT89S52)控制GSM模块TC35收发短信的程序

这个程序是已经调完的,并且成功的,功能是定义了一个BUTTON1按键,,按下后就自动发短息,短信内容为nihao,GSM_ATCMGS()函数中有个数组。存入了指令加手机号加0d。把手机好的asc换成你的就能用了。不能用就hi我:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
void gsm_uart();
unsigned int uart_delay(unsigned int z);
void GSM_init();
void GSM_CMGF();
void GSM_ATCMGS();
void TELNUM();
void GSM_TEXT();
void GSM_test();
void BUTTON();
unsigned int  d;
unsigned char code ATEnter[]={0x41,0x54,0x0d};
unsigned char code ATCMGFEnter[]={0x41,0x54,0x2b,0x43,0x4d,0x47,0x46,0x3d,0x31,0x0d};
unsigned char code ATCMGS[]={0x41,0x54,0x2b,0x43,0x4d,0x47,0x53,0x3d};
unsigned char code TEL_NUM[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};
unsigned char code TEXT[]={0x4b,0x4f};
unsigned char code Enter[]={0x0d};
unsigned char code oneA[]={0x31,0x41};
unsigned char idata buf[20];

int  flag;
int  bufnum=0;

 uchar str1[]={"AT"};
 uchar str2[]={"ATD"};
 uchar str3[]= {"ATH"};
 uchar str5[]={"AT+CMGS="};




sbit bell=P1^6;
sbit betton1_1=P3^3;
sbit betton1=P3^4;
void gsm_uart()
{ EA=1;
  ES=1;
  SCON=0x50;   //UART方式1:8位UART;   REN=1:允许接收 
        PCON=0x00;   //SMOD=0:波特率不加倍 
        TMOD=0x20;   //T1方式2,用于UART波特率 
        TH1=0xFD; 
        TL1=0xFD;   //UART波特率设置:9600 
		TI = 0;
		RI = 0;
		EA = 1;
		TR1=1; 
}
unsigned int uart_delay(unsigned int z)
{ unsigned int a,b;
  for(a=z;a>0;a--)
  {for(b=1000;b>0;b--);} 
  return z;
}
void ddd() interrupt 4 using 3
{  
 if(RI)                                 //处理接收中断
   {   buf[bufnum]=SBUF;             //接收串口数据
          RI=0;
	    bufnum++;                     //清除中断标志位  
                                     
     
    
      }
  
}
void GSM_init()
{ 
	 uint i;
 	uchar   code test[]= {0x41,0x54,0X0D};
	ES = 0;

	  for (i=0;i<3;i++)
	  {
	  	 SBUF = test[i];
	  	 while (TI == 0);
		 TI = 0;
	  
	  }
 	
   ES = 1;
}
void GSM_CMGF()
{ 
 uchar   code sel[10]= {0x41,0x54,0x2B,0x43,0x4D,0x47,0x46,0x3D,0x31,0x0D}; //AT+CMGF=1回车
	 uint i;
 	 for(i=0;i<10;i++)
        { 
            SBUF=sel[i]; 
            while(TI==0); 
            TI=0; 
            
        }

}
void GSM_ATCMGS()
{ 	 uint i;
     uchar   code tel[20]= {0x41,0x54,0x2B,0x43,0x4D,0x47,0x53,0x3D,0x31,0x33,0x38,0x33,
0x36,0x30,0x32,0x33,0x33,0x37,0x39,0x0D};   
	 for(i=0;i<20;i++)
        { 
            SBUF=tel[i]; 
            while(TI==0); 
            TI=0; 
            
        }
          
} 

void GSM_TEXT()
{  
uchar   code neirong[10]={0x48,0x69,0x21,0x6E,0x69,0x68,0x61,0x6F,0x2E,0x1a};  //hi!nihao.
	uint i;
	ES =0;
	for(i=0;i<10;i++)
        { 
            SBUF=neirong[i]; 
            while(TI==0); 
            TI=0; 
            
        }
		ES = 1;

}
void send()
{
SBUF=oneA[0];while(TI==0);TI=0;

SBUF=oneA[1];while(TI==0);TI=0;
}
void GSM_test()
{
gsm_uart();
uart_delay(400);
    GSM_init();
uart_delay(1000);
ES =0;
	
bufnum = 0;  	   
		  if(buf[5]=='O' && buf[6] =='K')	

			{
			  P0=0xfe;uart_delay(1000);P0=0xff;
			
			} 
			else 	
			{
			 P0=0x00;uart_delay(4000);P0=0xff;
			}

}


void BUTTON()
{ betton1=1;
  betton1_1=0;
  if(betton1==0)
  {  
GSM_test();

uart_delay(1200);
     GSM_CMGF();
uart_delay(1200);
     GSM_ATCMGS();
uart_delay(1200);
     GSM_TEXT();
uart_delay(800);
   uart_delay(500);
     betton1=1;  
  }
}
main()
{ 
 BUTTON();
uart_delay(10);

}
  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值