微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 关于esp8226与51单片机的通讯的问题,求大神。

关于esp8226与51单片机的通讯的问题,求大神。

时间:10-02 整理:3721RD 点击:
#include "reg51.h"            
#include <intrins.h>                                       
#include <string.h>         
unsigned char *receive='0';
sbit LED0=P1^0;
sbit LED1=P1^1;
void DelayMS(unsigned char x)   
{
    unsigned char a,b;
    for(b=102*x;b>0;b--)
        for(a=3;a>0;a--);
}
void UartInit()
{
        SCON=0X50;                       
        TMOD=0X20;                       
        PCON=0X80;                       
        TH1=0XF3;                    
        TL1=0XF3;
        TR1=1;
        EA=1;
        ES=1;
}
void SendByte(unsigned char dat)
{
        SBUF = dat;
        while(!TI);
  TI = 0;
}
void SendString(unsigned char *s)
{
        while(*s!='\0')
        {
                ES=0;
                SendByte(*s);
                s++;
                ES=1;
  }
}
bit Hand(unsigned char *a)
{
        if(strstr(receive,a)==NULL) return 0;
        else return 1;
}
void clear_receive()
{
        int i;
        for(i=0;i<strlen(receive)+1;i++)
                *(receive+i)='0';
}
       
void ESP8266_Sent(unsigned char *puf)   
        {  
                SendString("AT+CIPSEND=0,4");  
                while(*puf!='\0')   
                {   
                        SendByte(*puf);   
                        DelayMS(50);
                        puf++;   
                }  
                DelayMS(50);  
                SendByte('\n');   
                DelayMS(50);
        }
void main()                                                      
{        
  UartInit();                                                                                                
  DelayMS(8000);
       
  SendString("AT+RST\r\n");
        DelayMS(9000);
        SendString("AT+CWMODE=2\r\n");
        DelayMS(9000);
       
        SendString("AT+RST\r\n");
        DelayMS(9000);
       
        SendString("AT+CIOBAUD=4800\r\n");
        DelayMS(9000);
       
        SendString("AT+CWSAP=\"WIFI\",\"1234567890\",1,3\r\n");
        DelayMS(9000);
       
        SendString("AT+CIPMUX=1\r\n");
        DelayMS(9000);
       
        SendString("AT+CIPSERVER=1,5000\r\n");
        DelayMS(9000);
       
        LED1=0;
        while (1)                                                         
  {                                      
                DelayMS(1000);                        
    if(Hand("321"))         
                {
                        clear_receive();
                        LED1 = ~LED1;
                        ESP8266_Sent("OK");                       
                }
                else if(Hand("123"))
                {
                        clear_receive();
                        LED0=~LED0;
                        ESP8266_Sent("ko");
                }                              
  }                     
}
void Uart() interrupt 4
{
        static unsigned char i=0;
        if(RI=1)
        {
                RI=0;
                *(receive+i)=SBUF;
                i++;
                if(*(receive+(i-1))=='\0')                 i=0;
               
        }
        else TI=0;
}
问一下,这样的程序烧录进51单片机,ESP8226的WiFi模块,但是为什么不能产生WiFi信号热点,硬件是单片机的TX,RX接ESP8226的RX,TX,vcc,ch接3.3v,gnd接地。功能是简单地无线控制LED灯。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top