找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2327|回复: 4
打印 上一主题 下一主题
收起左侧

ESP8266+51单片机实现控制LED调试乱码问题

[复制链接]
跳转到指定楼层
楼主
10黑币
救救孩子吧!从网上找的教程,调试正常,但是8266和51单片机连接好之后,无法连接网络调试助手,上电时串口助手返回的值是乱码,代码烧录和串口助手波特率都是调的9600 这是上电之后连接串口之后返回的 这是接线图,
  1. #include <reg52.h>
  2. #include <string.h>
  3. #include <stdio.h>

  4. sbit P11_LED =P1^1; //自己定义你的LED接口
  5. sbit BUZZ = P2^3; //自己定义你的蜂鸣器接口


  6. char Recive_table[20]="";  //接收缓冲,最大20个字节
  7. char Recive_state = 0;   //接收完成标志
  8. void WIFI_Init(void);
  9. void Uart_Init(void);
  10. void ms_delay(int t);
  11. void LED(void);

  12. int main (void)
  13. {
  14.         /********************功能初始化***********************/
  15.         Uart_Init();//串口初始化,波特率为9600
  16.         ms_delay(1000) ;
  17.         WIFI_Init(); //wifi初始化
  18.         /****************************************************/
  19.         /**********************主循环************************/
  20.         while(1)
  21.         {
  22.                 ms_delay(10) ;
  23.                 if(Recive_state == 1)
  24.                 {
  25.                         ES=0;  //清空接收标志位
  26.                         if((Recive_table[0]=='+')&&(Recive_table[1]=='I')&&(Recive_table[2]=='P'))//接收到的字符串形式为+IPD,x,x:y
  27.                         {
  28.                             if((Recive_table[3]=='D')&&(Recive_table[6]==','))
  29.                             {   

  30.                                     if(Recive_table[9]=='0')  //如果你发送的是“0”
  31.                                     {
  32.                                                 P11_LED = 0;              //LED亮
  33.                                             ms_delay (10);
  34.                             BUZZ=0;               //蜂鸣器响一声
  35.                                         ms_delay (10);
  36.                             BUZZ=1;
  37.                                                 ms_delay (30);
  38.                                                 P11_LED = 1;              //LED灭
  39.                                     }

  40.                                         if(Recive_table[9]=='1')  //如果你发送的是“1”
  41.                                     {
  42.                                                 P11_LED = 0;              //LED亮
  43.                                             ms_delay (10);
  44.                             BUZZ=0;               //蜂鸣器响两声
  45.                                         ms_delay (10);
  46.                             BUZZ=1;
  47.                                                 ms_delay (10);
  48.                             BUZZ=0;
  49.                                         ms_delay (10);
  50.                             BUZZ=1;
  51.                                                 ms_delay (30);
  52.                                                 P11_LED = 1;              //LED灭
  53.                                     }

  54.                                         if(Recive_table[9]=='2')  //如果你发送的是“2”
  55.                                     {
  56.                                                 P11_LED = 0;              //LED亮
  57.                                             ms_delay (10);
  58.                             BUZZ=0;               //蜂鸣器响三声
  59.                                         ms_delay (10);
  60.                             BUZZ=1;
  61.                                                 ms_delay (10);
  62.                             BUZZ=0;
  63.                                         ms_delay (10);
  64.                             BUZZ=1;
  65.                                                 ms_delay (10);
  66.                             BUZZ=0;
  67.                                         ms_delay (10);
  68.                             BUZZ=1;
  69.                                                 ms_delay (30);
  70.                                                 P11_LED = 1;              //LED灭
  71.                                     }


  72.                                 }




  73.                         }
  74.                         memset(Recive_table,'\0',20);
  75.                         Recive_state = 0;
  76.                         ES=1;  //打开接收标志位
  77.                 }
  78.         }
  79.         /****************************************************/

  80. }

  81. /******************************************************************
  82. 函 数: void Uart_Interrupt() interrupt 4
  83. 功 能: 串口中断函数,将收到的字符存到Recive_table[]数组中
  84. 参 数: 无
  85. 返回值: 无
  86. *******************************************************************/
  87. void Uart_Interrupt() interrupt 4         
  88. {   
  89.         static char i=0;  //因为是一位一位接收,所以用static
  90.         if(RI==1)   
  91.         {  
  92.                 ES = 0;
  93.                 RI=0;         
  94.                 Recive_table[i]=SBUF;        
  95.                 i++;
  96.                 if((Recive_table[i-1] == '\n'))
  97.                 {
  98.                         Recive_table[i]='\0';
  99.                         i=0;
  100.                         Recive_state = 1;
  101.                 }
  102.                 ES = 1;      
  103.         }
  104.         else
  105.         TI = 0;     
  106. }

  107. /******************************************************************
  108. 函 数: void Uart_Init(void)
  109. 功 能: 串口初始化,波特率为9600(这个不会,上网百度)
  110. 参 数: 无
  111. 返回值: 无
  112. *******************************************************************/
  113. void Uart_Init(void)
  114. {  
  115.         TMOD=0x20;
  116.         TH1=0xfD;
  117.         TL1=0xfD;
  118.         TR1=1;
  119.         REN=1;
  120.         SM0=0;
  121.         SM1=1;
  122.         EA=1;
  123.         ES=1;
  124. }

  125. /******************************************************************
  126. 函 数: void ms_delay(int t)
  127. 功 能: 毫秒级延时
  128. 参 数: 无
  129. 返回值: 无
  130. *******************************************************************/
  131. void ms_delay(int t)
  132. {  
  133.         int i,j;
  134.         for(i=t;i>0;i--)   
  135.                 for(j=110;j>0;j--);
  136. }

  137. /******************************************************************
  138. 函 数: void LED(void)
  139. 功 能: 发送完命令后显示用的函数
  140. 参 数: 无
  141. 返回值: 无
  142. *******************************************************************/
  143. void LED(void)
  144. {
  145.         P2 = 0;
  146.         ms_delay(100);
  147.         P2 = 0xff;
  148.         ms_delay(100);
  149. }


  150. /******************************************************************
  151. 函 数: void WIFI_Init(void)
  152. 功 能: wifi初始化
  153. 参 数: 无
  154. 返回值: 无
  155. *******************************************************************/
  156. void WIFI_Init(void)
  157. {
  158.         ES = 0;
  159.         TI = 1;
  160.         printf("AT+RST\r\n");
  161.         LED();
  162.         ms_delay(1000) ;
  163.         printf("AT+CWMODE=3\r\n");
  164.         LED();
  165.         ms_delay(1000) ;
  166.         printf("AT+CIPMUX=1\r\n");
  167.         LED();
  168.         ms_delay(1000) ;
  169.         printf("AT+CIPSERVER=1,8080\r\n");      // 设置端口号8080      
  170.         LED();
  171.         ms_delay(1000) ;
  172.     printf("AT+CIOBAUD=9600\r\n");   // 设置与单片机一致的波特率     
  173.         LED();
  174.         ms_delay(1000) ;
  175.         while(!TI);
  176.         TI = 0;
  177.         ES = 1;

  178. }
复制代码

这是从网上找的代码

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:359272 发表于 2021-5-20 08:03 | 只看该作者
大兄弟,不如了解下,直接用esp8266的sdk进行开发,比51强多了,API封装也齐全。
回复

使用道具 举报

板凳
ID:277550 发表于 2021-5-20 09:03 | 只看该作者
slf252 发表于 2021-5-20 08:03
大兄弟,不如了解下,直接用esp8266的sdk进行开发,比51强多了,API封装也齐全。


esp8266 用arduino开发,也很容易上手
回复

使用道具 举报

地板
ID:923908 发表于 2021-5-20 13:39 | 只看该作者
我也遇到了一样的问题,同求一个解答,上电之后只能连接esp8266已经设定好的热点,但是不能接入tcp调试
回复

使用道具 举报

5#
ID:634256 发表于 2021-5-27 13:05 | 只看该作者
问题已经解决,需要帮助可以加Q1179556868
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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