标题: esp8266控制智能小车 [打印本页]

作者: heidianz    时间: 2017-5-8 23:02
标题: esp8266控制智能小车
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
//#include<reg51.h>
sbit led1=P1^0;
sbit led2=P1^1;
sbit beef=P3^6;
sbit relay=P0^0;
uchar k = 0;
uchar Receive;
uchar Receive_table[30];
void Delay_Ms(uint ms)
{
uint i,j;                              
for(i = ms; i > 0; i--)
for(j = 110; j > 0; j--);
}
void Delay_Us(uchar us)
{
while(us--);
}
void InitUART(void)
{
        TMOD=0x21;
        TH0=(65536-87)/256;
        TL0=(65536-87)%256;
        EA=1;
        ET0=1;
        TR0=0;
       
       

//    SCON = 0x50;
//    TH1 = 0xFA;
//    TL1 = TH1;
//    PCON = 0x80;
//    ES = 1;
//    EA = 1;
//    TR1 = 1;
SCON = 0X50;
TH2=0XFF;
TL2=0XFD;
RCAP2H=0XFF;
RCAP2L=0XFD;
TCLK=1;
RCLK=1;
C_T2=0;
EXEN2=0;
TR2=1;
ES = 1;
EA = 1;

}


void Uart_Send_Char(uchar dat)
{
ES = 0;
TI = 0;
SBUF = dat;
while(!TI);
TI = 0;
ES = 1;
}
void Uart_Send_String(uchar *string)
{
    while(*string)
    {
      Uart_Send_Char(*string++);
      Delay_Us(5);
    }
    Delay_Ms(1000);
}
void ESP8266_Send(uchar *puf)
{
        Delay_Ms(20);
   Uart_Send_String("AT+CLDSENDRAW=9\r\n");
        Delay_Ms(20);
   Uart_Send_String(puf);
}
void ESP8266_Init()
{
//   Uart_Send_String("AT+CIPMUX=1\r\n");
//   Uart_Send_String("AT+CIPSERVER=1,5000\r\n");
           Uart_Send_String("AT+CLDSTART\r\n");
}
void main(void)
{
          led1=0;
          led2=0;
    InitUART();
          ESP8266_Init();
        while(1)
        {
          if((Receive_table[0]=='+')&&(Receive_table[1]=='C')&&(Receive_table[2]=='R'))//MCU???????+IPD???????0\1???????
    {
    if((Receive_table[3]=='A')&&(Receive_table[6]=='1'))
     {

        switch(Receive_table[8])
        {
          case '0':
                 led1=1;
                 ESP8266_Send("LED1 OPEN\r\n");
                                               Receive_table[8]='f';
                 break;
          case '1':
                 led1=0;
                 ESP8266_Send("LED1  OFF\r\n");
                                               Receive_table[8]='f';
                 break;
                                        case '2':
                 led2=1;
                 ESP8266_Send("LED2 OPEN\r\n");
                                               Receive_table[8]='f';
                 break;
          case '3':
                 led2=0;
                 ESP8266_Send("LED2  OFF\r\n");
                                               Receive_table[8]='f';
                 break;
                                        case '4':TR0=1;break;
                                        case '5':TR0=0;break;
          case '6':
                 relay=0;
                 ESP8266_Send("relayOPEN\r\n");
                                               Receive_table[8]='f';
                 break;
                                        case '7':
                 relay=1;
                 ESP8266_Send("relay OFF\r\n");
                                               Receive_table[8]='f';
                 break;
                                  default:;
                                }
        }
                               
     }
         }
}



void UARTInterrupt(void) interrupt 4
{
        EA=0;
    if(RI==1)
    {
      RI = 0;
                        Receive = SBUF;
      Receive_table[k++] = Receive;
      if((Receive_table[k-1] == '\n') || (k == 29))
      {
         k = 0;
      }
    }
   EA=1;
}
void time_0()interrupt 1
{
        uchar num;
        TH0=(65536-87)/256;
        TL0=(65536-87)%256;
        num++;
        if(num==2)
        {
                beef=~beef;
                num=0;
        }
}



作者: 3310mad2    时间: 2017-9-22 09:29
有没有详细资料
作者: lijianfengtian    时间: 2017-10-5 19:30
能问下esp8266传输数据中间有卡顿的原因是什么?我的q是1632401541
作者: ykm    时间: 2017-10-14 14:26
AT+CLDSENDRAW=9这条指令是什么意思
作者: 腾飞的龙    时间: 2017-11-27 09:15
这个程序可用吗?我感觉缺点什么?
作者: wuxishun    时间: 2017-12-21 20:34
有电路图吗,8266连单片机线怎么接?




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1