微软公司宣布不再支持你正在使用的 IE浏览器,这会严重影响浏览网页,请使用微软最新的Edge浏览器
厂商专区
产品/技术
应用分类

如何让51单片机与GSM模块实现通信?

2018-05-16 15:51 来源:互联网 编辑:Jessie

51单片机与GSM模块实现通信

1、检测串口线的好坏

1)将串口线插在电脑上,用短路子短接串口的2脚和3脚

2)打开串口调试助手

3)点击自动发送,在自动发送的窗口中随便发个数据,看看能不能接收到若能接收到自己发的数据表示串口线是正常的,否则是坏的。

2、下完单片机程序后,看看串口是否有数据发出检测

3、单片机上与模块通信的4个灯表示的含义

1)DO灯

一直闪表示单片机串口与GSM模块串口通信不正常,否则串口通信正常

2)D1灯

灯亮就表示模块注册上网络,否则没有注册上网络

3)D2灯

灯亮表示开始发短信

4)D3灯

灯亮表示发短信结束

4、单片机板子与GSM模块的连接

单片机---------GSM模块

VCC--------vcc(P5的第3脚)

GND--------GND(P5的第4脚)

RX_232(表示单片机的发)----------RXDPC_232(模块的收(P5的第5脚))

TX_232(表示单片机的收)----------TXD_PC232(模块的发(P5的第6脚))



gsm模块和单片机连接

单片机连接GSM模块,直接就是把异步串行通信口的TX和RX连上就可以,别忘了地线。

注意事项:

1、不同的单片机有不同的电压,一般GSM模块的输入输出电平是2.85V,51系列的电平是5V,一般在51输出的TX那根线上串联2K的电阻,基本上可以使用。如果是3.3V的单片机,这个电阻就可以很小,几百欧姆就可以。

2、GSM模块本身的电源和SIM卡电路很麻烦,首先是大多数GSM模块都是用FPC40的接口,排线的间距只有零点五毫米,而且是塑料外壳,不好焊接。焊不好的话工作不稳定。其次是电源部分较麻烦,GSM模块的发射电流较大,最大瞬间电流2A!所以电源部分一般要用LM2576这种大电流的DC-DC变换器来提供4V的电压,DCDC电路设计本身就很不容易,个人应用比较难,需要做电路板。搭接的不稳定。还有SIM卡部分,SIM卡与GSM模块通信本身就是个复杂的高频过程,电路抗干扰能力强,我曾经试过用电线给它们连接起来,没有十分钟,就掉线了。所以SIM卡部分也需要精心设计,别看只有五根数据线而已。

单片机控制TC35GSM模块的方法

1、硬件连接

电路见下图只需设计一个TTL转RS232电平电路,连接到MCU的UART口,另一端直接连接到TC35。

如何让51单片机与GSM模块实现通信?




2、指令输出的方法

单片机串口设置成模式1(9600,N,8,1),依次将AT+xxx以ASCII码形式输出到UART口;接收TC35的数据采用中断方式。这里给出详细的程序清单(Keil C51),不介绍编程的方法。程序见下:

//AT指令的定义

char code AT_Tc35[]=“AT+”; //连机

char code Bps_Tc35[]=“IPR=38400”; //波特率

char code Text_Tc35[]=“CMGF=1”; //文本模式

char code Read_Tc35[]=“CMGR=”; //读信息

char code Erase_Tc35[]=“CMGD=”; //删除信息

char code Send_Tc35[]=“CMGS=”; //发送信息

char code Creg_Tc35[]=“CREG?”; //注册

//模式设置

void UART_Init(void)

{

SCON=0x50; //01010000b=》1模式scon,#11011000b;

ES=l;

}

//发送-个ASCII

void SendASC(unsigned char ASC)

{

bit es;

es=ES;

ES=0;//关闭中断

TI=0;

SBUF=ASC;

while(!TI);

TI=0;

ES=es;

//发送命令到TC35

void SendToTc35(unsigned char* p,unsigned char Long)

{

while(Long--)

{

SendASC(*p++);

}

}

// 通讯中断接收程序

void Rs485_Do(void) interrupt 4 using 1

{

if(RI==l)

{

RI=0;

RsBuq[RsPoint++]=SBUF;

if fRsPoint》=sizeof(RsBuf))

{

RsPoint=0;//FlagRs485=0;

} //数据处理

}

}

// 发送AT连机命令

char code AT_Code[]=“OK”;

void Send_AT(void)

{

unsigned char *p;

while(1)

{

ClrRsBuf(RsBuf,sizeof(RsBuf));

SendToTc35(AT_Tc35,2); //“AT”

SendASC(OVER);

//************等待应答“ok“

ES=1; //必须中断

Delay(50);

P=strstr(RsBuf,AT_Code);

if(p!=NULL) break;

}

//发送bps连机命令

void Send_BPS(void)

{

SendToTc35(AT_Tc35,3); //”AT+“

SendToTc35(Bps_Tc35,sizeof(Bps_Tc35)-1);//”IPR=19200“

SendASC(OVER);

}

//设置文本

void SetText(void)

{

SendToTc35(AT_Tc35,3); //”AT+“

SendToTc35(Text_tc35,sizeof(Text_tc35)-1);//”IPR=19200“

SendASC(OVER);

Delay(100):

//删除短信息

unsigned char EraseMsg(unsigned char index)

{

unsigned char *p,i=20;

SendToTc35(AT_Tc35,3); //”AT+“

SendToTc35(Erase_Tc35,sizeof(Erase_Tc35)-1);//”IPR=19200“

SendASC(index);

SendASC(OVER);

ES=1;

while(i--)

{

Delay(200);

P=strstr(RsBuf,AT_Code);

if(P!=NULL) {return 1;}

}

return 0;

}

//读取短信息

char code Ask_No[]=”+CMGR:0,,0“;

char code ERROR{]=”ERROR“;

char code Ask_Tc35[]=”/“;

unsigned char ReadMsg(unsigned char index)

{

unsigned char *p,i;

unsigned char Buf[40];

SendToTc35(AT_Tc35,3); //”AT+“

SendToTc35(Read_Tc35,sizeof(Read_Tc35)-1);

SendASC(index);

SendASC(OVER);

ES=1; //必须中断

Delay(600);

/*-------

ES=0:

SendToTc35(RsBuf,99);

ES=1;

*/|

p=strstr(RsBuf,ERROR);

if(P!=NULL)

{

Send_AT();return 0;

p=strstr(RsBuf,Ask_No);//无信息

if(p!=NULL)return 0;

p=strstr(RsBuf,Ask_Tc35);//20个字节后是MSG

if(p==NULL) return 0;

p=p+21;

for(i=0;i《sizeof(Buf);i++)

{

Buf[i]=*p++;

}

if(EraseMsg(index)==0) return 0;

p=strcpy(RsBuf,Buf); //放回RsBuf

return 1;

//发送短信息

char code SK[]=”》“;

void SendMsgStart(void)

{

unsigned char *p,i=10;

SendToTc35(AT_Tc35,3); //”AT+“

SendToTc35(Send_Tc35,sizeof(Send_Tc35)-1);//”IPR=19200“

SendASC(YinHao);

SendToTc35(Mp1.Hand,sizeof(Mp1.Hand)); //”AT+“

SendASC(YinHao);

SendASC(OVER);

ES=1;

while(i--)

{

Delay(100); //Get”》“

p=strstr(RsBuf,SK);//”》“

if(p!=NULL)

{

ClrRsBuf(RsBuf,sizeof(RsBuf));

Delay(150); //Get”》“

break;

}

}

}

标签: GSM 单片机

声明:本内容为作者独立观点,不代表电源网。本网站原创内容,如需转载,请注明出处;本网站转载的内容(文章、图片、视频)等资料版权归原作者所有。如我们采用了您不宜公开的文章或图片,未能及时和您确认,避免给双方造成不必要的经济损失,请电邮联系我们,以便迅速采取适当处理措施;欢迎投稿,邮箱∶editor@netbroad.com。

相关阅读

微信关注
技术专题 更多>>
研发工程师的工具箱
智慧生活 创新未来

头条推荐

电子行业原创技术内容推荐
客服热线
服务时间:周一至周五9:00-18:00
微信关注
获取一手干货分享
免费技术研讨会
editor@netbroad.com
400-003-2006