51单片机控制GSM模块,为什么发不了短信???急

#include<reg52.h>
#include<string.h>
unsigned char buf0[]="AT\X0D\X0A";
unsigned char buf1[]="AT+CMGF=0\X0D\X0A";
unsigned char buf2[]="AT+CMGS=019\X0D\X0A";
unsigned char buf3[]="0011000d91685139021662f0000801044f60597d\X1A\X0D\X0A";
sbit KEY4=P3^2; //按键发送
sbit KEY1=P3^3;
sbit KEY2=P3^4;
sbit KEY3=P3^5;
sbit LED1=P1^0; //标志
sbit LED2=P1^1;
sbit LED3=P1^2;
sbit LED4=P1^3;
/**************************************************************/
void UART_init()
{
SCON = 0x50; // 10位uart,允许串行接收
PCON = 0x80;// 波特率倍速
TMOD = 0x20; // 定时器1工作在方式2(自动重装)
TH1 = 0xFE;
TL1 = 0xFE;// 38400
TR1 = 1;
}
/*************************************************************/
void Delay_1ms(unsigned int n)//1ms延时
{
unsigned int i,j;
for(i=0;i<n;i++)
for(j=0;j<112;j++);
}
/**********************************************************/
void UART_send_byte(unsigned int dat)//UART 发送一字节
{
SBUF = dat;
while (!TI);
TI = 0;
}
/************************************************************/
void UART_send_string(unsigned int *buf) //UART 发送字符串
{
while ((*buf)!='\0')
{
UART_send_byte(*buf++);
}
}
/********************************************************************************************

***********************************主函数****************************************************

*********************************************************************************************/
void main()
{
UART_init();
while(1)
{
if(KEY4==0) //按下开发板上的KEY1键
{
Delay_1ms(20);
if(KEY4==0)
{
UART_send_string(buf0); //发送AT指令
LED4=0;//发送成功亮灯
}
// while(!KEY4);
}
if(KEY1==0) //按下开发板上的KEY2键
{
Delay_1ms(20);
if(KEY1==0)
{
UART_send_string(buf1); //发送第一条指令
LED1=0;//发送成功亮灯
}
// while(!KEY1);
}
if(KEY2==0) //按下开发板上的KEY3键
{
Delay_1ms(20);
if(KEY2==0)
{
UART_send_string(buf2);//发送第二条指令
LED2=0;//
}
// while(!KEY2);
}
if(KEY3==0)//按下开发板上的KEY4键
{
Delay_1ms(20);
if(KEY3==0)
{
UART_send_string(buf3);//发送第三条指令
LED3=0;//
}
// while(!KEY3);
}
}
}

这个问题跟问:“怎样用51单片机控制发射原子弹”差不多除非我做过用51单片机控制发射原子弹的程式,直接发给你。你的 GSM 模块有具体的传输规范,你需要按照 GSM 模块的规范设计单片机你起码要了解:GSM 模块硬件接口是否输出标准 TTL 电平GSM 模块硬件接口有没有使能功能端口GSM 模块硬件接口是否使用串口通信GSM 模块硬件接口是否 9600bps, N, 8,1 或其他传输格式GSM 模块软件协议是否使用标准 SMS AT 命令.........追问

在超级终端中用AT指令能发,调试助手不行。波特率是38400

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-04-21
个人觉得你的按键扫描有问题,用while(KEY);比较合适吧,低点平跳出循环才继续执行
第2个回答  2013-04-21
先把“调试助手”调试的能发送了,再写单片机的。追问

不知从何调起啊。。

追答

你的GSM模块没有说明书?都照着说明书一步步做,调试助手都不行,直接写代码很难写出来。

本回答被提问者采纳

51单片机控制GSM模块(TC35)自动回复短信
延时5秒后再发送信息,保证可以!你间隔的时间太短了。

单片机控制手机发短信
1、硬件设计:选用MCS51兼容单片机,我用了WINDOND78E58B,再用了MOTOROLA G20的GSM模块,外接的SIM卡电路和3.3v供电电路都自己设计,GSM模块通过串口接单片机串口,接受指令控制。另用一个433MHZ无线接收模块,其一个触点接单片机I\/O口,当连接到被监控设备(保险柜门内感应开关)受触发时,433MHZ无线...

怎么把单片机和GSM模块连接?什么型号都行。
1、不同的单片机有不同的电压,一般GSM模块的输入输出电平是2.85V,51系列的电平是5V,一般在51输出的TX那根线上串联2K的电阻,基本上可以使用。如果是3.3V的单片机,这个电阻就可以很小,几百欧姆就可以。2、GSM模块本身的电源和SIM卡电路很麻烦,首先是大多数GSM模块都是用FPC40的接口,排线的间...

tc35i模块与单片机的短信收发问题
你所说的RXD、TXD并没有与串口的任何引脚相连,那是肯定的,因为中间还有个232电平转换的芯片,并非直接相连的,tc35i出来的RXD、TXD是ttl电平的,跟232电平不一码事儿。其他模块元件连接请参照我贴的图片。没有分拿,就说这么多吧。多动脑子,多试验就搞定了。

gsm短信发送模块,求用过的大佬解答,请问sim900a和sim800c控制程序一样...
各位大佬们,作为一个单片机小白,我想做一个以51单片机为核心,用DS18B20温度传感器测温度,LCD1602显示,最终通过SIM900A或SIM800C的短信收发功能将温度传输到手机上,手机也可以实时像SIM发短信来查询相关温度的一个小装置。现在我已经能够将温度通过SIM模块发到手机上了,但是手机向SIM发短信查询温度这...

51单片机与sim900a相连接的最简单的程序是什么?
本程序运行后如果gprs模块找到服务商信号,就拨打指定电话。 1.将自己的51单片机的串口1连接到GSM的tx rx gnd 2.找到程序中前面的#define处,根据说明修改好自己的单片机配置,编译程序 2.下载程序 3.按下模块复位键,启动模块,等待信号灯闪烁变慢,复位单片机 4.等待发送成功 ***\/ #include <REGX52.H> #define ...

如何使用GPRS\/GPS\/GSM模块
用一个串口也可以,选用STC就不用增加硬件,一般的51就要增加开关芯片控制串口接在gps或GSM上STC单片机的串口可以设置在P3口,也可以设置在P1口用STC的话假设P3串口管脚接GPS,P1串口管脚接GSM正常时一直设置串口在P3,处理完gps数据后设置串口在P1,发送数据后又设置串口在P3口 ...

怎样用51单片机读写sim卡
读Sim卡干嘛?一般Sim卡作为通讯用口,通常没有单独与单片机接口的读写芯片。你可以买个GSM模块,一般GSM模块带的AT指令集可以读写操作SIM卡的。而且还可以打电话,发短信等功能。

请问怎么用51单片机获取gsm模块的时间,串口发送at+cclk?之后会得到如 ...
你这是用什么接收显示的,回复的字符串吧,也就是ASCII码吧。那就把整个字符串都接收下来,按实际字符数接收,接收后,接顺序把ASCII码转换成数值,就是时间了。

单片机和手机是什么关系?
其实手机的各个功能的实现是在GSM或CDMA模块的基础上实现的,这个模块就是所谓的通信处理模块,手机的通话、短信、多媒体以及上网功能都是由这个处理模块来完成的。而单片机就相当于一个控制中枢,它控制该模块的工作状态并将相应数据存储到相应的单元。简单说来,单片机相当于控制器,通信处理模块相当于执行...

相似回答