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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 13226|回復: 6
打印 上一主題 下一主題
收起左側

51單片機使用8266wifi(esp12s)實驗例程(含源程序)

  [復制鏈接]
跳轉到指定樓層
樓主
軟件準備:1.net assist網絡調試助手
2.串口調試助手

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


2.STC52單片機存放不下要發送給8266WIFI的太多指令
解決方法:
                在target的option里選為large in XDATA,意思為使用單片機的64KBRAM空間,程序內定義的所有變量都會存放到此空間。
                同時選用use Xram,只用加stc的keil擴展包才會有這個選項,選用AT89C51不會有。


                                          


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

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


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


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

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



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



6.發送連接相應wifi的指令后,還沒連接成功就進行下一條指令操作怎么辦?

解決方案:

                   設置延時,連接端口指令建議延時長一點



源程序如下(我使用的是精準延時,如果要拷貝的話看我另一個帖子,添加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, 下載次數: 61)




評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

5#
ID:992634 發表于 2023-4-26 20:00 | 只看該作者
請問采用12MHz的晶振,波特率設為4800,應該也可以吧
回復

使用道具 舉報

6#
ID:1064915 發表于 2023-4-27 10:14 | 只看該作者
這個例程實驗輸出是什么
回復

使用道具 舉報

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 天堂国产 | 久久在线 | 日本精品久久久久久久 | 免费成人在线网站 | 国产精品a久久久久 | 国产精品久久久久aaaa | 色就是色欧美 | 日韩精品一区二区久久 | 五月天激情综合网 | 奇米av | 91视频亚洲 | 在线看黄免费 | 97视频人人澡人人爽 | 91色在线 | 日本黄色一级片视频 | 久久国品片 | 国产精品视频一区二区三区, | 中文字幕 在线观看 | 青青久在线视频 | 狠狠操操 | 久久国产精品一区 | 波多野结衣一区二区三区 | 国内精品视频在线观看 | 国产精品一区二区在线免费观看 | 亚洲免费视频在线观看 | 黄色片视频免费 | 日韩中文字幕一区二区 | 日韩字幕 | 国产伦精品一区二区三区精品视频 | av一区二区三区四区 | 亚洲在线 | 午夜在线观看视频 | 久久精品一 | 欧美5区 | 日韩中文在线观看 | 在线免费国产 | 成人国产免费观看 | 欧美国产日韩一区二区三区 | 中文字幕视频在线免费 | 天天拍天天色 | 亚洲成av |