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

📄 短信模块.c

📁 通过串口发送信息到Tc35i.提供了源程序
💻 C
字号:
#include<reg52.h>
#include<string.h>
#include<intrins.h>
//**************************************************************************
#define uchar unsigned char
#define uint unsigned int

#define uchar unsigned char
#define uint unsigned int

uchar getdata; 

sbit CLK=P2^0;      

//-------------------------------------
unsigned char tempL=0;
unsigned char tempH=0;
float temperature,tempdate;//x

sbit send_key = P2^1;	//短信息发送
sbit shutdown_key = P2^3;// 关机

sbit P2_0 = P2^0; 

uchar idata mgsOK[]="OK";//
uchar  Temp[1];
uchar  Telnum[10];
uchar  redata[40];
uchar  delchar,j; //
uchar  zone,num2,datesbuf,k;//
bit havemess;
bit flag;
//**************************************************************************
//延迟函数

void delays(uchar n)	  // void Delay11(uchar n)
{
	uchar i=204;
	while(n--)
	{
	  while(i--);
	}
}



////////////////////////////////////////////////////////////////



///////////////////////////////////////////////
void t0(void) interrupt 1 using 0 
{ 
  CLK=~CLK; 
} 
  
/*void t1(void) interrupt 3 using 0 
{ 
  TH1=(65536-4000)/256; 
  TL1=(65536-4000)%256; 
 
} */


///////////////////////////////////////////////



void send_initial()
{  /*定时器1和串口初始化,定时器1用来产生波特率*/
   TMOD = TMOD|0x20;	 // T1使用定时模式,工作模式2,无门控位
   TH1  = 0xFD;			 // 产生9600波特率,晶振为11.0592
   TL1  = 0xFD;			
   PCON = 0x00;			 // SMOD=0;
   TR1  = 1;			 //T1开始计数
   SCON = 0x50;			 //	允许接收,工作方式1;一个0起始位,一个1停止位
   ES   = 1;			 // 串口中断允许

   EA   = 0;             // CPU关闭中断,串口发送时,不在需要外部中断
}

/*串口发送一个字节*/
//功能:
//输入:
//输出:
void send_onechar(uchar send_sdata)
{  TI   = 0;
   SBUF	= send_sdata;
   while(!TI);
   TI   = 0;
}

/*串口发送一数组*/
//功能:
//输入:
//输出:
//--------------------------------------
void send_data(uchar *row,uchar length)
{  uchar i=0;
   for(i=0;i<length;i++)
   {  send_onechar(*row);
      row++;
   }
   delays(500);
}
//--------------------------------------


/*串口接收一个字节*/
//功能:
//输入:
//输出:
uchar receive_onechar()
{  uchar temp=0;
   RI  = 0;
   while(!RI);
   temp= SBUF;
   RI  = 0;
   return temp;
}




/*************************************************************************************/
void main(void)
{	unsigned char arrayy[]={0x1A,0x0d,0x0a};
   
     P2_0=1;
     send_key=1;
	 shutdown_key=1;
	 send_initial();	
 	 delays(200);
    
     delays(200);
    // EraseMsgAll();  //删除sim卡内全部短信息 
	 
    // num2=1;//  num2复位,重新接收"+".....
    
	 while(1)
	{ 
		 if(send_key==0)
		 {
		  delays(10);
		  if(send_key==0)
		  {
       send_data("AT\r\n",4);  //发送AT指令,测试连接成功
		send_data("AT+CMGF=1\r\n",11);  //设置为TEXT模式
		send_data("AT+CSCA=+8613800769500\r\n",24);  //设置短信中心号码,各地区不一样
		send_data("AT+CSMP=17,167,0,0\r\n",20);  //设置TEXT模式参数,最后一个参数是数据编码类型;0表示默认字符集(GSM),4表示8位数据
		send_data("AT+CSCS=GSM\r\n",13);  //设置为GSM字符集
		send_data("AT+CMGS=15999705094\r\n",21);  //输入对方电话号码
		send_data("ok\r\n",10);  //写入发送内容,可为英文符号
		send_data(arrayy,3);  //发送结束语1A,一定要十六进制大写,不是ASIC
        P2_0=~P2_0;
		  }

		 }
     }
     while(2)
	{ 
		 if(shutdown_key==0)
		 {
		  delays(10);
		  if(shutdown_key==0)
		  {
          send_data("AT+CFUN=0\r\n",11);  //关机,这个命令停止GSM软件堆栈和硬件层
		  }
		 }
     }
}

⌨️ 快捷键说明

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