在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于51單片機的GSM模塊C語言發(fā)送短信程序

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

            作者: 時間:2016-11-22 來源:網(wǎng)絡(luò) 收藏
            #include

            #include
            #include
            #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;

            本文引用地址:http://www.biyoush.com/article/201611/319959.htm


            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 {
            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 {
            send_uart(TC_FSNR[i]);
            }
            delay(1000);
            send_uart(0X1A);
            TC35_CON=ATDAT;
            }
            //寫目的手機的
            void AT_CMGS()
            {
            uchar i;
            for(i=0;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 {
            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 {
            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 {
            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 {
            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 {
            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 {
            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();

            }




            評論


            技術(shù)專區(qū)

            關(guān)閉