64515|8

46

帖子

0

TA的资源

纯净的硅(中级)

楼主
 

单片机控制GSM模块 [复制链接]

void Rs485_Do(void) interrupt 4 using 1
{& K  
if(RI==l)% z& {/ a- N# G0 k
  {* {& F* F. [$ |! E8 d, r" E, H
    RI=0;
RsBuq[RsPoint++]=SBUF;2 G9 ^2 y" `( x' [) X9 c8 a
    if fRsPoint>=sizeof(RsBuf))
{www.cedn.cn# b" }& S- @8 x4 v
    RsPoint=0;//FlagRs485=0;
}
}! W" u8 V+ Z( V' U( N$ k. V
}6 \$ b+ X2 b3 u
这段程序干嘛用的?

[ 本帖最后由 xujingxinna 于 2009-6-6 12:24 编辑 ]
此帖出自单片机论坛

最新回复

最近也在研究这方面的东西,学习学习  详情 回复 发表于 2009-11-14 21:07
点赞 关注
 

回复
举报

106

帖子

0

TA的资源

纯净的硅(中级)

沙发
 
用于串口接收数据,GSM模块有两种读取短信的功能,一种是直接显示到串口不存储,一种是像我们手机一样显示出来
此帖出自单片机论坛
 
 

回复

46

帖子

0

TA的资源

纯净的硅(中级)

板凳
 

回复 沙发 god 的帖子

//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;CEDN论坛2 a  _5 N) Z& ]1 X
ES=l;
}
//发送-个ASCII
void SendASC(unsigned char ASC)
{
bit es;
es=ES;
EES=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);
if(p==NULL) return 0;
p=p+21;
for(i=0;i {
Buf=*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);
  p=strstr(RsBuf,SK);//">"
  if(p!=NULL)
   {
ClrRsBuf(RsBuf,sizeof(RsBuf));
Delay(150);  //Get">"
break;
}
}
}

这个程序能实现单片机控制GSM模块收发短信吗?
此帖出自单片机论坛
 
 
 

回复

106

帖子

0

TA的资源

纯净的硅(中级)

4
 
我就是用的这段程序,我是接手人家之前做的,他是调好了的,但是我不知道他以前遇到问题没,反正我拿来老是出现连不上的问题
此帖出自单片机论坛
 
 
 

回复

46

帖子

0

TA的资源

纯净的硅(中级)

5
 

回复 4楼 god 的帖子

一样吗?我也发现错误不少啊
此帖出自单片机论坛
 
 
 

回复

106

帖子

0

TA的资源

纯净的硅(中级)

6
 
差不多都是参考这个的,肯定有少许变化啦
此帖出自单片机论坛
 
 
 

回复

8

帖子

0

TA的资源

一粒金砂(中级)

7
 
学习学习,这段时间我也在学这方面,多多指教!!!
此帖出自单片机论坛
 
个人签名选我所爱,爱我所选
 
 

回复

1

帖子

0

TA的资源

一粒金砂(中级)

8
 

gcy

最近也在研究呢,有兴趣一起探讨一下啊,我qq617928930
此帖出自单片机论坛
 
 
 

回复

114

帖子

0

TA的资源

一粒金砂(中级)

9
 

good

最近也在研究这方面的东西,学习学习
此帖出自单片机论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表