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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

ESP8266與51單片機系統與上位機通信實例 附源程序

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

感謝: a1bc2de3f 的帖子,我是跟他那學會的,感謝51黑論壇提供的平臺

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




評分

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

查看全部評分

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

使用道具 舉報

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

本例實現的功能:用上位機軟件通過ESP8266模塊控制STC15W408AS單片機以點了LED指示燈
主要元件:ESP-01S(ESP8266)模塊 一個
STC15W408AS單片機  一個 因為這個單片機支持3.3V電壓
發光二極管   N個
電阻    5.1K  N個
所使用的軟件有:
protel(畫電路圖)
delphi7.0(編寫上位機軟件)
keil5 V5.11.0.0(編寫單片機軟件)STC-ISP V6.88(下載單片機程序)
樓主電腦系統是WIN7 旗艦版

回復

使用道具 舉報

板凳
ID:506248 發表于 2021-4-30 20:42 | 只看該作者
1:先傳一張電氣原理圖,畫圖也需要好長時間呢

盡量不弄的太復雜,避免新手因太難而半途而廢,大家可以看到樓主沒有用
晶振及復位電路,因為STC15W408AS這款單片機已經內置了這些,所以沒加,連電源都用的USB-TLL程序燒寫器代替了,實際上應該給他
加一個1117 3.3的,但本例旨在讓大家看懂原理,而非追求系統穩定性。
所以樓主偷一下懶,請大家原諒。

注意:本貼在編寫過程中難免會有疏忽的問題,所以可能也會回頭更改編輯之前樓層的帖子哦!
所以請大家耐心一點,跟隨樓主的步伐,一點一點的來,別著急,羅馬不是一天建成的。

回復

使用道具 舉報

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






回復

使用道具 舉報

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

回復

使用道具 舉報

6#
ID:506248 發表于 2021-4-30 22:26 | 只看該作者
//STC15W408AS單片機程序源代碼如下:
//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;
                }
        }
}
//程序的主要算法來自 網友 a1bc2de3f

回復

使用道具 舉報

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

如圖所示,先設置好框2內串口波特率等參數后,并打開串口,
別忘記點選程序下載完成后打開串口選項。
將程序下載到單片機 我們將從框3看到單片機發送給ESP-01S模塊
的初始化指令,實際上這些指令是傳給ESP-01S模塊的,只是因為
現在單片機的串口連在電腦上,我們可以監控得到而已,借此我們可以
看看我們期望單片機發送的AT指令是否正確!
框4里是我們需要用到的指令,將來我們將通過網絡ESP-01s模塊控制單片機的
暫時用電腦模擬ESP-01S模塊給單片機傳送指令,看是否是我們期望的。
據我觀察完全正確,我們離成功越來越近了,請跟隨我的步伐揭露真相吧!
回復

使用道具 舉報

8#
ID:506248 發表于 2021-4-30 22:56 | 只看該作者
下面我們用DELPHI7.0編寫上位機軟件 將用到關鍵控件為 indy clients 標簽頁內的 IdTCPClient 控件添加6個按鈕控件 和 一個IdTCPClient 控件 如圖所示





程序代碼如下:(注意6個按鈕都用這一個代碼,變量i是用來區分它們的,也就是說它們的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;


回復

使用道具 舉報

9#
ID:506248 發表于 2021-4-30 23:07 | 只看該作者
下面我們將ESP-01S模塊聯入系統,如下圖所示

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

回復

使用道具 舉報

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

回復

使用道具 舉報

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

上位機軟件功能就是通過WIFI網絡傳送 A  B  C  D  E  F這幾個字母給單片機而已,原理也很簡單。
畢竟樓主現在還只會點皮毛。
接下來我將去學如何在安卓手機上編寫上位機程序了,希望會這個的師兄賜教!




8266_51系統與上位機實驗全部源碼.rar

208.59 KB, 下載次數: 37, 下載積分: 黑幣 -5

回復

使用道具 舉報

12#
ID:506248 發表于 2021-5-1 02:19 | 只看該作者
'經過2個小時的奮戰,終于用E4A編出了手機控制程序,程序代碼如下,能實現和電腦完全一樣的功能(我可是現學的哦)
事件 按鈕1.被單擊()
        客戶1.連接服務器("192.168.4.1",1111,5000)
        保存對象("客戶1",客戶1)
結束 事件

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

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

事件 按鈕2.被單擊()
        變量 字節集 為 字節型(1)
        字節集(0)=65
        客戶1.發送數據(字節集)
結束 事件

事件 按鈕3.被單擊()
        變量 字節集 為 字節型(1)
        字節集(0)=66
        客戶1.發送數據(字節集)
結束 事件

事件 按鈕4.被單擊()
        變量 字節集 為 字節型(1)
        字節集(0)=67
        客戶1.發送數據(字節集)       
結束 事件

事件 按鈕5.被單擊()
        變量 字節集 為 字節型(1)
        字節集(0)=68
        客戶1.發送數據(字節集)       
結束 事件

事件 按鈕6.被單擊()
        變量 字節集 為 字節型(1)
        字節集(0)=69
        客戶1.發送數據(字節集)       
結束 事件

事件 按鈕7.被單擊()
        變量 字節集 為 字節型(1)
        字節集(0)=70
        客戶1.發送數據(字節集)       
結束 事件

'至此整個帖子就完成了,已經達到立貼時的目標,不知道你們學會了嗎?有問題可以提問哦,共同進步啊!
回復

使用道具 舉報

13#
ID:333678 發表于 2021-5-5 10:35 | 只看該作者
欣欣 發表于 2021-5-1 02:19
'經過2個小時的奮戰,終于用E4A編出了手機控制程序,程序代碼如下,能實現和電腦完全一樣的功能(我可是現學 ...

非常感謝樓主無私奉獻!學習了。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品国产 | 色综合一区二区 | 精品区一区二区 | 精品免费| 精品欧美激情精品一区 | 精品欧美一区二区三区免费观看 | 欧美日韩在线精品 | 久久久久国产一级毛片高清网站 | 久久99精品国产自在现线小黄鸭 | 日韩在线日韩 | 国内精品一区二区三区 | 在线精品一区二区三区 | 伊人久久精品一区二区三区 | 啪啪av| 青青久草 | 99成人 | 国产激情在线观看 | 国产精品999| 99久久久久 | wwwxxx国产 | 国产视频福利在线观看 | 国产小视频在线观看 | 999www视频免费观看 | 日韩色在线 | 日韩成人免费视频 | 久久久国产一区 | 午夜av电影 | 亚洲视频一区在线 | 国产免费人成xvideos视频 | 久久视频精品 | 久久久夜 | 中文字幕免费 | gogo肉体亚洲高清在线视 | 国产最新视频在线 | 正在播放国产精品 | 中文字幕国产精品视频 | 日韩国产在线 | 国产精品无码专区在线观看 | 午夜在线视频 | 欧美激情精品久久久久 | 日本一区二区三区四区 |