内容发布更新时间 : 2025/11/4 17:29:56星期一 下面是文章的全部内容请认真阅读。
附录Ⅰ
主要程序代码
1、MAIN.C  主程序代码如下: #include
LED1=0; //注册指示灯 开 Start_GSM(); //开启TC35 Delay_ms(46000); //延时大约20秒 ,等待模块联网/ UART_init(); //串口初始化/ GSM_INIT(); //对tc35模块进行初始化 //Write_Password(); Read_Password();
LED1=1; //注册指示灯 开 while(1) { receive_ready(); //此函数的功能是判断是否有新短信来,如果来的话就置位 receiveready 为1 if(receiveready==1) { LED2=0; read_message(); //发送读取短信指令 receiveready=0; sendready=1; // LED2=1; } Delay_ms(300); message_read(); //判断短信,准备是否回复短信给目标号码 if(send==1) { Delay_ms(2000); readcommend(); //读取短信内容,做出相应操作:开关继电器等 sendmessage(); //发送回复短信指令 其中 包含提取对方手机号操作 Delay_ms(1000); delete_message(); //删除读短信指令
39
   flag=0;    for(Rx=0;Rx         if(BaoJing==1)   {             sendBaoJing();      BaoJing=0;      Delay_ms(6000);      LED4=1;         }   }  }  /******************************************************************************************************************/  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////函数void receive(void) interrupt 4 using 1;实现功能:通过串口接收数据///////////////////////////////  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////  /******************************************************************************************************************/ void receive(void) interrupt 4  {       if(RI)  {         if(Rx     SystemBuf[Rx]=SBUF;     Rx++;    }        RI=0;  } }   /******************************************************************************************************  40      ////////////////////////////////////void int0(void) interrupt 0 :实现功能: 实现紧急短信报警  ********************************************************************************************************/ void int0(void) interrupt 0      {  BaoJing=1; LED4=0; }    /**************************************************************************************  ////////////////////////////   ***************************************************************************************/    2、TC35.C   #include  uchar code AT[]=\       //握手信号  uchar code ATE[]=\       //关回显  uchar code AT_CNMI[]=\    //设置这组参数来了新信息直接显示到串口,不作存储   uchar code AT_CSCA[]=\//设置服务中心号码   徐州移动 +8613800516500 徐州联通 +8613010350500    uchar code AT_CMGF[]=\    //设置短信的格式为text格式   uchar code AT_CMGR[]=\   //读取短信指令  uchar code AT_CMGS[]=\    //发送短信指令  uchar code AT_CMGD[]=\    //删除短信指令   uchar code successfully[]=\//发送操作成功信息到目标号码   uchar code fail[]=\ //发送操作失败信息到目标号码  uchar code danger[]=\                  //发送警报信息 提示有人闯入、煤气泄漏、失火的信息   uchar code MyTel[]=\              //我的手机号码  41       uchar AT_delete[12];  uchar AT_Read[12];         //用来存储发送读取短信指令    uchar AT_SendNumber[25];         //用来存储发送短信号码指令   uchar numberbuf[3];          //用来保存短信条数   uchar idata SystemBuf[RxIn];        //储存出口接收数据   uchar CommandBuf[8];        //用来储存指令   uchar Rx=0;   // uchar idata state[17];         //用来存储IO口状态   //uint temp;           //记录状态     //uchar temp1;          //用于记录P0口状态  //uchar temp2;            //用于记录P2口状态   //bit check=0;          //查询标志位   bit receiveready=0;          //接收短信标志位  bit sendready=0;           //发送短信准备标志位  bit send=0;              //发送短信标志位  bit flag=0;              //指令标志位  bit BaoJing=0;                   //报警标志位!  /******************************************************************************************************************/  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////  //////////////////////函数void UART_init;实现功能:对串口进行初始化////////////////////////////////////////////////  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////  /******************************************************************************************************************/ void UART_init (void) {   TMOD=0x20;  //选择定时器1     PCON=0x00; ///波特率不加倍      SCON=0x50; //串行工作方式1允许串行接收        TH1=0xFD; //实验板上晶振位11.0592MHZ,选择波特率为9600     TL1=0xFD; //在相应计数器上赋值     EA=1;  //总中断开启   EX0=1;      //外部中断0允许位   IT0=0;      //跳变沿触发方式,从高-->低的负跳变有效     ES=1;  //串行中断开启     TR1=1;  //开启定时器1  }  /******************************************************************************************************************/  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////  42      ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////  //////////////////////函数void sendchar(uchar ch);实现功能:发送一字节数据////////////////////////////////////////////////  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////  /******************************************************************************************************************/ void sendchar(uchar ch) {   SBUF=ch;  while(TI==0);  TI=0; }  /******************************************************************************************************************/  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////  //////////////////////函数void sendstring(uchar *p);实现功能:通过串口发送字符串/////////////////////////////////////  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////  /******************************************************************************************************************/ void sendstring(uchar *p) {         while(*p)     {       sendchar(*p);      p++;  }      sendchar(0x0D);//? 回车     sendchar(0x0A);//? 换行 }  /******************************************************************************************************************/  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////  //////////////////////函数void Start_GSM(void);实现功能:对TC35进行启动,开启TC35///////////////////////////////////  //功能详述:单片机上的IGT管脚是跟TC35的IGT管脚相连;需要启动TC35,必须在 15脚(/IGT)加时长至少为100ms的低电平信号,  ///且该信号下降沿时间小于1ms。启动后,15 脚的信号应保持高电平. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////  /******************************************************************** 43