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

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

QQ登錄

只需一步,快速開(kāi)始

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

ESP8266與51單片機(jī)系統(tǒng)與上位機(jī)通信實(shí)例 附源程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
很久很久以前樓主跟著QQ群友一起擼了好幾塊ESP8266的模塊
最近一段時(shí)間比較閑,拿出塵封的往事,哦不對(duì)是ESP8266模塊,決定研究研究!
在網(wǎng)上查找各種資料,例程,過(guò)程挺難的
雖然現(xiàn)在還是很迷茫,但應(yīng)該算是入門(mén)了
至少能用手機(jī)和電腦控制模塊了。AT指令俺還沒(méi)學(xué)全呢,用到了再說(shuō)吧!
手機(jī)app俺是不會(huì)編寫(xiě)的,樓主唯一會(huì)的上位機(jī)軟件就是DELPHI 7.0
下面看樓主是如何實(shí)現(xiàn)用電腦通過(guò)ESP8266模塊控制STC15W408AS單片機(jī)的。
(樓主很菜,大神自行繞道,本文是寫(xiě)給和樓主一樣的小白的

感謝: a1bc2de3f 的帖子,我是跟他那學(xué)會(huì)的,感謝51黑論壇提供的平臺(tái)

本文將貼出所有使用到的源代碼,包括上位機(jī)的。




評(píng)分

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

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:506248 發(fā)表于 2021-4-30 19:55 | 只看該作者
本帖最后由 欣欣 于 2021-4-30 20:19 編輯

本例實(shí)現(xiàn)的功能:用上位機(jī)軟件通過(guò)ESP8266模塊控制STC15W408AS單片機(jī)以點(diǎn)了LED指示燈
主要元件:ESP-01S(ESP8266)模塊 一個(gè)
STC15W408AS單片機(jī)  一個(gè) 因?yàn)檫@個(gè)單片機(jī)支持3.3V電壓
發(fā)光二極管   N個(gè)
電阻    5.1K  N個(gè)
所使用的軟件有:
protel(畫(huà)電路圖)
delphi7.0(編寫(xiě)上位機(jī)軟件)
keil5 V5.11.0.0(編寫(xiě)單片機(jī)軟件)STC-ISP V6.88(下載單片機(jī)程序)
樓主電腦系統(tǒng)是WIN7 旗艦版

回復(fù)

使用道具 舉報(bào)

板凳
ID:506248 發(fā)表于 2021-4-30 20:42 | 只看該作者
1:先傳一張電氣原理圖,畫(huà)圖也需要好長(zhǎng)時(shí)間呢

盡量不弄的太復(fù)雜,避免新手因太難而半途而廢,大家可以看到樓主沒(méi)有用
晶振及復(fù)位電路,因?yàn)镾TC15W408AS這款單片機(jī)已經(jīng)內(nèi)置了這些,所以沒(méi)加,連電源都用的USB-TLL程序燒寫(xiě)器代替了,實(shí)際上應(yīng)該給他
加一個(gè)1117 3.3的,但本例旨在讓大家看懂原理,而非追求系統(tǒng)穩(wěn)定性。
所以樓主偷一下懶,請(qǐng)大家原諒。

注意:本貼在編寫(xiě)過(guò)程中難免會(huì)有疏忽的問(wèn)題,所以可能也會(huì)回頭更改編輯之前樓層的帖子哦!
所以請(qǐng)大家耐心一點(diǎn),跟隨樓主的步伐,一點(diǎn)一點(diǎn)的來(lái),別著急,羅馬不是一天建成的。

回復(fù)

使用道具 舉報(bào)

地板
ID:506248 發(fā)表于 2021-4-30 20:52 | 只看該作者
上傳幾張圖,簡(jiǎn)單說(shuō)明一下各個(gè)模塊的引腳,免的大家還要自己去找ESP-01S和STC15W408AS引腳圖






回復(fù)

使用道具 舉報(bào)

5#
ID:506248 發(fā)表于 2021-4-30 21:25 | 只看該作者
硬件連接:先來(lái)連接單片機(jī)與指示燈部分的,先把指示功能部分的程序調(diào)通了再去連接ESP-01S模塊
圖中實(shí)驗(yàn)板是樓主以前為了實(shí)驗(yàn)方便做的,雖然燈比較多,實(shí)際我只用了3個(gè),連接完全按照電氣原理圖連的哦!

回復(fù)

使用道具 舉報(bào)

6#
ID:506248 發(fā)表于 2021-4-30 22:26 | 只看該作者
//STC15W408AS單片機(jī)程序源代碼如下:
//QQ:9173002 STC15W408AS @11.0592MHZ
#include <reg52.h>
#include "intrins.h"
typedef unsigned int u16;
typedef unsigned char u8;
sfr P5          =   0xc8;
sfr AUXR        =   0x8E;   
sfr T2H         =   0xD6;   
sfr T2L         =   0xD7;   

sbit LED1=P1^2;
sbit LED2=P1^5;
sbit LED3=P5^5;

u8 receive[2];
u8 sign=0;

void Delay1000ms()                //@11.0592MHz
{
        unsigned char i, j, k;

        _nop_();
        i = 8;
        j = 1;
        k = 243;
        do
        {
                do
                {
                        while (--k);
                } while (--j);
        } while (--i);
}

void Init()//115200bps@11.0592MHz
{
        SCON = 0x50;               
        AUXR |= 0x01;               
        AUXR |= 0x04;               
        T2L = 0xE8;               
        T2H = 0xFF;               
        AUXR |= 0x10;               
        TR1 = 1;
}

void send(u8 value)
{
        ES=0;
        TI=0;
        SBUF=value;
        while(!TI);
        TI=0;
        ES=1;
}

void wifi_init()
{
          u8 j=0;
          u8 a[]="AT+CWMODE=2\r\n";        //1=station 2=ap 3=station+ap          
          u8 b[]="AT+CIOBAUD=115200\r\n";//BAND
          u8 c[]="AT+CWSAP_DEF=\"My_8266\",\"1234567890\",1,0,3,0\r\n";        //set wifi         
          u8 d[]="AT+CIPMUX=1\r\n";                  
          u8 e[]="AT+CIPSERVER=1,1111\r\n";
          j=0;        
         while(a[j]!='\0')
        {
               send(a[j]);
            j++;
        }
          j=0;                                
         Delay1000ms();
          while(b[j]!='\0')
        {
            send(b[j]);
            j++;
         }
         Delay1000ms();
         j=0;                                
         while(c[j]!='\0')
         {
             send(c[j]);
             j++;
         }
         Delay1000ms();
         j=0;                                
         while(d[j]!='\0')
        {
            send(d[j]);
            j++;
        }
        Delay1000ms();
        j=0;                                
        while(e[j]!='\0')
       {
           send(e[j]);
           j++;
       }
       Delay1000ms();
}

void wifi_data()
{
        if(receive[0]=='A')                  
        {
                LED1=0;
        }
        if(receive[0]=='B')                 
        {
                LED1=1;
        }
        if(receive[0]=='C')                  
        {
                LED2=0;
        }
        if(receive[0]=='D')                 
        {
                LED2=1;
        }
        if(receive[0]=='E')                  
        {
                LED1=0;
                LED2=0;
        }
        if(receive[0]=='F')                 
        {
                LED1=1;
                LED2=1;
        }       
}   

void main()
{
        Init();
        EA = 1;
        ES = 0;
        wifi_init();
        while(1)
        {
                wifi_data();
        }
}

void ZD() interrupt 4
{
        LED3=~LED3;
        if(RI)
        {
                RI=0;
                if(sign==1)
                {
                        receive[0]=SBUF;
                        sign=0;                       
                }
                if(SBUF==':')            
                {
                        sign=1;
                }
        }
}
//程序的主要算法來(lái)自 網(wǎng)友 a1bc2de3f

回復(fù)

使用道具 舉報(bào)

7#
ID:506248 發(fā)表于 2021-4-30 22:29 | 只看該作者

如圖所示,先設(shè)置好框2內(nèi)串口波特率等參數(shù)后,并打開(kāi)串口,
別忘記點(diǎn)選程序下載完成后打開(kāi)串口選項(xiàng)。
將程序下載到單片機(jī) 我們將從框3看到單片機(jī)發(fā)送給ESP-01S模塊
的初始化指令,實(shí)際上這些指令是傳給ESP-01S模塊的,只是因?yàn)?br /> 現(xiàn)在單片機(jī)的串口連在電腦上,我們可以監(jiān)控得到而已,借此我們可以
看看我們期望單片機(jī)發(fā)送的AT指令是否正確!
框4里是我們需要用到的指令,將來(lái)我們將通過(guò)網(wǎng)絡(luò)ESP-01s模塊控制單片機(jī)的
暫時(shí)用電腦模擬ESP-01S模塊給單片機(jī)傳送指令,看是否是我們期望的。
據(jù)我觀察完全正確,我們離成功越來(lái)越近了,請(qǐng)跟隨我的步伐揭露真相吧!
回復(fù)

使用道具 舉報(bào)

8#
ID:506248 發(fā)表于 2021-4-30 22:56 | 只看該作者
下面我們用DELPHI7.0編寫(xiě)上位機(jī)軟件 將用到關(guān)鍵控件為 indy clients 標(biāo)簽頁(yè)內(nèi)的 IdTCPClient 控件添加6個(gè)按鈕控件 和 一個(gè)IdTCPClient 控件 如圖所示





程序代碼如下:(注意6個(gè)按鈕都用這一個(gè)代碼,變量i是用來(lái)區(qū)分它們的,也就是說(shuō)它們的tag屬性分別是1~6)
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
   i:=(Sender As TButton).tag;
   IdTCPClient1.Host:='192.168.4.1';
   IdTCPClient1.Port:=1111;
   IdTCPClient1.Connect();
   case i of
      1:IdTCPClient1.WriteLn('A');
      2:IdTCPClient1.WriteLn('B');
      3:IdTCPClient1.WriteLn('C');
      4:IdTCPClient1.WriteLn('D');
      5:IdTCPClient1.WriteLn('E');
      6:IdTCPClient1.WriteLn('F');
   end;
   IdTCPClient1.Disconnect;
end;


回復(fù)

使用道具 舉報(bào)

9#
ID:506248 發(fā)表于 2021-4-30 23:07 | 只看該作者
下面我們將ESP-01S模塊聯(lián)入系統(tǒng),如下圖所示

重新上電兩次,以便單片機(jī)初始化ESP-01S模塊,為啥要
重新上電兩次,自己考慮吧,吃別人嚼過(guò)的饃不香。

回復(fù)

使用道具 舉報(bào)

10#
ID:506248 發(fā)表于 2021-4-30 23:10 | 只看該作者
然后我的電腦就能收到wifi信號(hào)了,如圖所示,我們跟他連接上。

回復(fù)

使用道具 舉報(bào)

11#
ID:506248 發(fā)表于 2021-4-30 23:35 | 只看該作者
斷開(kāi)燒錄器與單片機(jī)的串口線,只保留電源線,我們就快樂(lè)的玩耍了。
下面我把源碼奉上

上位機(jī)軟件功能就是通過(guò)WIFI網(wǎng)絡(luò)傳送 A  B  C  D  E  F這幾個(gè)字母給單片機(jī)而已,原理也很簡(jiǎn)單。
畢竟樓主現(xiàn)在還只會(huì)點(diǎn)皮毛。
接下來(lái)我將去學(xué)如何在安卓手機(jī)上編寫(xiě)上位機(jī)程序了,希望會(huì)這個(gè)的師兄賜教!




8266_51系統(tǒng)與上位機(jī)實(shí)驗(yàn)全部源碼.rar

208.59 KB, 下載次數(shù): 37, 下載積分: 黑幣 -5

回復(fù)

使用道具 舉報(bào)

12#
ID:506248 發(fā)表于 2021-5-1 02:19 | 只看該作者
'經(jīng)過(guò)2個(gè)小時(shí)的奮戰(zhàn),終于用E4A編出了手機(jī)控制程序,程序代碼如下,能實(shí)現(xiàn)和電腦完全一樣的功能(我可是現(xiàn)學(xué)的哦)
事件 按鈕1.被單擊()
        客戶(hù)1.連接服務(wù)器("192.168.4.1",1111,5000)
        保存對(duì)象("客戶(hù)1",客戶(hù)1)
結(jié)束 事件

事件 客戶(hù)1.連接完畢(連接結(jié)果 為 邏輯型)
        如果 連接結(jié)果 = 真 則
                 按鈕1.可視=假
             按鈕2.可視=真
             按鈕3.可視=真
             按鈕4.可視=真
             按鈕5.可視=真
             按鈕6.可視=真
             按鈕7.可視=真
             按鈕8.可視=真
        結(jié)束 如果
結(jié)束 事件

事件 按鈕8.被單擊()
        客戶(hù)1.斷開(kāi)連接()
        按鈕1.可視=真
        按鈕2.可視=假
        按鈕3.可視=假
        按鈕4.可視=假
        按鈕5.可視=假
        按鈕6.可視=假
        按鈕7.可視=假
        按鈕8.可視=假
結(jié)束 事件

事件 按鈕2.被單擊()
        變量 字節(jié)集 為 字節(jié)型(1)
        字節(jié)集(0)=65
        客戶(hù)1.發(fā)送數(shù)據(jù)(字節(jié)集)
結(jié)束 事件

事件 按鈕3.被單擊()
        變量 字節(jié)集 為 字節(jié)型(1)
        字節(jié)集(0)=66
        客戶(hù)1.發(fā)送數(shù)據(jù)(字節(jié)集)
結(jié)束 事件

事件 按鈕4.被單擊()
        變量 字節(jié)集 為 字節(jié)型(1)
        字節(jié)集(0)=67
        客戶(hù)1.發(fā)送數(shù)據(jù)(字節(jié)集)       
結(jié)束 事件

事件 按鈕5.被單擊()
        變量 字節(jié)集 為 字節(jié)型(1)
        字節(jié)集(0)=68
        客戶(hù)1.發(fā)送數(shù)據(jù)(字節(jié)集)       
結(jié)束 事件

事件 按鈕6.被單擊()
        變量 字節(jié)集 為 字節(jié)型(1)
        字節(jié)集(0)=69
        客戶(hù)1.發(fā)送數(shù)據(jù)(字節(jié)集)       
結(jié)束 事件

事件 按鈕7.被單擊()
        變量 字節(jié)集 為 字節(jié)型(1)
        字節(jié)集(0)=70
        客戶(hù)1.發(fā)送數(shù)據(jù)(字節(jié)集)       
結(jié)束 事件

'至此整個(gè)帖子就完成了,已經(jīng)達(dá)到立貼時(shí)的目標(biāo),不知道你們學(xué)會(huì)了嗎?有問(wèn)題可以提問(wèn)哦,共同進(jìn)步啊!
回復(fù)

使用道具 舉報(bào)

13#
ID:333678 發(fā)表于 2021-5-5 10:35 | 只看該作者
欣欣 發(fā)表于 2021-5-1 02:19
'經(jīng)過(guò)2個(gè)小時(shí)的奮戰(zhàn),終于用E4A編出了手機(jī)控制程序,程序代碼如下,能實(shí)現(xiàn)和電腦完全一樣的功能(我可是現(xiàn)學(xué) ...

非常感謝樓主無(wú)私奉獻(xiàn)!學(xué)習(xí)了。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品777一区二区 | 色免费视频 | 国产在线一区二区三区 | 久久久久亚洲精品 | 一区二区视频在线 | 999久久久| 国产一区二 | 在线免费看91 | 欧美精品一区二区蜜桃 | 另类一区| 午夜视频在线免费观看 | 欧美综合久久久 | 亚洲女优在线播放 | 久久伊人一区二区 | 成人免费淫片aa视频免费 | 一级黄a| 在线视频 欧美日韩 | 在线观看国产视频 | 久久com| 欧美成人激情 | 国产精品久久久乱弄 | 国产麻豆乱码精品一区二区三区 | 丝袜 亚洲 欧美 日韩 综合 | 91精品国产91久久综合桃花 | 久久久久久久久久久久91 | 亚洲精品白浆高清久久久久久 | 国产日韩一区二区 | 日韩在线欧美 | 自拍偷拍中文字幕 | 久久99精品久久久久子伦 | www.一区二区三区 | 奇米影视77| 91麻豆产精品久久久久久 | 国产精品一区二区视频 | 中文字幕在线视频免费视频 | 国产精品久久久久久婷婷天堂 | 福利视频大全 | 91亚洲国产成人久久精品网站 | 欧美精品一区二区免费 | 免费在线a视频 | 欧美成人一区二免费视频软件 |