久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 9623|回復(fù): 10
打印 上一主題 下一主題
收起左側(cè)

基于51單片機的GSM模塊C語言發(fā)送短信程序

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:161074 發(fā)表于 2017-1-10 10:20 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include<reg52.h>
#include<absacc.h>
#include<stdio.h>
#define uint unsigned int
#define uchar unsigned char
#define RST      0X01
#define CMGF     0X02
#define CMGD     0X03
#define CREG     0X04
#define CMGR     0X05
#define CMGS     0X06
#define CSCA     0X07
#define ATDAT    0X08
#define TC35RET 0X00
sbit IGT=P1^0;

uchar TC35_CON;
uchar i_TC35_RECE;
uchar TC35_RE[30],
   TC35_MAX,
   i_TC35;
extern uchar TC35_CON;
extern uchar i_TC35_RECE;
extern uchar i_receive,
      TC35_RE[30],
   TC35_MAX,
   i_TC35;
void delay(uint);
void init_serialcom( void );
void send_uart( unsigned char);
void ATNAME(void);
void AT_CMGS(void);
void AT_CSCA(void);
void AT_RST(void);
void AT_CREG(void);
void AT_CMGF(void);
void AT_CMGR(void);
void AT_CMGD(void);

uchar code TC_MDSJ[]={"AT+CMGS=13969138509"};
//目的手機地址,
uchar code TC_ZXH[]={"AT+CSCA=+8613800531500"};
//本地中心號。
////////其他地方不要亂動//
uchar code TC_FSNR[]={"zhangkaiqiang"};            
//發(fā)送短信內(nèi)容。
uchar code TC_WLZT[]={"AT+CREG?"};            
//網(wǎng)絡(luò)狀態(tài)查詢
uchar code TC_MSXZ[]={"AT+CMGF=1"};            
//發(fā)送模式選擇。
uchar code TC_DQML[]={"AT+CMGR=1"};            
//短信讀取命令。
uchar code TC_SCML[]={"AT+CMGD=1"};            
//短信刪除命令。
uchar code TC_ATF[]={"AT&F"};               
//格式化命令。
void delay(uint i)
{
    unsigned int i_delay,j_delay;
    for(i_delay=0;i_delay<i;i_delay++)
    {
        for(j_delay=0;j_delay<100;j_delay++)
        {;}
    }
}
void init_serialcom( void )
{
    SCON = 0x50 ;
    //SCON: serail mode 1, 8-bit UART, enable ucvr  
    //UART為模式1,8位數(shù)據(jù),允許接收
    TMOD |= 0x20 ;
    //TMOD: timer 1, mode 2, 8-bit reload            
    //定時器1為模式2,8位自動重裝
    PCON |= 0x80 ; //SMOD=1;
    TH1 = 0xFD ;   //Baud:19200 fosc="11".0592MHz
    IE |= 0x90 ;     //Enable Serial Interrupt
    TR1 = 1 ;       // timer 1 run
    TI=1;        
}         
//向串口發(fā)送一個字符
void send_uart( unsigned char ch)
{
    while (TI==0);
    TI= 0 ;
    SBUF=ch;
}
//串口接收中斷函數(shù)
void serial () interrupt 4 using 3
{
    if (RI)
    {
        RI = 0 ;
        i_receive=SBUF;
        TC35_RE[i_TC35_RECE++]=i_receive;
        // i_TC35_RECE++;
        if(i_TC35_RECE>TC35_MAX)
        {
            TC35_MAX=i_TC35_RECE;
        }
    }
}
void ATNAME()
{

    uchar i;
    for(i=0;i<sizeof(TC_FSNR)-1;i++)
    {
        send_uart(TC_FSNR[i]);
    }
    delay(1000);
    send_uart(0X1A);
    TC35_CON=ATDAT;
}
//寫目的手機的
void AT_CMGS()
{
    uchar i;
    for(i=0;i<sizeof(TC_MDSJ)-1;i++)
    {
        send_uart(TC_MDSJ[i]);
    }
    send_uart(0X0D);
    send_uart(0X0D);
    send_uart(0X0A);
    TC35_CON=CMGS;
}
//寫信息中心號
void AT_CSCA()
{
    uchar i;
    for(i=0;i<sizeof(TC_ZXH)-1;i++)
    {
        send_uart(TC_ZXH[i]);
    }
    send_uart(0X0D);
    send_uart(0X0D);
    send_uart(0X0A);
    TC35_CON=CSCA;
}
//AT復(fù)位指令
void AT_RST()
{
    uchar i;
    for(i=0;i<sizeof(TC_ATF)-1;i++)//TC_ATF:格式化命令。
    {
        send_uart(TC_ATF[i]);
    }
    send_uart(0X0D);
    send_uart(0X0D);
    send_uart(0X0A);
    TC35_CON=RST;  
}
//AT網(wǎng)絡(luò)狀態(tài)查詢指令
void AT_CREG()
{
    uchar i;
    for(i=0;i<sizeof(TC_WLZT)-1;i++)
    {
        send_uart(TC_WLZT[i]);
    }
    send_uart(0X0D);
    send_uart(0X0D);
    send_uart(0X0A);
    TC35_CON=CREG;
}
//AT接收格式指令
void AT_CMGF()
{
    uchar i;
    for(i=0;i<sizeof(TC_MSXZ)-1;i++)//TC_MSXZ:發(fā)送模式選擇。
    {
        send_uart(TC_MSXZ[i]);
    }
    send_uart(0X0D);
    send_uart(0X0D);
    send_uart(0X0A);
    TC35_CON=CMGF;
}
//AT短消息讀取指令
void AT_CMGR()
{
    uchar i;
    for(i=0;i<sizeof(TC_DQML)-1;i++)
    {
        send_uart(TC_DQML[i]);
    }
    send_uart(0X0D);
    send_uart(0X0D);
    send_uart(0X0A);
    TC35_CON=CMGR;
}
//AT短消息刪除指令
void AT_CMGD()
{
    uchar i;
    for(i=0;i<sizeof(TC_SCML)-1;i++)
    {
        send_uart(TC_SCML[i]);
    }
    send_uart(0X0D);
    send_uart(0X0D);
    send_uart(0X0A);
    TC35_CON=CMGD;
}

void delay1(void)   //誤差 0us
{
    unsigned char a,b,c;
    for(c=19;c>0;c--)
        for(b=20;b>0;b--)
            for(a=150;a>0;a--);
}
void GSM(void)
{  
uchar shou=100;
IGT=0;
delay1();
IGT=1;
    init_serialcom(); //初始化串口
    delay(100);
    TC35_MAX=0;
    AT_RST();
    while(shou--)
    {
        delay(100);
        if(TC35_MAX>0)
        {
            if(TC35_CON==RST)//TC35_CON==0x01
            {
                if((TC35_RE[7]=='O')&&(TC35_RE[8]=='K'))
                {
                    TC35_CON=TC35RET;
                    AT_CMGF();
                }
                else
                {}  
            }
            //AT+CMGF 優(yōu)先信息格式。執(zhí)行格式有TEXT 方式和PDU 方式。
            else if(TC35_CON==CMGF) //TC35_CON==0x02
            {
                if((TC35_RE[12]=='O')&&(TC35_RE[13]=='K'))
                {
                    TC35_CON=TC35RET; // delay(100);
                    AT_CREG();
                }
                else
                {}
            }
            //AT+CREG 網(wǎng)絡(luò)注冊。獲得手機的注冊狀態(tài)。
            else if(TC35_CON==CREG)//TC35_CON==0x04
            {
                if(((TC35_RE[18]=='0')&&(TC35_RE[20]=='1'))||((TC35_RE[18]=='0')&&(TC35_RE[20]=='5')))
                {
                    TC35_CON=TC35RET;
                    AT_CMGD();
                }
                else
                {
                    AT_CREG();
                }
            }
//AT+CMGR 讀短信。信息從+CPMS 命令設(shè)定的存儲器讀取。
            else if(TC35_CON==CMGR)//TC35_CON==0x05
            {
                if(TC35_MAX<=30)
                {
                    AT_CMGR();
                }
                else //if((TC35_MAX==77)||(TC35_MAX==79))
                {

                    if(TC35_RE[69]=='0')
                    {
                        TC35_CON=TC35RET;
                        delay(100);
                        AT_CMGD();
                    }
                    else if(TC35_RE[69]=='1')
                    {
                        TC35_CON=TC35RET;
                        delay(100);
                        AT_CMGD();
                    }
                    else if(TC35_RE[69]=='2')
                    {

                        TC35_CON=TC35RET;
                        delay(100);
                        AT_CMGD();
                    }
                    else if(TC35_RE[69]=='3')
                    {
                        TC35_CON=TC35RET;
                        delay(100);
                        AT_CMGD();
                    }
                    else if(TC35_RE[69]=='4')
                    {
                        TC35_CON=TC35RET;
                        delay(100);
                        AT_CMGD();
                    }
                    else if(TC35_RE[69]=='5')
                    {

                        TC35_CON=TC35RET;
                        delay(100);
                        AT_CMGD();
                    }
                    else if(TC35_RE[69]=='6')
                    {

                        TC35_CON=TC35RET;
                        delay(100);
                        AT_CMGD();
                    }
                    else if(TC35_RE[69]=='7')
                    {

                        TC35_CON=TC35RET;
                        delay(100);
                        AT_CMGD();
                    }
                    else
                    {
                        TC35_CON=TC35RET;
                        AT_CMGR();
                    }
                }
            }
//AT+CMGD 刪除短信息。刪除一個或多個短信息。
            else if(TC35_CON==CMGD)//TC35_CON==0x03
            {
                delay(100);
                if((TC35_RE[12]=='O')&&(TC35_RE[13]=='K'))
                {
                    AT_CSCA();
                }
                else
                {
                }
            }
            //AT+CSCA 短信服務(wù)中心地址。
            else if(TC35_CON==CSCA)//TC35_CON==0x07
            {
                delay(100);
                if((TC35_RE[25]=='O')&&(TC35_RE[26]=='K'))
                {

                    AT_CMGS();
                }
                else
                {
                }
            }
            //填寫發(fā)送內(nèi)容
            else if(TC35_CON==CMGS)//TC35_CON==0x06
            {
                delay(100);
                if((TC35_RE[22]==0X3E)&&(TC35_RE[23]==0X20))
                {

                    ATNAME();
                }
                else{}
            }
            //發(fā)送完畢返回繼續(xù)掃描接收
            else if(TC35_CON==ATDAT)//0x08
            {
                delay(100);
                if((TC35_RE[0]=='+')||(TC35_RE[0]==0x1A))
                {
                    AT_CMGR();
                }
                else
                {}
            }
            //復(fù)位接收組
            for(i_TC35=0;i_TC35<=TC35_MAX;i_TC35++)
            {
                TC35_RE[i_TC35]=0;
            }
            i_TC35_RECE=0;
            TC35_MAX=0;
        }
    }
}
void main()
{
    GSM();

}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:161074 發(fā)表于 2017-1-10 10:21 | 只看該作者
不懂的同學(xué)直接問我
回復(fù)

使用道具 舉報

板凳
ID:186936 發(fā)表于 2017-7-26 08:06 | 只看該作者
958809860 發(fā)表于 2017-1-10 10:21
**** 作者被禁止或刪除 內(nèi)容自動屏蔽 ****

你好,我現(xiàn)在在學(xué)51我想學(xué)習(xí)GSM模塊可以教教我嗎
回復(fù)

使用道具 舉報

地板
ID:247049 發(fā)表于 2017-12-3 19:09 來自手機 | 只看該作者
958809860 發(fā)表于 2017-1-10 10:21
**** 作者被禁止或刪除 內(nèi)容自動屏蔽 ****

您好,我想問下我要發(fā)的內(nèi)容直接在定義那里改就可以了嗎?
回復(fù)

使用道具 舉報

5#
ID:244767 發(fā)表于 2017-12-4 22:06 | 只看該作者
有沒有仿真圖
回復(fù)

使用道具 舉報

6#
ID:286264 發(fā)表于 2018-2-28 13:51 | 只看該作者
您好,請問樓這個程序驅(qū)動的是什么型號的GSM模塊?
回復(fù)

使用道具 舉報

7#
ID:455320 發(fā)表于 2018-12-26 12:53 | 只看該作者
958809860 發(fā)表于 2017-1-10 10:21
**** 作者被禁止或刪除 內(nèi)容自動屏蔽 ****

用單片機做個發(fā)短信的需要什么模塊呀
回復(fù)

使用道具 舉報

8#
ID:380141 發(fā)表于 2019-10-23 22:15 | 只看該作者
TC35模塊是2G的,而且只能插移動的卡,電信和聯(lián)通的都不能用。
回復(fù)

使用道具 舉報

9#
ID:574058 發(fā)表于 2020-4-25 10:30 | 只看該作者
958809860 發(fā)表于 2017-1-10 10:21
**** 作者被禁止或刪除 內(nèi)容自動屏蔽 ****

你這程序的頭文件在哪里啊?
只有主程序啊
回復(fù)

使用道具 舉報

10#
ID:727538 發(fā)表于 2020-5-30 16:24 | 只看該作者
958809860 發(fā)表于 2017-1-10 10:21
**** 作者被禁止或刪除 內(nèi)容自動屏蔽 ****

1,如果只需要發(fā)送的功能,那可以直接刪掉接收部分的代碼嗎?
2,能先設(shè)定中間變量,然后通過printf語句,將目標“手機號”和“信息”信息賦值給中間變量,最后放到發(fā)送函數(shù)中嗎?
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产激情在线看 | 97精品视频在线 | 欧美一区免费在线观看 | 一起操网站 | 国产精品色 | 久久久五月天 | 99一级毛片| 久久亚洲国产精品日日av夜夜 | 午夜爱爱毛片xxxx视频免费看 | 中文亚洲视频 | 免费黄色av网站 | 日韩在线不卡 | 日韩成人在线观看 | 色啪网 | 涩涩操| 亚洲成av人片在线观看无码 | 国产在线精品一区二区三区 | 国产三级精品三级在线观看四季网 | 国产成人精品一区二区三区在线 | 日韩一区二区在线观看 | 欧美日韩高清免费 | 久久亚洲欧美日韩精品专区 | 中文字幕伊人 | 成人免费观看男女羞羞视频 | 91.色| 日韩av免费看 | 久久日韩精品 | 日韩视频在线免费观看 | 天天操天天摸天天干 | 日本特黄特色aaa大片免费 | 成人视屏在线观看 | 国产在线a视频 | 日本在线看片 | 夜夜操av | 亚洲国产精品一区二区第一页 | 亚洲成人午夜电影 | 欧美天堂在线 | 国内精品久久久久 | 青青草网站在线观看 | 欧美精品一二区 | 成人精品毛片国产亚洲av十九禁 |