自己改的AT89S51单片机控制GSM模块(M22)发送短信程序,在Keil上编译没错,但还未试过烧入片内运行。。

来源:互联网 发布:linux停止mysql服务 编辑:程序博客网 时间:2024/05/17 12:24

自己改的AT89S51单片机控制GSM模块(M22)发送短信程序,在Keil上编译没错,但还未试过烧入片内运行。。  
大家看看,这个程序可行否?   还有什么错误的地方?  
希望搞过GSM的朋友多提点意见,让程序完善起来!
(偶弄GSM也一段时间啦,希望有兴趣的朋友加我QQ:30651279多多交流)

/***********************************************************
文件名称:main.c
作         者:xiaoyi46       QQ:30651279
说         明:控制发送SMS信息的C51程序[GSM模块(M22)通过串口与单片机相连]
***********************************************************/

#include   <reg51.h>
#define   uint   unsigned   int
#define   uchar   unsigned   char

//**********函数定义**********//
void   main(void);   //主函数
void   Ini_UART(void);   //串口初始化
void   Delay(void);   //延时
void   CMGF(void);   //设置发送数据为TXET格式
void   CMGS(void);   //设置目的手机号码
void   SEND(void);   //发送字符串


/***********************************************************
函数名称:main
函数功能:主函数                                 入口参数:无         出口参数:无
***********************************************************/
void   main(void)
{
        Ini_UART();   //串口初始化

        CMGF();     //设置发送数据为TXET格式
        Delay();

        CMGS();     //设置目的手机号码
        Delay();

        SEND();
        Delay();
}


/***********************************************************
函数名称:Ini_UART
函数功能:串口初始化设置                 入口参数:无         出口参数:无
***********************************************************/
void   Ini_UART(void)
{
        SCON   =   0x50;   //UART方式1:8位UART;   REN=1:允许接收
        PCON   =   0x00;   //SMOD=0:波特率不加倍

        TMOD   =   0x20;   //T1方式2,用于UART波特率

        TH1     =   0xFD;
        TL1     =   0xFD;   //UART波特率设置:9600
        TR1     =   1;
}


/***********************************************************
函数名称:Delay1ms
函数功能:延时                                   入口参数:无           出口参数:无
***********************************************************/
void   Delay(void)
{      
        uint   i,j;

        for   (i=0;   i <10;   i++)
        {
            for(j=0;   j <1000;   j++);
        }
}


/***********************************************************
函数名称:CMGF
函数功能:设置发送数据为TXET格式       入口参数:无     出口参数:无
***********************************************************/
void   CMGF(void)
{
    uchar   i   =   0;
    uchar   code   mode[]= "AT+CMGF=1/r ";     //   /r即   <CR>   回车

    while(   mode[i]   !=   '/0 ');
        {
            SBUF   =   mode[i];
            while(TI   ==   0);
            TI   =   0;
            i++;
        }
}


/***********************************************************
函数名称:CMGS
函数功能:设置目的SIM卡号码                 入口参数:无     出口参数:无
***********************************************************/
void   CMGS(void)
{
    uchar   i   =   0;
    uchar   code   phone[]= "AT+CMGS=/ "13821947411/ "/r ";     //   / "即“

    while(   phone[i]   !=   '/0 ');  
        {
            SBUF   =   phone[i];  
            while(TI   ==   0);
            TI   =   0;
            i++;
        }        
}


/***********************************************************
函数名称:SEND
函数功能:将GPS数据送入SBUF                 入口参数:无     出口参数:无
***********************************************************/
void   SEND(void)
{
    uchar   i   =   0;
    uchar   code   sms[]   =   "Hello/x01a ";//sms为欲发送的字符串数组,/x01a即Ctrl+Z

    while(   sms[i]   !=   '/0 ');
        {
            SBUF   =   sms[i];
            while(TI   ==   0);
            TI   =   0;
            i++;  
        }
}

原创粉丝点击