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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

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

51單片機(jī)使用8266wifi(esp12s)實(shí)驗(yàn)例程(含源程序)

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
軟件準(zhǔn)備:1.net assist網(wǎng)絡(luò)調(diào)試助手
2.串口調(diào)試助手

主要問題以及解決方案
1.采用12M晶振,波特率設(shè)置為9600時(shí),通信誤差率過大
解決方法:
                (1)換11.0592Mhz晶振
                (2)使用T2寄存器,算出初始值
                        SCON=0X50;               
                                T2CON=0X34;            
                                PCON=0X80;               
                                RCAP2H=(65536-39)/256;               
                                RCAP2L=(65536-39)%256;


2.STC52單片機(jī)存放不下要發(fā)送給8266WIFI的太多指令
解決方法:
                在target的option里選為large in XDATA,意思為使用單片機(jī)的64KBRAM空間,程序內(nèi)定義的所有變量都會(huì)存放到此空間。
                同時(shí)選用use Xram,只用加stc的keil擴(kuò)展包才會(huì)有這個(gè)選項(xiàng),選用AT89C51不會(huì)有。


                                          


3.單片機(jī)接受所數(shù)字如何轉(zhuǎn)整形?
解決方案:
              (1)可以看我另一個(gè)帖子的回復(fù)
              (2)將串口接收信息定義為整型,上位機(jī)發(fā)送字母或數(shù)字,相應(yīng)ASCII碼的二進(jìn)制轉(zhuǎn)十進(jìn)制的值就是串口接收到的數(shù)據(jù),例如,發(fā)送0收到48,發(fā)送A收到65。

4.字符串的發(fā)送
解決方案:
               采用指針反復(fù)調(diào)用發(fā)送單一字符的程序
                              void send_byte(uchar by)   //發(fā)送單一字符的函數(shù)
                           {
                              SBUF = by;
                              while(!TI);
                              TI = 0;      
                            }


                             void send_string(uchar *p)  //發(fā)送字符串的函數(shù)
                           {
                              while(*p!= '\0')
                             {
                                send_byte(*p);   //反復(fù)調(diào)用發(fā)送單一字符的函數(shù)
                                p++;
                             }
                         }


5.如何使用8266wifi模塊?
  解決方案:                      
                  8266wifi有AT指令集,我放在附件

                  51單片機(jī)通過串口TXD向8266wifi的RXD發(fā)送指令,8266wifi模塊進(jìn)行相應(yīng)操作
                  所以要在51內(nèi)存放相應(yīng)字符串指令(末尾一定要加回車符和換行符
                  uchar rst[]="AT+RST\r\n"; //wifi模塊復(fù)位esp12s初始波特率為9600
                  uchar mod[]="AT+CWMODE=3\r\n";//設(shè)置為AP和ST模式,可連接網(wǎng)絡(luò),也開啟熱點(diǎn)
                  uchar wico[]="AT+CWJAP=\"Nick\",\"qweasdzxc\"\r\n";//“Nick”為所要鏈接網(wǎng)絡(luò)wifi名,"qweasdzxc"為wifi密碼
                  uchar sev[]="AT+CIPSTART=\"TCP\",\"192.168.43.31\",8080\r\n"//TCP為網(wǎng)絡(luò)傳輸協(xié)議,192.168.43.31為上位機(jī)端口號(hào),輸入正確即可和上位機(jī)無線通信
                  uchar mods[]="AT+CIPMODE=1\r\n"; //開啟發(fā)送模式
                  uchar sen[]="AT+CIPSEND\r\n";//開始發(fā)送,執(zhí)行完此指令后,單片機(jī)向wifi模塊發(fā)送的任何信息自動(dòng)默認(rèn)為所要發(fā)送給上位機(jī)的信息



5.發(fā)送信息后跳到串口中斷程序,誤操作接收程序怎么辦?
解決方案:
發(fā)送信息前關(guān)閉串口中斷,發(fā)送信息后打開串口中斷



6.發(fā)送連接相應(yīng)wifi的指令后,還沒連接成功就進(jìn)行下一條指令操作怎么辦?

解決方案:

                   設(shè)置延時(shí),連接端口指令建議延時(shí)長一點(diǎn)



源程序如下(我使用的是精準(zhǔn)延時(shí),如果要拷貝的話看我另一個(gè)帖子,添加c.lib)

#include "reg52.h"

#include "stdio.h"

#include "string.h"

#define uchar unsigned char

#define uint unsigned int

void send_byte(uchar by);

void send_string(uchar *p);

void delay(uint n);        


uchar rst[]="AT+RST\r\n";

uchar mod[]="AT+CWMODE=3\r\n";

uchar wico[]="AT+CWJAP=\"Nick\",\"qweasdzxc\"\r\n";

uchar sev[]="AT+CIPSTART=\"TCP\",\"192.168.43.31\",8080\r\n";

uchar mods[]="AT+CIPMODE=1\r\n";

uchar sen[]="AT+CIPSEND\r\n";

uchar in[]="in\r\n";

uchar copa[]="bye\r\n";

uint g,y,r;

sbit ght=P2^0;

sbit yht=P2^1;

sbit rht=P2^2;

void UsartInit()

{

                SCON=0X50;               

                T2CON=0X34;            

                PCON=0X80;               

                RCAP2H=(65536-39)/256;               

                RCAP2L=(65536-39)%256;

                ES=0;                                

                EA=1;

                 ET0=1;

                ET1=1;

                EX0=1;

                IT0=1;

                EX1=1;

                IT1=1;

}


void main()

{

        

        UsartInit();

        send_string(rst);

        delay(1);

        send_string(mod);

        delay(1);

        send_string(wico);

        delay(10);

        send_string(sev);

        delay(10);

        send_string(mods);

        delay(5);

        send_string(sen);

        delay(3);

        ES=1;

        g=5;

        y=2;

        r=5;

        while(1)

        {

                ght=0;

                yht=1;

                rht=1;

                delay(g);

                ght=1;

                yht=0;

                rht=1;

                delay(y);

                ght=1;

                yht=1;

                rht=0;

                delay(r);

        }

}        



void send_byte(uchar by)

{

                SBUF = by;

    while(!TI);

    TI = 0;      

}


void send_string(uchar *p)

{

    while(*p!= '\0')

                        {

        send_byte(*p);

        p++;

    }

}



void delay(uint n)

{

        unsigned int i=0;

  for(i=0;i<n;i++)

        {

                #pragma asm

                DEL3:MOV R0,#100

                DEL2:MOV R1,#100

                DEL1:MOV R2,#25

          DEL0:NOP

               NOP

               DJNZ R2,DEL0

               DJNZ R1,DEL1

               DJNZ R0,DEL2

        #pragma endasm

        }

}

void Usart() interrupt 4

{

        uint str1;

        str1=SBUF;

        g=str1;

        r=str1;

        RI = 0;//

}

void Iny0()        interrupt 0        

{

        ES=0;

        send_string(in);

        ES=1;

}

void Iny1()        interrupt 2

{

        ES=0;

        send_string(copa);

        ES=1;

}


at指令集:

AT指令集018.pdf (690.8 KB, 下載次數(shù): 61)




評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:76201 發(fā)表于 2019-3-27 13:14 來自手機(jī) | 只看該作者
帖子不錯(cuò),怎么沒人頂啊!謝謝分享!
回復(fù)

使用道具 舉報(bào)

板凳
ID:349355 發(fā)表于 2019-3-27 16:07 | 只看該作者
可以的,ESP8266的好資料。
回復(fù)

使用道具 舉報(bào)

地板
ID:403593 發(fā)表于 2019-3-27 19:52 | 只看該作者
好帖子,好資料!感謝樓主分享!
回復(fù)

使用道具 舉報(bào)

5#
ID:992634 發(fā)表于 2023-4-26 20:00 | 只看該作者
請(qǐng)問采用12MHz的晶振,波特率設(shè)為4800,應(yīng)該也可以吧
回復(fù)

使用道具 舉報(bào)

6#
ID:1064915 發(fā)表于 2023-4-27 10:14 | 只看該作者
這個(gè)例程實(shí)驗(yàn)輸出是什么
回復(fù)

使用道具 舉報(bào)

7#
ID:398219 發(fā)表于 2023-4-28 15:54 | 只看該作者
貼子不錯(cuò),請(qǐng)問一下樓主。
我用單片機(jī)通過串口連接8266獲取時(shí)間及天氣。通常前幾次可以正常的獲取到時(shí)間及天氣信息。但是出現(xiàn)異常時(shí)(未找到原因),單片機(jī)串口發(fā)送給ESP01S模塊的數(shù)據(jù),未接收到WIFI模塊的返回(感覺就像8266死機(jī)的樣子),解決辦法只有給單片機(jī)和WIFI模塊重新上電才能又可以工作幾次 。
感覺是不是ESP01S模塊串口數(shù)據(jù)通信多了,導(dǎo)致模塊工作異常了。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产区精品在线观看 | 久久国产精品一区二区三区 | 国产欧美视频一区二区三区 | 色片在线观看 | 国产精品爱久久久久久久 | 天天操天天射综合 | 中文字幕精品视频在线观看 | 日韩欧美在线视频 | 狠狠干天天干 | 五月天综合网 | 国产欧美在线 | 国产精品久久久久无码av | 福利视频一二区 | 精品国产精品三级精品av网址 | 国产 日韩 欧美 中文 在线播放 | 亚洲精品一区二区三区蜜桃久 | 密色视频| www.中文字幕| 精品久久香蕉国产线看观看亚洲 | 精品免费视频一区二区 | 免费a在线| 国产黄色大片网站 | 啪啪精品 | 午夜影院在线观看视频 | 一级黄色录像片子 | 精品久久久久国产 | 精品亚洲一区二区三区 | 午夜小电影 | 国产小网站 | 一区二区不卡视频 | 国产一区二区三区四区hd | 91毛片在线观看 | 精品少妇一区二区三区日产乱码 | 天堂资源最新在线 | 久久免费精品 | 美女一级毛片 | 国产一区二区影院 | 九一视频在线播放 | 91影库 | 精品久久久久久久 | 男女羞羞免费网站 |