亚洲春色中文字幕久久久-三上亚,91精品国产亚一区二区三区,久久久九色综合亚洲成色777,涩涩视频下载,国产午夜亚洲精品午夜鲁丝片,国产精品A一区二区三区腾讯导航,影音先锋色情AV在线看片,蜜臀国产在线视频,极品少妇高潮啪啪无码吴梦梦 ,精品人妻无码一区二区三区手机版

標(biāo)題: ESP8266與51單片機(jī)系統(tǒng)與上位機(jī)通信實(shí)例 附源程序 [打印本頁(yè)]

作者: 欣欣    時(shí)間: 2021-4-30 19:42
標(biāo)題: ESP8266與51單片機(jī)系統(tǒng)與上位機(jī)通信實(shí)例 附源程序
很久很久以前樓主跟著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ī)的。





作者: 欣欣    時(shí)間: 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 旗艦版


作者: 欣欣    時(shí)間: 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),別著急,羅馬不是一天建成的。


作者: 欣欣    時(shí)間: 2021-4-30 20:52
上傳幾張圖,簡(jiǎn)單說(shuō)明一下各個(gè)模塊的引腳,免的大家還要自己去找ESP-01S和STC15W408AS引腳圖







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


作者: 欣欣    時(shí)間: 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


作者: 欣欣    時(shí)間: 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)跟隨我的步伐揭露真相吧!

作者: 欣欣    時(shí)間: 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;



作者: 欣欣    時(shí)間: 2021-4-30 23:07
下面我們將ESP-01S模塊聯(lián)入系統(tǒng),如下圖所示

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


作者: 欣欣    時(shí)間: 2021-4-30 23:10
然后我的電腦就能收到wifi信號(hào)了,如圖所示,我們跟他連接上。


作者: 欣欣    時(shí)間: 2021-4-30 23:35
斷開(kāi)燒錄器與單片機(jī)的串口線(xiàn),只保留電源線(xiàn),我們就快樂(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


作者: 欣欣    時(shí)間: 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)步啊!

作者: cb474265474265    時(shí)間: 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í)了。




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