微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 单片机控制TC35未能成功

单片机控制TC35未能成功

时间:10-02 整理:3721RD 点击:

本人接触单片机时间不长,各种原文件也是参照其他高手获得,但是出现了一点问题
这个实验是享用单片机发送短信到自己的手机,实验失败,原文件如下,希望各方高手能帮帮我,查找其中的错误所在~先谢了

#include<reg52.h>
#include<tc35.h>
#define uint unsigned int
#define uchar unsigned char
/***********************************************
本实验主要是测试TC35和单片机的通信
***********************************************/
sbit KEY1=P3^2;
sbit D1=P1^0;
sbit D2=P1^1;
sbit D3=P1^2;
sbit D4=P1^3;
sbit D5=P1^4;
sbit D6=P1^5;
sbit D7=P1^6;
uchar code TC_AT[]="AT";//发送at指令
uchar code TC_CMGF[]="AT+CMGF=1";  //设置成文本模式
uchar code TC_CSCS[]="AT+CSCS=GSM";//设置为GSM字符集
uchar code TC_CSMP[]="AT+CSMP=17,167,0,0";  //设置TEXT模式参数
uchar code TC_CMGS[]="AT+CMGS=13842001511";//发送电话号码
uchar code TC_Text[]="Hello world9999!";  //发送个内容
void Sent_AT(void);  //发送AT
void Sent_CMGF(void);
void Sent_CSMP(void);
void Sent_CSCS(void);
void Sent_CMGS(void);
void Sent_Text(void);
void GSM_SentText(void);//发送英文短信
void delay(uint z)
{
    uint i,j;
    for(i=0;i<z;i++)
     for(j=0;j<110;j++);
}
void Max232Init()
{
      TMOD=0X20;//TIME:time1,mode2,8-bit reload
   TH1=0XFD; // //9600  bds  at 11.0592
   TL1=0XFD;
   TR1=1;    //启动定时器1
   SCON=0X50;//高四位分别为SM0,SM1,SM2,REN,工作方式1,8位UART
   SM2=1;
   REN=1;
   ES=1;     //允许串口中断
   EA=1;     //开总中断
  }
void Max232SentChar(uchar ch)
     {
   ES=0;
   SBUF=ch; //发送一字节数据到数据缓冲区
   while(!TI); //当接收到数据发生中断
   TI=0;      //软件置0
   ES=1;
  }
void Max232SentString(uchar *DData)
{
  while(*DData!='\0')
   {
   Max232SentChar(*DData);
      DData++;
   }
}
void Sent_AT(void)
{
  Max232SentString(TC_AT);//发送AT
  Max232SentChar(0X0D);
  D1=0;
  delay(1000);
}
void Sent_CMGF(void)
{
  Max232SentString(TC_CMGF);//发送AT+CMGF=1
  Max232SentChar(0X0D);
  D2=0;
}
void Sent_CSCS(void)
{
  Max232SentString(TC_CSCS);//发送AT+CSCS=GSM
  Max232SentChar(0X0D);
  D3=0;
}
void Sent_CSMP(void)
{
Max232SentString(TC_CSMP);//发送AT+CSMP=17,167,0,0
Max232SentChar(0X0D);
D4=0;
}
void Sent_CMGS(void)
{
Max232SentString(TC_CMGS); //发送AT+CMGS=15007845767
Max232SentChar(0X0D);
D5=0;
}
void Sent_Text(void)
{
Max232SentString(TC_Text); //发送Hello world!
Max232SentChar(0X1a);
Max232SentChar(0X0D);
D6=0;
}
void GSM_SentText(void)
{
Sent_AT();
delay(1000);
Sent_CMGF();
delay(1000);
Sent_CSCS();
delay(1000);
Sent_CSMP();
delay(1000);
Sent_CMGS();
delay(1000);
Sent_Text();
delay(1000);
}
void main()
{
Max232Init();
while(1)
{if(KEY1==0)
  {
    delay(100);
while(KEY1==0)
{
delay(100);
    GSM_SentText();//发送短信
D7=0;
}
   }
  }
}
void EXT() interrupt 4
{
ES=0;
if(TI)
{
  TI=0;
}
if(RI)//如果接收到数据产生中断
{
  RI=0;
}
ES=1;
}



先用电脑收发,确保TC35是好的,再来调程序

我用电脑调试了TC35,没问题,能发短信
又用电脑测试了单片机,能发出来命令
但是吧单片机和TC35连起来的时候,单片机发的命令TC35好像不认,因为我设置了“如果单片机收到串口发来的信息,则D8亮”,但是D8一直不亮,说明没有返回信息,问题就在这,为什么我用单片机发的命令TC35不理睬呢

敢问小编的问题解决没,我的也出现此问题,若解决了求解,再次先谢过……

同出现这个问题...联调的时候单片机发出AT指令而TC35毫无反应!

定,看看有没用

顶一顶让更多人看见。(⊙_⊙)

http://bbs.elecfans.com/jishu_327783_1_1.html这个不错

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top