OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6521|回复: 3

求助大神们!!!关于单片机和gsm模块的连接问题

[复制链接]

1

主题

3

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2018-3-15
在线时间
4 小时
发表于 2018-3-15 19:30:39 | 显示全部楼层 |阅读模式
1金钱
小弟想用单片机和GSM模块实现自动收发短信的功能,然而第一步发送AT指令连接的时候就有问题。
连线都完成了,测试代码也写好了,然而就是发送AT后,gsm模块没有回应。
连线图以及代码已经放上来了,大神帮忙看看哪里出问题了

连线图

连线图
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2018-3-15
在线时间
4 小时
 楼主| 发表于 2018-3-15 19:33:12 | 显示全部楼层
#include "REG52.H"
#include "string.h"
#include "stdio.h"
#include <absacc.h>
#include <intrins.h>

#define uchar unsigned char
#define uint  unsigned int
#define Buf_Max 200//缓存长度200
#define PAUSE_INT  EA=0;
#define START_INT  EA=1;

int i = 0;
unsigned char Rec_Buf[Buf_Max];        //定义缓存数组

/******串口1初始化函数******/   
void UartInit(void)                //9600bps@11.0592MHz
{
        SCON = 0x50;       //REN=1允许串行接受状态,串口工作模式2               
            TMOD|= 0x20;      //定时器工作方式2                       
                PCON|= 0x80;      //波特率提高一倍                                                   
        //        TH1  = 0xFD;     //baud*2  /* reload value 19200、数据位8、停止位1。效验位无(11.0592)     
            TH1 = 0xF3;                                        // //baud*2  /*  波特率4800、数据位8、停止位1。效验位无 (12M)
            TL1 = 0xF3;
                TR1  = 1;        //开启定时器1                                                      
                ES   = 1;        //开串口中断                  
                EA   = 1;        // 开总中断
}          
                 
/******串口中断处理函数******/
void Serial_Int() interrupt 4{
        ES = 0;        //关闭串口中断,防止中断嵌套
        if(TI){         //发送中断,不做处理
                TI = 0;
        }
        if(RI){
                RI = 0;          //清除接收中断标志位
                Rec_Buf[i] = SBUF;          //将接收的字符串存入缓存
                i++;
                if(i>200){
                        i = 0;
                }
        }
        ES = 1;        //打开串口中断
}

/******发送字符(ASCII)函数******/
void Send_ASCII(unsigned char *b){
        ES = 0;                          //关串口中断
        for(b; *b!='\0'; b++){
                SBUF =  *b;
                while(TI != 1);                  //等待发送完成
                TI = 0;                                  //清除发送中断标志位
        }
        ES = 1;                         //开串口中断
}

/******清除缓存数据函数******/
void CLR_Buf(void){
        unsigned char k;
        for(k=0; k<Buf_Max; k++){          //将缓存内容清零
                Rec_Buf[k] = 0;
        }
        i = 0;                                                         //接收字符串读起始存储位置
}

/******发送字符(十六进制)函数******/
void Send_Hex(unsigned char c){
        ES = 0;
        SBUF = c;
        while(TI != 1);         //等待发送完成
        TI = 0;                   //清除发送中断标志位
        ES = 1;
}

/******判断缓存中是否含有指定的字符串函数******/
/*输入参数:unsigned char *a 指定的字符串
/*输出参数:bit 1 ---含有   0 ---不含
/**********************************************/
bit Hand(unsigned char *a){
        if(strstr(Rec_Buf,a) != NULL)
                return 1;
        else
                return 0;
}

/******发送一个字符的函数******/
void send_char_com(uchar ch){
        PAUSE_INT
        SBUF=ch;
        while(TI==0);
        TI=0;
        START_INT;
}
/******发送一个字符串的函数******/
/*向串口发送一个字符串,strlen 为该字符串长度
/********************************/
void send_string_com(uchar strlen, uchar *str)
{
uchar k=0;
do
{
send_char_com(*(str+k));
k=k+1;
} while(k<strlen);
}


/************************/
/*main函数*/
/************************/
void main(void){

          Delay100ms();
          UartInit();        //串口初始化函数
          Delay100ms();
          CLR_Buf();        //清除缓存内容
          Delay100ms();
        while(!Hand("OK")) //判断是否握手成功,如果不成功延时一会,再发送AT握手指令
        {
            Send_ASCII("AT"); //发送联机指令
            Send_Hex(0x0d); //发送回车符
            Send_Hex(0x0a); //发送换行符
            Delay100ms(); //延时
            }          
}
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2018-3-15
在线时间
4 小时
 楼主| 发表于 2018-3-15 19:34:01 | 显示全部楼层
串口助手里能看到发送出去的AT 但是一直没有收到OK,搞不明白怎么回事…
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
7
金钱
7
注册时间
2020-7-17
在线时间
1 小时
发表于 2020-7-17 18:47:30 | 显示全部楼层
VictorYY 发表于 2018-3-15 19:34
**** 作者被禁止或删除 内容自动屏蔽 ****

你解决了吗,我也遇到了这种问题
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 23:20

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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