搜索
bottom↓
回复: 29

TC35与51单片机通信问题

[复制链接]

出0入0汤圆

发表于 2010-12-13 19:45:02 | 显示全部楼层 |阅读模式
TC35和电脑通信良好,但是通过51单片机控制发送短信总是不成功!
看很多帖子说是电平不匹配的问题,51单片机是5V供电。
TXD,RXD分别接单片机的TXD,RXD。用电阻分压,不知道可不可一。
下面贴出原理图和实验程序,请大家看看有没有什么问题,谢谢!!!
/**********************************************
发送中文短信,内容是固定。
GSM_TC35_中文短信发送程序测试
程序功能:发中文短信
晶振:11.0592M
日期:2010-12-13
**********************************************/
#include <reg52.h>
#include <string.h>
#include <stdio.h>

#define uint unsigned int
#define uchar unsigned char

sbit key1 = P0^1; //按键定义,当按键按下,则发送短信

char code num[] = "15072718697F";//要接收短信的号码
char code sms[] = "5929751F82F14FCAFF0C795D4F60751F6D3B61095FEBFF01";//短信内容:"天生英俊,祝你生活愉快!"Unicode码

char code str1[] = "AT\n"; //发送AT,握手指令
char code str2[] = "AT+CMGF=0\n"; //定义发送的短信为PDU格式,即短信内容为中文
char code str3[] = "AT+CSCS=GSM\n"; // 使用GSM字符集
char code str4[] = "AT+CSMP=17,167,0,8\n"; //长度
char code str5[] = "AT+CMGS=";   
char code str6[] = "0891683110702105F011000D9168"; //短信信息中心号码设置
char code str7[] = "000800";

void Serial_Init(void); //声明串口初始化函数
void Delay_ms(uint time); //声明延时函数
void Send_PDU_Message(char num[], char sms[]); //声明给指定号码发送PDU模式短信息函数
//=====主函数=====//
void main(void)
{
Serial_Init();
TI = 1;

while(1)
{
  if (key1 == 0)
{
Delay_ms(20);
if (key1 == 0)
{
Delay_ms(20);  
Send_PDU_Message(num, sms);
}
}
}
}
//=====串口初始化函数=====//
void Serial_Init(void)
{
SCON = 0X50;  //串口:方式1,允许发送和接收
TMOD = 0x20;  //定时器1:模式2,8位自动重装模式,用于产生波特率
TH1 = 0XFD;   //11.0592MHZ晶振,设置波特率为9600
TL1 = 0XFD;
TR1 = 1;  //开启定时器1  
}
//=====延时函数=====//
void Delay_ms(unsigned int time)
{
  unsigned int i;

for (; time>0; time--)
  {
   i=1500;
   while(i--);
  }
}
//=====串口中断=====//
/*void Serial_Int() interrupt 4
{
ES = 0;
if(TI)
{
TI = 0;
}
if(RI)
{
RI = 0;
}
} */
//=====中文短信内容发送函数=====//
//=函数功能:给指定号码发送中文短信。num[]=接收端号码;Sms[]=发送中文内容的Unicode编码
//=
//=
//==============================//
void Send_PDU_Message(char num[], char sms[])
{
uchar i;

printf("%s", str1); //发送握手指令
Delay_ms(200);
printf("%s", str2); //设置为PDU模式,适合发送短信内容为中文
Delay_ms(200);
printf("%s", str3); //使用GSM字符集
Delay_ms(200);
printf("%s", str4); //设置PDU模式参数,8为使用Unicode编码
Delay_ms(200);
printf("%s", str5);
printf("%d\n", strlen(sms)/2+15); //字节长度,与实际短信内容长度有关
Delay_ms(200);
printf("%s", str6); //一开始发送的字符,包括短信中心号码等,这部分一般都是固定不变的,可以不用管它
for (i=0; i<6; i++) //然后接收短信的电话号码再两位两位分别调换位置
{
   printf("%c%c", num[2*i+1], num[2*i]);
}
printf("%s", str7); //固定字符
printf("%02x", strlen(sms)/2); //中文短信内容字数
printf("%s\x1a", sms); //发送内容的Unicode编码字符串+(CTRL+Z)
Delay_ms(200);
}   


原理图 (原文件名:00.jpg)

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2010-12-13 20:25:55 | 显示全部楼层
你连接了MAX232没有 ,如果连接了请断开
如何MCU和TC35通讯是不能连接MAX232的~~

出0入0汤圆

 楼主| 发表于 2010-12-13 20:34:16 | 显示全部楼层
回复【1楼】wei6130
-----------------------------------------------------------------------

没有连接MAX232,直接接的单片机!请问这样电平转换可以吗?

出0入0汤圆

发表于 2010-12-13 21:45:20 | 显示全部楼层
对,不要232的,tc35有没有正常启动?卡有没问题?要不我发个程序你看看?我用过的,很好

出0入0汤圆

 楼主| 发表于 2010-12-14 13:19:23 | 显示全部楼层
回复【3楼】amfy
-----------------------------------------------------------------------

那真的是太好了!谢谢啊!~~~~等待你上传中、、、

出0入0汤圆

发表于 2010-12-15 15:28:29 | 显示全部楼层
你是孝感的~~~我也是啊!

出0入0汤圆

发表于 2010-12-15 15:29:56 | 显示全部楼层
经过测试你的程序和图都是对的~~应该是没有问题了 不知道你问题解决没有

出0入0汤圆

 楼主| 发表于 2010-12-15 22:06:13 | 显示全部楼层
回复【6楼】wei6130
-----------------------------------------------------------------------
????你怎么知道我是孝感的啊???
你也是孝感的??呵呵,好巧啊!
你亲自调试的??

出0入0汤圆

发表于 2010-12-15 23:07:22 | 显示全部楼层
正在学TC35发短信,学习下!

出0入0汤圆

发表于 2010-12-16 13:51:51 | 显示全部楼层
楼上的大虾,请问TC35发短信,对电源有什么要求吗?

出0入0汤圆

发表于 2010-12-16 14:15:40 | 显示全部楼层
mark

出0入0汤圆

 楼主| 发表于 2010-12-16 22:36:51 | 显示全部楼层
回复【9楼】nihao2010
-----------------------------------------------------------------------

对于TC35模块来说,电源是有要求的!
要求GSM模块要求在发送数据时确保电源BAT端能够供应4.2V的电压,大于1A的电流。
还是把我的电源电路传上来你参考下吧!

电源 (原文件名:电源电路.jpg)

出0入0汤圆

发表于 2010-12-17 12:24:25 | 显示全部楼层
肯定是亲自调试的啊~~~

出0入0汤圆

发表于 2010-12-17 12:33:39 | 显示全部楼层
我是看到程序里面的短信中心号码了。。。
我是新技术学院的。。。

出0入0汤圆

 楼主| 发表于 2010-12-18 10:17:10 | 显示全部楼层
回复【13楼】wei6130
-----------------------------------------------------------------------

不是吧!~~我也是啊!我是07电信的!
你是信息工程系的不??
一起联系讨论下啊!哈哈、、、
速回!!!

出0入0汤圆

发表于 2010-12-18 13:50:31 | 显示全部楼层
回复【14楼】zfdpj
-----------------------------------------------------------------------

啊 我是信工的 你qq几多啊~

出0入0汤圆

发表于 2011-2-18 15:18:57 | 显示全部楼层
请问这个问题解决没有。如果解决了。请说明一下。我也遇到了类似问题。万分感谢

出0入12汤圆

发表于 2011-2-18 15:57:14 | 显示全部楼层
关注

出0入0汤圆

发表于 2012-3-26 14:15:55 | 显示全部楼层
顶起学习一下。

出0入0汤圆

发表于 2012-7-26 23:51:35 | 显示全部楼层
我的也是这个问题
,就是发不出去短信

出0入0汤圆

发表于 2012-9-6 21:26:46 | 显示全部楼层
楼主你好,我现在在学tc35。发送的指令电脑能收到,就是通过单片机的时候,没反应,可不可以把你的程序发给我一份,谢谢了。

出0入0汤圆

发表于 2012-9-8 00:35:32 | 显示全部楼层
碰到过类似问题~

出0入0汤圆

发表于 2012-9-8 16:08:21 | 显示全部楼层
amfy 发表于 2010-12-13 21:45
对,不要232的,tc35有没有正常启动?卡有没问题?要不我发个程序你看看?我用过的,很好 ...

请问一下您有没有玩过广州星海科技的SIM300,,小弟现在弄这个出现问题啊,,求指导知道,求例程

出0入0汤圆

发表于 2012-9-8 17:39:44 | 显示全部楼层
留个痕迹TC35

出0入0汤圆

发表于 2012-9-9 19:27:12 | 显示全部楼层
tc35的tx端有没有和tc35上自带的max232的tx端断开啊?

出0入0汤圆

发表于 2012-9-24 12:47:47 | 显示全部楼层
楼主问题解决了吗?

出0入0汤圆

发表于 2013-4-27 17:17:07 | 显示全部楼层
zfdpj 发表于 2010-12-16 22:36
回复【9楼】nihao2010
-----------------------------------------------------------------------

我用笔记本的USB供电,经常发送出错,可能是电流不够!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 16:19

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表