找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

ESP8266与51单片机系统与上位机通信实例 附源程序

查看数: 9334 | 评论数: 16 | 收藏 1
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2021-4-30 19:42

正文摘要:

很久很久以前楼主跟着QQ群友一起撸了好几块ESP8266的模块, 最近一段时间比较闲,拿出尘封的往事,哦不对是ESP8266模块,决定研究研究! 在网上查找各种资料,例程,过程挺难的。 虽然现在还是很迷茫,但应该算是 ...

回复

无效楼层,该帖已经被删除
无效楼层,该帖已经被删除
无效楼层,该帖已经被删除
ID:333678 发表于 2021-5-5 10:35
欣欣 发表于 2021-5-1 02:19
'经过2个小时的奋战,终于用E4A编出了手机控制程序,程序代码如下,能实现和电脑完全一样的功能(我可是现学 ...

非常感谢楼主无私奉献!学习了。
无效楼层,该帖已经被删除
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.发送数据(字节集)       
结束 事件

'至此整个帖子就完成了,已经达到立贴时的目标,不知道你们学会了吗?有问题可以提问哦,共同进步啊!
ID:506248 发表于 2021-4-30 23:35
断开烧录器与单片机的串口线,只保留电源线,我们就快乐的玩耍了。
下面我把源码奉上

上位机软件功能就是通过WIFI网络传送 A  B  C  D  E  F这几个字母给单片机而已,原理也很简单。
毕竟楼主现在还只会点皮毛。
接下来我将去学如何在安卓手机上编写上位机程序了,希望会这个的师兄赐教!




8266_51系统与上位机实验全部源码.rar

208.59 KB, 下载次数: 37, 下载积分: 黑币 -5

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

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 旗舰版

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表