单片机控制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这个不错
