用单片机无线收发模块控制GSM模块实现短信收发设计有几种方案

gsm模块 单片机控制GSM模块实现短信收发的技术及应用
10:24:33来源: 网络整理
单片机控制GSM模块实现短信收发的技术及应用 牛 丹,等单片机控制GSM模块实现短信收发的技术及应用Single2chipComputerControlGSMModuleSMSTransceiverTechnologyandApplications牛 丹 买和木提 周 澄 翁多杰1222(1.东南大学自动化学院 江苏南京 210096; 2.河海大学 江苏南京 210000)[摘要] 介绍用89S52系列单片机控制GSM模块和手机进行通信、收发短信息的原理、硬件电路,准确详细的短信息发送和接收数据格式,同时给出应用实例。(][关键词] 单片机;短信息;PDU;GSM[中图分类号] TP2    [文献标志码] BGSM系统是目前基于时分多址技术的移动通讯体制中比较成熟、完善、应用最广泛的系统之一。目前已建成的覆盖全国的GSM]音、短信息、监控数据信号和控制命令的数据通信系统,能广泛用于远程监控、定位导[2]航、个人通信终端等,同时随着科技的飞速发展和人民生活水平的不断提高,手机的普及率越来越高,价格也越来越便宜,而且手机工作的无线网络覆盖范围广,在信息传递方面性能稳定、可靠,所以把手机作为信息传递的载体,与单片机控制的GSM模块结合起来构成应用系统有着强大的生命力和广阔的应用空间。通过设计基于GSM模块的用手机控制的自动水闸,对用单片机控制GSM模块和手机通信、收发短信息进行探讨。[3]2 S. GSM模块一般采用串行异步通信接口,通信速度可设定,通常为9600bps。采用这种RS232电缆方式进行连接时,数据传输的可靠性较好,单片机硬件设计采用1个TTL转RS232电平电路,连接到MCU的UART口。所涉及的芯片包括单片机89S52和电平转换芯片MAX232。具体的硬件电路如图1所示。1 GSM模块采用WAVECOMM1206BGSM/GPRSMODEM,图1 TTL转RS232电平电路它自带RS232通讯接口,可以方便地与PC机、单片2.2 GSM的短信息通信原理机连机通讯,可靠地实现数据、传真、短信息及话音GSM的短信息业务SMS利用信令信道传输,它应用。它可以工作在900MHz和1800MHz2个频段。不用拨号建立连接,把要发的信息加上目的地址发模块有AT命令集接口,支持文本和PDU模式的短消送到短信息服务中心,经短信服务中心完成存储后息、第3类传真。WAVECOMM1206B模块的工作电再发送给最终的信宿。所以当目的GSM终端没开机压为5~32V,实际一般为12V,通过微型FIT4插头时信息不会丢失。每个短信的信息量限制为160连接器,实现电源连接。用户可以用单片机或其它[3]字节。CPU的UART口,使用相应的AT命令,对模块进行现在市场上大多数手机均支持GSM07.05规定控制,就可以达到使其产品轻松进入GSM网络的的AT指令集。该指令集是ETSI(欧洲通信技术委员目的。[2]会)发布的,其中包含了对SMS的控制。利用GSM—7—gsm模块 单片机控制GSM模块实现短信收发的技术及应用《仪器仪表与分析监测》2008年第4期模块的串行接口,单片机向GSM模块收发一系列的用单片机控制GSM模块收发短信息所涉及到的AT指令如表1所列。[]表1 主要AT指令AT指令AT+OFFATQFAT+CMGFAT+CMGRAT+CMGSAT+CNMIAT+CMGD0x41,0x54,0x2b,0x43,0x4d,0x47,0x53,0x3d,0x34,0x38,0x33,0x0d,0x0a,0x4f,0x4b,0x1aAT命令,就能达到控制GSM模块收发SMS的目的。0x31,0x33,0x38,0x31,0x33,0x30,0x38,0x33,功能描述 关机并重新启动 加到出厂时的设定 优先信息格式,包括TEXT方式和PDU方式 读取短信息 发送知信息新信息指示,选择如何从网络上接收短信息 删除短信息3 单片机控制3.1 WAVECOMM1206BGSM模块有3种方式来发送和接收SMS信息:BlockMode,TextMode和PDUMode。BlockMode目前很少应用。TextMode是纯文本方式,可使用不同的字符集,从技术上说也可用于发送中文短消息,但国内手机基本上不支持,主要用于欧美地区。PDUMode被所有手机支持,可以使用任何字符集,这也是手机默认的编码方式[123]。下面介绍在PDUMode下发送和接收短消息的实现方法。PDU串表面上是一串ASCII码,由‘0’‘29’、‘A’‘2F’这些数字和字母组成。它们是8位字节的16进制数。PDU串不仅包含可显示的消息本身,还包含很多其它信息,如SMS服务中心号码、目标号码、回复号码、编码方式和服务时间等。发送和接收的PDU串,结构是不完全相同的。从原理上说,使用单片机控制GSM模块和手机通信,只要简单的把包含AT指令的相应的ASCII码组成的PDU串用程序从串口发出去就可以实现,但实际它也有严格的格式。关于这个格式,本文下面从发短信和接收短信2个方面进行详细的介绍。3.2 发送短消息AT指令为AT+CMGS=要通信的目的电话号码,例如,假定发送内容为英文大写OK,则单片机发送到串口的PDU串的结构和编排方式如下:—8—上述编码分5部分,具体解释为:0x41,0x54,0x2b,0x43,0x4d,0x47,0x53,0x3d分别为AT+CMGS=的16进制ASCII码0x31,0x33,0x38,0x31,0x33,0x30,0x38,0x33,0x34,0x38,0x33为通信对方手机号码的16进制ASCII码0x0d,0x0a为1个回车符和换行符的ASCII编码0x4f,0x4b为待发送内容的ASCII编码,此例子为英文大写OK的ASCII编码0x1a为键盘操作Ctrl+Z的II编码:1条指令后,必。如,GSM模块将不识别这3.3 接收短消息AT指令为AT+CMGR=序号,如1,2等,表示读取卡中收到的编号为1,2的短信内容,但因为我们不知道最新接收的短信编号为多少,所以使用这条AT指令将很难读到最新短信。现采用的AT指令为AT+CNMI=2,2。“AT+CNMI”指令,主要用于设定当有短消息到达时,进行处理。“AT+CNMI”指令语法为AT+CNMI=[&mode&[,&mt&[,&bm&[,&ds&[,&bfr&]]]]],现设定为AT+CNMI=2,2。具体意义如下:
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述) 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
[精品]单片机控制GSM模块实现短信收发的软件设计
下载积分:420
内容提示:[精品]单片机控制GSM模块实现短信收发的软件设计
文档格式:PDF|
浏览次数:1|
上传日期: 12:35:49|
文档星级:
该用户还上传了这些文档
[精品]单片机控制GSM模块实现短信收发的软件设计
官方公共微信您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
单片机控制GSM模块实现短信收发的软件设计2.pdf4页
本文档一共被下载:
次 ,您可免费全文在线阅读后下载本文档
文档加载中...广告还剩秒
需要金币:200 &&
你可能关注的文档:
··········
··········
A PPLICATION NOTES 应用天地
单片机控制
模块实现短信收发的软件设计
■ 武汉理工大学 王骐 何嘉斌
借助系统模型,阐明GSM模块收发短信的基本概念以及串口控制SMS的基本原理。详细介绍单片
机控制GSM模块工作的软件实现过程,对怎样用单片机控制GSM模块收发短信进行探讨,也对程
序设计的主体思想作了较为细致的分析。
GSM Global System for Mobile communication 系统是
EPROM是温度数据临时存储和上传的中转站。终端处
目前基于时分多址技术的移动通信体制中,比较成熟
理模块负责将接收到的数据交给计算机处理,并将处
完善,且应用最广泛的一种系统。目前已建成的覆盖全 理后的结果存放到数据库中,以供查询。当终端处理模
国的GSM数字蜂窝移动通信网,是我国公众移动通信
块需要向GSM模块2发送控制命令时,GSM模块2接
网的主要方式。基于GSM的短信息服务,是一种在移
收过程正好与上述过程相反,从而实现数据的自动双
动网络上传送简短信息的无线应用,是一种信息在移
动网络上储存和转寄的过程。由于公众GSM网络在全
系统中,三个模块相互独立,彼此又相互依赖,共
球范围内实现了联网和漫游,建立上述系统不需再组
同完成数据的传输。
正在加载中,请稍后...3514人阅读
#include &serial.h&
#include &bianliang.h&
#include &REG51.h&
#include &string.h&
#include &1602.H&
#define rev_FAUSE 0&
#define rev_OK 1
#define SELInt_on() ES=1 & & &
#define SELInt_off() ES=0 & & &
uchar temp[3];
extern bit P0_0;
extern bit P0_1;
extern bit P0_2;
extern bit P0_3;
extern bit P0_4;
extern bit P0_5;
extern bit P0_6;
extern bit P0_7;
sbit P0_0=P0^0;
sbit P0_1=P0^1;
sbit P0_2=P0^2;
sbit P0_3=P0^3;
sbit P0_4=P0^4;
sbit P0_5=P0^5;
sbit P0_6=P0^6;
sbit P0_7=P0^7;
sbit P1_0=P1^0;
sbit P1_1=P1^1;
sbit P1_2=P1^2;
sbit P1_3=P1^3;
sbit P1_4=P1^4;
sbit P1_5=P1^5;
sbit P1_6=P1^6;
sbit P1_7=P1^7;
sbit P2_0=P2^0;
sbit P2_1=P2^1;
sbit P2_2=P2^2;
sbit P2_3=P2^3;
void delay1(int n)
& while(n--)
& &for(i=0;i&100;i++);
void Excrescent(void)
if(Rev_Buf[0]==0x00)
void gsm_Over(void)
& Ser_TxDchar(0x0d);
& Ser_TxDchar(0x0a);
void Cls_Rebuf(void)
for(i=0;i&Rev_BufSIZE+1;i++)
& & Rev_Buf[i]=0;
Rev_count=0; &
Test_Mc39i(void)
Cls_Rebuf();
& SELInt_off();
Ser_TXDstring(TC_HEAD,2);//发送AT
gsm_Over();//回车换行
SELInt_on();
while(Rev_count&9);
Rev_count=0;
Excrescent();
for(i=5+i&7+i++)
temp[i-5-xx]=Rev_Buf[i];
& & if(!strcmp(temp,TC_OK))
return rev_OK;
return rev_FAUSE;
MES_Mode(unsigned char mode)
Cls_Rebuf();
& SELInt_off();
& Ser_TXDstring(TC_HEAD,3);
& Ser_TXDstring(TC_CMGF,5);
& Ser_TxDchar(mode+0x30);
& gsm_Over();
& SELInt_on();
while(Rev_count&15);
Rev_count=0;
Excrescent();
for(i=12+i&14+i++)
temp[i-12-xx]=Rev_Buf[i];
& & if(!strcmp(temp,TC_OK))
& & return rev_OK;
return rev_FAUSE;
Set_Speed(void)
Cls_Rebuf();
& SELInt_off();
Ser_TXDstring(TC_HEAD,3);
Ser_TXDstring(TC_IPR,8);
gsm_Over();
SELInt_on();
while(Rev_count&18);
Rev_count=0;
Excrescent();
for(i=14+i&16+i++)
temp[i-14-xx]=Rev_Buf[i];
& & if(!strcmp(temp,TC_OK))
return rev_OK;
return rev_FAUSE;
Sent_Mes(unsigned char *p)
Cls_Rebuf();
& SELInt_off();
Ser_TXDstring(TC_HEAD,3);
Ser_TXDstring(TC_CMGS,5);
Ser_TxDchar(0x22);
& Ser_TXDstring(TelNumber,11);
& Ser_TxDchar(0x22);
& gsm_Over();
& SELInt_on();
while(Rev_Buf[Rev_count-1]!=0x3e)
SELInt_off();
Ser_TXDstring(p,5);
Ser_TxDchar(0x1a);
SELInt_on();
Store_Location(void)
Cls_Rebuf();
& SELInt_off();
Ser_TXDstring(TC_HEAD,3);
Ser_TXDstring(TC_CPMS,5);
Ser_TxDchar(0x22);
Ser_TXDstring(TC_SM,2);
Ser_TxDchar(0x22);
Ser_TxDchar(0x2C);
Ser_TxDchar(0x22);
Ser_TXDstring(TC_SM,2);
Ser_TxDchar(0x22);
Ser_TxDchar(0x2C);
Ser_TxDchar(0x22);
Ser_TXDstring(TC_SM,2);
Ser_TxDchar(0x22);
gsm_Over();
SELInt_on();
while(Rev_count&54);
Rev_count=0;
Excrescent();
for(i=50+i&52+i++)
temp[i-50-xx]=Rev_Buf[i];
& & if(!strcmp(temp,TC_OK))
return rev_OK;
return rev_FAUSE;
Auto_Prompt(void)
Cls_Rebuf();
& SELInt_off();
Ser_TXDstring(TC_HEAD,3);
Ser_TXDstring(TC_CNMI,8);
gsm_Over();
& SELInt_on();
while(Rev_count&17);
Rev_count=0;
Excrescent();
for(i=14+i&16+i++)
temp[i-14-xx]=Rev_Buf[i];
& & if(!strcmp(temp,TC_OK))
return rev_OK;
return rev_FAUSE;
void New_Mes(void)
Excrescent();
for(i=3+i&7+i++)
temp1[i-3-xx]=Rev_Buf[i];
& & if(!strcmp(temp1,TC_CMTI))
if(Rev_Buf[10]==0x53&&Rev_Buf[11]==0x4D)
NewSMS_flag=1;
MES_COUNT=Rev_Buf[13];
Cls_Rebuf();
void Read_Mes(uchar num)
Cls_Rebuf();
& SELInt_off();
Ser_TXDstring(TC_HEAD,3);
Ser_TXDstring(TC_CMGR,5);
Ser_TxDchar(num);
gsm_Over();
SELInt_on();
while(Rev_Buf[Rev_count-1]!=0x4B)
for(i=30;i&40;i++)
if(Rev_Buf[i]==0x2B&Rev_Buf[i+1]==0x38&Rev_Buf[i+2]==0x36)
for(i=t+3;i&t+14;i++)
TEL_Buf[i-t-3]=Rev_Buf[i];
TEL_Buf[11]=0x00;
for(i=t-20;i&t-15;i++)
CMD_Buf[i-t+20]=Rev_Buf[i];
CMD_Buf[5]=0x00;
Del_Mes(num)
Cls_Rebuf();
SELInt_off();
Ser_TXDstring(TC_HEAD,3);
Ser_TXDstring(TC_CMGD,5);
Ser_TxDchar(num);
gsm_Over();
SELInt_on();
while(Rev_count&14);
Rev_count=0;
for(i=12;i&14;i++)
temp[i-12]=Rev_Buf[i];
& & if(!strcmp(temp,TC_OK))
return rev_OK;
return rev_FAUSE;
Cls_Rebuf();
void CMD_SHIBIE(void)
if(!strcmp(TEL_Buf,TelNumber))
TELNUM_OK=1;
TELNUM_OK=0;
Del_Mes(MES_COUNT);
Cls_Rebuf();
NewSMS_flag=0;
if(!strcmp(CMD_Buf,CMD_1))
else if(!strcmp(CMD_Buf,CMD_2))
void INIT_GSM(void)
if(Test_Mc39i())
if(MES_Mode(1))
if(Set_Speed())
if(Store_Location())
if(Auto_Prompt())
Cls_Rebuf();
我做过一点;
(1)pc机和单片机发送的串口数据是不是不一样?
答:一样,一般都为9600,n,8,1
(2)把单片机和pc上位机相连,pc的超级终端接收的命令确实正确的?
答:可以连,注意RXD和TXD应交叉对联。满足单片机发送PC接收,PC发送MCU接收的关系
(2)是不是单片机和pc机波特率不一样?
答,GSM模块一般都是自适应模特率的,只要断电一次,就可以自己适应当前波特率
注意:你通讯补上可能是RXD和TXD交叉的问题(交换TXD和RXD尝试)
,也可能是需要硬件握手的问题(RTS
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:509737次
积分:5249
积分:5249
排名:第4346名
原创:68篇
转载:155篇
评论:31条
(1)(1)(5)(2)(3)(6)(2)(5)(3)(1)(2)(3)(4)(23)(21)(7)(8)(25)(11)(13)(19)(15)(7)(1)(7)(32)}

我要回帖

更多关于 3.3v单片机收发5v信号 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信