3721|9

21

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

关于单片机控制TC35i模块的问题 [复制链接]

我想用8051单片机控制GSM模块发短信

程序如下:

#include
#include

unsigned int i;
unsigned char letter= 0;
unsigned int str[3];
sbit D0=P0^0;
sbit D1=P0^1;
sbit D2=P0^2;
sbit D3=P0^3;
sbit D4=P0^4;
void serial_init(void);
void delay_3s(void);
void send_message(void);
//********************
void serial_init(void)
{
SCON = 0x50;
PCON = 0x00;
TMOD = 0x20;
TH1 = 0xFD;
TL1 = 0xFD;
TR1 = 1;
TI = 1;
}
//*************************
void delay_3s(void)
{

  for(i=0;i<60;i++)    //delay 50ms *60= 3s
  {TMOD=0x21;
   TH0=0x3C   ;
   TL0=0xB0   ;
   TF0=0;
   TR0=1;
  
   while(TF0==0)
   {}
   TR0=0;
   TF0=0;
   }
}

//*************************   
void send_message (void)
{   for ( ;letter<1;letter++)
  {   
      printf ("AT\r\n");
    delay_3s();
   printf ("AT\r\n");
   D0=0;
    delay_3s();
     
   printf ("AT+CMGF=1\r\n");
   D1=0;
    delay_3s();         

   printf ("AT+CSMP=17,167,0,0\r\n");
    D2=0;
    delay_3s();
  

   printf ("AT+CSCS=GSM\r\n");
   D3=0;
    delay_3s();
   
}

}
//**************************
void main (void)
{ P1=0XFF;

serial_init();

while (1)
{
if (P1==0xFF) {}
else if (P1==0xFE)
{
send_message();
for ( ;letter<2;letter++)
  {
   printf ("AT+CMGS=0871685530\r\n");
   delay_3s();
   printf ("Room 1 warning");
   putchar (0x1A);
   D4=0;
    delay_3s();
   
      }
     
}
}
}

我是让单片机在p1.0口接地的时候发送AT指令

每次发送一条指令p0口上的灯就会亮一盏

但是连接模块后我的单片机工作了,灯也一盏一盏的亮

可以短信没发出去~哪位大侠告诉我问题是什么

最新回复

这样吧,你先做个串口的通信的例子吧,能接收与发送的 你用串口自己发命令测试 一下。  详情 回复 发表于 2011-3-15 08:38
点赞 关注

回复
举报

21

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
程序如下:

#include
#include

unsigned int i;
unsigned char letter= 0;
unsigned int str[3];
sbit D0=P0^0;
sbit D1=P0^1;
sbit D2=P0^2;
sbit D3=P0^3;
sbit D4=P0^4;
void serial_init(void);
void delay_3s(void);
void send_message(void);
//********************
void serial_init(void)
{
SCON = 0x50;
PCON = 0x00;
TMOD = 0x20;
TH1 = 0xFD;
TL1 = 0xFD;
TR1 = 1;
TI = 1;
}
//*************************
void delay_3s(void)
{

  for(i=0;i<60;i++)    //delay 50ms *60= 3s
  {TMOD=0x21;
   TH0=0x3C   ;
   TL0=0xB0   ;
   TF0=0;
   TR0=1;
  
   while(TF0==0)
   {}
   TR0=0;
   TF0=0;
   }
}

//*************************   
void send_message (void)
{   for ( ;letter<1;letter++)
  {   
      printf ("AT\r\n");
    delay_3s();
   printf ("AT\r\n");
   D0=0;
    delay_3s();
     
   printf ("AT+CMGF=1\r\n");
   D1=0;
    delay_3s();         

   printf ("AT+CSMP=17,167,0,0\r\n");
    D2=0;
    delay_3s();
  

   printf ("AT+CSCS=GSM\r\n");
   D3=0;
    delay_3s();
   
}

}
//**************************
void main (void)
{ P1=0XFF;

serial_init();

while (1)
{
if (P1==0xFF) {}
else if (P1==0xFE)
{
send_message();
for ( ;letter<2;letter++)
  {
   printf ("AT+CMGS=0871685530\r\n");
   delay_3s();
   printf ("Room 1 warning");
   putchar (0x1A);
   D4=0;
    delay_3s();
   
      }
     
}
}
}
 
 

回复

21

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
咦~怎么回车没用的的?
#include
#include

unsigned int i;
unsigned char letter= 0;
unsigned int str[3];
sbit D0=P0^0;
sbit D1=P0^1;
sbit D2=P0^2;
sbit D3=P0^3;
sbit D4=P0^4;
void serial_init(void);
void delay_3s(void);
void send_message(void);
//********************
void serial_init(void)
{
        SCON = 0x50;
        PCON = 0x00;
        TMOD = 0x20;
        TH1 = 0xFD;
        TL1 = 0xFD;
        TR1 = 1;
        TI = 1;
}
//*************************
void delay_3s(void)
{

  for(i=0;i<60;i++)                  //delay 50ms *60= 3s
         {TMOD=0x21;
          TH0=0x3C   ;
          TL0=0xB0   ;
          TF0=0;
          TR0=1;
         
   while(TF0==0)
   {}
   TR0=0;
   TF0=0;
   }
}

//*************************                         
void send_message (void)
{          for ( ;letter<1;letter++)
                {   
                    printf ("AT\r\n");
                         delay_3s();
                        printf ("AT\r\n");
                        D0=0;
                         delay_3s();
                   
                        printf ("AT+CMGF=1\r\n");
                        D1=0;
                         delay_3s();                                                                               

                        printf ("AT+CSMP=17,167,0,0\r\n");
                                D2=0;
                         delay_3s();
               

                        printf ("AT+CSCS=GSM\r\n");
                        D3=0;
                         delay_3s();
                       
}

}
//**************************
void main (void)
{        P1=0XFF;

        serial_init();

while (1)
{
if (P1==0xFF) {}
else if (P1==0xFE)
        {
send_message();
        for ( ;letter<2;letter++)
                {       
                        printf ("AT+CMGS=0871685530\r\n");
                        delay_3s();
                        printf ("Room 1 warning");
                        putchar (0x1A);
                        D4=0;
                         delay_3s();
                       
             }
                          
        }
}
}
 
 
 

回复

2131

帖子

0

TA的资源

至上芯片

4
 

回复 板凳 chaosyp 的帖子

你没有接收回复,现在原因不好确定
 
个人签名处处留心皆学问!
 
 

回复

21

帖子

0

TA的资源

一粒金砂(初级)

5
 
我不是很清楚接收回复语句要怎么写
因为模块返回的信息里面不只有OK~但是包含有OK
你能帮帮我吗?
 
 
 

回复

2131

帖子

0

TA的资源

至上芯片

6
 

回复 5楼 chaosyp 的帖子

可以,是这样的,因为模块返回的数据是不一样的!
比如 可以这样写
//在发送内容后去查找需要查找的内容
sprintf(cmd,"AT\r");// 生成命令
WriteComm(cmd,strlen(cmd));// 输出命令串
// 读应答数据
nLength = ReadComm(recive_buf,result,RECEIVE_BUF_WAIT_1S);
里面就是你对回复内容的判断,在超时时间内没有收到正确的回复可以在次发送
确保你的每个命令的回复内容正确,一般是当发现接收到0x0D 0x0A就会判断一次
 
个人签名处处留心皆学问!
 
 

回复

21

帖子

0

TA的资源

一粒金砂(初级)

7
 
- -daichen大哥~我的C语言水平是在很初级的阶段,不是很能理解你上面的语句啊~能用一些简单的语句吗?感激不尽
 
 
 

回复

21

帖子

0

TA的资源

一粒金砂(初级)

8
 
大哥帮帮忙啊
 
 
 

回复

289

帖子

0

TA的资源

一粒金砂(中级)

9
 
整整格式啦  看的累死偶il
 
个人签名科学家研究已有的世界,工程师创造未来的世界!
 
 

回复

2131

帖子

0

TA的资源

至上芯片

10
 

回复 7楼 chaosyp 的帖子

这样吧,你先做个串口的通信的例子吧,能接收与发送的
你用串口自己发命令测试 一下。
 
个人签名处处留心皆学问!
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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