找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4740|回复: 1
收起左侧

stc89c52单片机和esp8266之间通信问题

[复制链接]
ID:483213 发表于 2019-4-7 16:44 | 显示全部楼层 |阅读模式
43黑币
单片机用的stc89c52,esp8266 -1模块,按照下方的程序烧进单片机后,打开电脑串口助手发送a能控制LED4灯的亮灭,但是用手机的调试助手连接WiFi后发送a电脑调试助手能接收到a字符但是就不能控制LED4的亮灭。

希望有高手能解释一下,非常感谢

Snipaste_2019-04-07_16-42-00.png
1、设置模块为ST模式:发送:AT+CWMODE=1;返回:OK
2、  查看当前WiFi列表:AT+CWLAP返回: OK
3、  加入当前无线网络:发送命令:AT+CWJAP=”MERSAIN”,”XXXXXXXX”
第一个填你想要连接的WiFi名称,第二个填WiFi的密码
4、查看当前模块IP地址:发送: AT+CIFSR返回:当前IP地址
5、开启多连接模式 :发送命令:AT+CIPMUX=1返回:OK
6、建服务器 发送命令:AT+CIPSERVER=1,8080(设置指令)
   指令:AT+CIPSERVER=<mode>[,<port>]

#include<reg52.h>
typedef unsigned char u8;
typedef unsigned int u16;
u8 dat;
sbit LED4=P1^3;
void ConfigUART(u16 buad);//串口通信初始化函数,buad为单片机设置的波特率。
void Delay_ms(u16 n);
void Uart_Send_String(u8 *string);//串口发送多个字节。
void Delay_Us(u8 us);
void Sent_UART(u8 dat);//串口发送一个字节
void ESP8266_Init();//ESP8266初始化
void main()
{
         EA = 1;
   ConfigUART(9600);
         ESP8266_Init();
        while(1);
}
void ConfigUART(u16 buad)
{
        SCON = 0x50;
        TMOD &= 0X0F;
        TMOD |= 0x20;
        TH1 = 256 - (11059200/12/32)/buad;
        TL1 = TH1;
        ET1 = 0;
        TR1 = 1;
}
void Sent_UART(u8 dat)
{
        ES = 0;
        TI=0;
        SBUF = dat;
        while(!TI);
TI = 0;
ES = 1;
}
void Delay_Us(u8 us)
{
while(us--);
}
void Delay_ms(u16 n)
{
        unsigned int  i,j;
        for(i=0;i<n;i++)
                for(j=0;j<123;j++);
}

void Uart_Send_String(u8 *string)
{
while(*string)
{
Sent_UART(*string++);
Delay_Us(5);
}

}
void ESP8266_Init()
{
        Uart_Send_String("AT\r\n");
        Delay_ms(2000);
        Delay_ms(1000);
        Uart_Send_String("AT\r\n");
        Delay_ms(2000);
        Delay_ms(1000);
  Uart_Send_String("AT+CIPMUX=1\r\n");
        Delay_ms(2000);
        Delay_ms(1000);
  Uart_Send_String("AT+CIPSERVER=1,8080\r\n");
}
void InterruptUART() interrupt 4
{
    if (RI)  //接收到字节
    {
        RI = 0;  //手动清零接收中断标志位
        dat = SBUF;  //接收到的数据保存到接收字节变量中
                if(dat=='a')
                        {
                                LED4=~LED4;
                        }                                         //接收到的数据又直接发回,叫作-"echo",
                         //用以提示用户输入的信息是否已正确接收
    }
    if (TI)  //字节发送完毕
    {
        TI = 0;  //手动清零发送中断标志位
    }

}

回复

使用道具 举报

ID:123289 发表于 2019-4-8 08:17 | 显示全部楼层
用示波器监察一下,确保证你发的信息格式一点也不错(波特率、数据值)。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

Powered by 单片机教程网

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