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

               
这个程序是已经调完的,并且成功的,功能是定义了一个BUTTON1按键,,按下后就自动发短息,短信内容为nihao,GSM_ATCMGS()函数中有个数组。存入了指令加手机号加0d。把手机好的asc换成你的就能用了。不能用就hi我:#include<reg52.h>#define uchar unsigned char#define uint unsigned intvoid 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);}
           
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值