欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 單片機與ESP8266通過手機APP通信 [打印本頁]

作者: 縱有千愁    時間: 2018-5-17 21:31
標題: 單片機與ESP8266通過手機APP通信
課題是輸入時間發送給單片機,單片機控制南北方向,東西方向路口綠燈時間為輸入時間。此為C語言單片機端源碼,供需要的人參考

初始化ESP8266:
初始化之前用串口助手將ESP設置好運行模式AP和Station共存,設置好密碼(這些助手都能夠直接一鍵設置),設置好波特率9600指令AT+CIOBAUD=9600。
首先初始化定時器,因為我的課題要求
void time0_init()         
{
        EA  = 1;                   //開總中斷
        SCON=0x50;
        TMOD = 0X21;          //定時器0、定時器1工作方式1
        ET0 = 1;                  //開定時器0中斷
        TR0 = 1;                  //允許定時器0定時
        ET1 = 0;                  //開定時器1中斷         
        TH1=0xfd;//賦初值
         TL1=0xfd;//同上,此為波特率9600的初值
         TR1=1;
         REN=1;//允許串口接收
        
         
}//(此為串口通行的基礎)

接下來發送命令到ESP8266

void connect_init()
{        
        char *a="AT+CIPMUX=1\r\n";
        char *b="AT+CIPSERVER=1,5000\r\n";

        while(*a!='\0')
        {
                SBUF=*a;      //寫入要發送的字符
                while(!TI);    //等待發送完成
                TI=0;          //發送
                a++;
        }        
        delay_1ms(100);//這里添加延時函數,延時5ms左右,給ESP8266反應時間
        while(*b!='\0')
        {
     SBUF=*b;  

                while(!TI);    //等待發送完成
                TI=0;
                b++;
        }        
RI=0;
ES=1;
//初始化完成,串行口中斷打開        
}

然后
void main()
{
               
        time0_init();
connect_init();               
//此處添加其他要實現的代碼
} //每次單片機開機都會向ESP發送命令將其初始化。

然后是發送完成以及接收完成時所產生的中斷處理
void serial com()interrupt 4
{

        
          if(RI==1)//接收的中斷
        {
            RI=0;//取消本次接收中斷申請,方便進入下次中斷
            temp=SBUF;//SBUF寫在后是把接受寄存器的值賦給P1
                if(temp==':'||j>0)//由于ESP發送的字符有+IPD,0,1:等字符,故此為截。杭捌湟院蟮淖址缓蟾鶕约旱哪康倪M行判斷
                {
                        receive[j]=temp; //截取的字符保存在數組中
                        j++;
                        if(temp=='J')//判斷字符自設,不發生沖突即可
                        {
//添加要實現的功能
                        j=0;
                        }
                        if(temp=='G'){
                                j=0;
                                dai=dai+1;
memset(receive,0,3);
                                switch(dai){
case 1:dx_time=15,nb_time=35;
case 2:dx_time=35,nb_time=15,dai=0;                //添加要實現的功能代碼        
                                                        }
}
                if(temp=='N'||o>0){
                                                receive[o]=temp;
                                                o++;        
                                                if(temp=='S')
                                                {
                                                 m= receive[1]*10+receive[2]-16;//此處截取的內容和我要實現的相差16,不知道為何,有知道的還望告知。
                                                nb_time=m;
                                                temp=0;
                                                memset(receive,0,sizeof(receive));
                                                o=0;j=0;
                                                }
                                                }
        
                if(temp=='D'||l>0){
                receive1[l]=temp;
                l++;
                if(temp=='S'){
                dx_time=receive1[1]*10+receive1[2]-16;
                temp=0;
                memset(receive1,0,sizeof(receive1));//調用該函數需要頭文件 string.h 不要忘了添加
                l=0; j=0;   }
                                   }

                }                                
                RI=0;
}

if(TI==1){
                        TI=0;
                        }//發送中斷在發送完成時產生的中斷
RI=0;
}

好了,大概需要做的就這些,記得聲明數組char receive[];
需要安卓客戶端的再聯系吧

USB轉ESP8266資料.zip

1.58 MB, 下載次數: 59, 下載積分: 黑幣 -5

串口助手供大家下載


作者: 哈里路    時間: 2019-6-24 14:38
需要客戶端。窟可以發出來嗎?

作者: win_shi    時間: 2019-6-24 16:38
波特率9600 改成其他的好用不
作者: honghongda    時間: 2019-6-25 14:26
感謝分享





歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1