问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

【求助】51单片机控制的TC35模块无法发送短信!!!

发布网友 发布时间:2022-05-06 09:26

我来回答

3个回答

热心网友 时间:2022-06-29 06:16

到这个QQ群里来吧127858558,上面有现成的原理图和程序,都是测试过的,先发部分给你:请查收,我现在就是在用这个,不会有问题
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define RxIn 90 //定义接收的数组长度为90
uchar code AT[]="AT"; //握手信号
uchar code ATE[]="ATE"; //关回显
uchar code AT_CNMI[]="AT+CNMI=2,1";//设置这组参数来了新信息直接显示到串口,不作存储
uchar code AT_CSCA[]="AT+CSCA=\"+8613800571500\"";//设置服务中心号码
uchar code AT_CMGF[]="AT+CMGF=1";//设置短信的格式为text格式
uchar code AT_CMGR[]="AT+CMGR=";//读取短信指令
uchar code AT_CMGS[]="AT+CMGS=";//发送短信指令
uchar code AT_CMGD[]="AT+CMGD=";//发送短信指令
uchar code successfully[]="Operate Successfully!";//发送操作成功信息到目标号码
uchar code fail[]="Operate failed,try again!"; //发送操作失败信息到目标号码
uchar AT_delete[12];
uchar AT_Read[12]; //用来存储发送读取短信指令
uchar AT_SendNumber[25]; //用来存储发送短信号码指令
uchar numberbuf[3]; //用来保存短信条数
uchar idata SystemBuf[RxIn]; //储存出口接收数据
uchar CommandBuf[6]; //用来储存指令
uchar idata state[17]; //用来存储IO口状态
uchar idata state1[17]; //用来存储IO口状态
uchar Rx=0;
uint temp; //记录状态
uchar temp1; // 用于记录P0口状态
uchar temp2; // 用于记录P2口状态
bit check=0; //查询标志位
bit receiveready=0; //接收短信标志位
bit sendready=0; //发送短信准备标志位
bit send=0; //发送短信标志位
bit flag=0; //指令标志位
sbit P3_7=P3^7;//启动GSM的启动线连IGT
sbit realy0=P0^0;//继电器1
sbit key1=P2^0; //开关1
sbit key2=P2^1; //开关2
/******************************************************************************************************************/
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////函数void Delay_ms(uint i);实现功能:进行毫秒延时///////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/******************************************************************************************************************/
void Delay_ms(uint i)
{
unsigned int j;
for(;i>0;i--){
for(j=0;j<125;j++)

}
}
/******************************************************************************************************************/
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////函数void Start_GSM(void);实现功能:对TC35进行启动,开启TC35///////////////////////////////////
//功能详述:单片机上的P3_7管脚是跟TC35的IGT管脚相连;需要启动TC35,必须在 15脚(/IGT)加时长至少为100ms的低电平信号,
///且该信号下降沿时间小于1ms。启动后,15 脚的信号应保持高电平.
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/******************************************************************************************************************/
void Start_GSM(void)
{
P3_7=0;
Delay_ms(1000);
P3_7=1;
Delay_ms(1000);
}
/******************************************************************************************************************/
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////函数void UART_init;实现功能:对串口进行初始化////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/******************************************************************************************************************/
void UART_init (void)
{
TMOD=0x20; //选择定时器1
PCON=0x00; ///波特率不加倍
SCON=0x50; //串行工作方式1允许串行接收
TH1=0xFD; //晶振位11.0592MHZ,选择波特率为9600
TL1=0xFD; //在相应计数器上赋值
EA=1; //总中断开启
ES=1; //串行中断开启
TR1=1; //开启定时器1

}
/******************************************************************************************************************/
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////函数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 receive(void) interrupt 4 using 1;实现功能:通过串口接收数据///////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/******************************************************************************************************************/
void receive(void) interrupt 4 using 1
{

if(RI)
{

if(Rx<RxIn)
{
SystemBuf[Rx]=SBUF;
Rx++;
}

RI=0;
}
}
/******************************************************************************************************************/
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////函数void GSM_INIT(void);实现功能:初始化TC35模块///////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/******************************************************************************************************************/
void GSM_INIT(void)
{

LOOP:
Delay_ms(1000);
sendstring(AT);
Delay_ms(1000);
sendstring(ATE);
Delay_ms(1000);
sendstring(AT_CNMI);
Delay_ms(1000);
sendstring(AT_CSCA);
Delay_ms(1000);
for(Rx=0;Rx<RxIn;Rx++)
{
SystemBuf[Rx]=0x00;
}
Rx=0;
sendstring(AT_CMGF);
Delay_ms(1000);
if((SystemBuf[2]=='O')&&(SystemBuf[3]=='K')) //判断是否模块初始化成功,成功的话模块会回复"OK"给单片机
{ //如果单片机没有收到OK,就继续发送初始化指令/

for(Rx=0;Rx<RxIn;Rx++)
{
SystemBuf[Rx]=0x00;
}
Rx=0;
}
else
{

for(Rx=0;Rx<RxIn;Rx++)
{
SystemBuf[Rx]=0x00;
}
Rx=0;
goto LOOP;
}
}
/*******

热心网友 时间:2022-06-29 06:16

我们也学过51单片机,单片机部分的原理图主要得画上复位电路和时钟电路(就是晶振电路),这两个电路都很好找的,然后需要一个稳压电源电路,这个得去查点相关论文了也不难,想再复杂点可以加上个看门狗电路就行了,至于GSM就不太懂了,只知道TC35有两种接口RS232和SIM接口,SIM接口显然跟单片机没关系,所以,单片机要想跟TC35通信需要通过RS232,所以建议你了解一下RS232的通信协议,我只知道它是串口通信,应该会涉及到单片机的p3的那八个I/O口,如果是本科毕设,这些应该就够了,我也就知道这么多了
哦对了,如果程序比较复杂的话可能还要加上译码芯片和外接的扩展芯片,比如外接程序存储器和外接数据存储器。外接芯片的电路书上都有。

热心网友 时间:2022-06-29 06:17

哦?
最后的回车换行符好好看看,我怎么记得是0A和 0D呢。
还有ASCII码里面00是代表什么来着,忘了,呵呵
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
狗患肠炎怎么治 狗狗结肠炎症状及治疗(便秘性结肠炎的症状及治疗) 【干货】如何翻译商务英语中的数词 一年级数量词组成的短语 abs和pp材质食用哪个好 abs塑料是食品级的吗 食品级abs塑料宝宝可以用吗 把实际长度扩大400倍后画在图纸上,比例尺是400:1.___(判断对错) 原来图纸的比例尺是1:1000000,把图纸放大16倍新图的比例尺是多少? 把实际长度扩达400倍后画在图纸上,比例尺是1:400? ( ) 对或错 把实际距离缩小500倍后画在图纸上,比例尺为500:1.___.(判断对错) csc[arccos(1300/1301)],要用几分之几的分数值表示? 创业初期,作市场问卷调查应该考虑哪些方面 眼部多灶性csc诱发原因? 我想在研究生阶段申请公费出国请问985院校有这样的机会吗?出国后读的是硕士研究生还是博士研究生啊 关于公司面试和市场调查问卷方面的问题 如果让你做一份调查问卷,主题是调查当地人饮食的口味,你该从哪些方面做? 求一份营养早餐的调查问卷题目 学校食堂做主食有米饭,馒头,花卷,面条你的同班同学最喜欢吃什么,请设计一个调查问卷? 市场问卷调查数据整理 做个问卷调查。超市派发试吃的面食,怎样才能让顾客愿意试吃 不要拒绝? 如何在网上做市场调查为问卷? (如在某个特定的城市调查一下多少人爱吃兰州拉面等等) 重庆小面调料调查问卷 山西面食文化问卷调查 世界万物都有灵,那么地球真的是活着的嘛? 如何规划好自己的一天? mdy08ev是多少w 让睫毛快速生长的方法 睫毛快速生长的方法有哪些? 怎样注销账户 怎么快速注销 51单片机接SJA1000的can总线节点电路 cs片选端接52的什么管脚 sja1000的基址怎么确定啊 可以用DPTR访问吗 通过控制AT-89C 51单片机P1口,控制LED灯的亮与灭。每个LED闪烁10次,再移向下一个LED同样10次循环不止编 谁有彩电CPU,8873CSCNG6PR6各脚功能电压 请教离婚协议书关于抚养费的问题 羊肉烩面的做法是什么 北仑大碶高天王街有没有兰州拉面 菏泽学院怎么样 求这首歌歌名? 下载好做美妆包的软件,然后怎么做? 求推荐一个免费还好用的读书APP 免费看书APP 荔枝文学安全吗 微信公众账号那个类型的关注的人最多? 微信好玩吗?推荐几个好玩的! 我是一个刚进医院的小*,我想知道如何称呼上司和同事比较好。1.比如说院长的助理见面打招呼我该 gibson sg special适合重金属吗?什么电吉他音箱适合重金属&#47;硬摇?(小瓦数) 5000内买电吉他+音箱+效果器。专家们给点意见,谢 百灵达报价详情介绍 t-ara day by day 和sexy love mv到底讲了个什么故事 如何购买电吉他