找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机无法接收esp8266的数据 附源程序

  [复制链接]
跳转到指定楼层
楼主
ID:642933 发表于 2019-11-19 21:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
51单片机对esp8266发送的信号没有反应,找不到原因,求大神解决!
这是网上找的单片机代码

  1. #include <reg52.h>
  2. #include <string.h>
  3. #include <stdio.h>

  4. sbit P20_LED=P2^0;
  5. sbit P32=P3^2;


  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.     P20_LED=0;
  19.         /****************************************************/
  20.         /**********************主循环************************/
  21.         while(1)
  22.         {
  23.                 ms_delay(10) ;
  24.                 if(Recive_state == 1)
  25.                 {
  26.                         ES=0;  //清空接收标志位
  27.                         if((Recive_table[0]=='+')&&(Recive_table[1]=='I')&&(Recive_table[2]=='P'))//接收到的字符串形式为+IPD,x,x:y
  28.                         {
  29.                             if((Recive_table[3]=='D')&&(Recive_table[6]==','))
  30.                             {   
  31.                                 if(Recive_table[9]=='0')
  32.                                         P20_LED = 0;
  33.                                         if(Recive_table[9]=='1')
  34.                                         P20_LED = 1;
  35.                                 }
  36.                         }
  37.                         memset(Recive_table,'\0',20);
  38.                         Recive_state = 0;
  39.                         ES=1;  //打开接收标志位
  40.                 }
  41.         /*if(0 == P32)    //  通过串口给手机发送字符串   wantin
  42.         {
  43.             ms_delay(400);
  44.             if(0 == P32)
  45.             {
  46.                 ES = 0;
  47.                     TI = 1;
  48.                     printf("AT+CIPSEND=?\r\n");
  49.                     LED();
  50.                     ms_delay(1000) ;
  51.                 printf("AT+CIPSEND=0,10\r\n");
  52.                     LED();
  53.                     ms_delay(1000) ;
  54.                 printf("wangting\r\n");
  55.                     LED();
  56.                     ms_delay(1000) ;
  57.                     LED();
  58.                     ms_delay(1000) ;
  59.                     LED();
  60.                     ms_delay(1000) ;
  61.                     while(!TI);
  62.                     TI = 0;
  63.                     ES = 1;
  64.             }
  65.             while(0 == P32);
  66.         } */
  67.         }
  68.         /****************************************************/
  69.          
  70. }

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

  97. /******************************************************************
  98. 函 数: void Uart_Init(void)
  99. 功 能: 串口初始化,波特率为9600(这个不会,上网百度)
  100. 参 数: 无
  101. 返回值: 无
  102. *******************************************************************/
  103. void Uart_Init(void)
  104. {  
  105.         TMOD=0x20;
  106.         TH1=0xfD;
  107.         TL1=0xfD;
  108.         TR1=1;
  109.         REN=1;
  110.         SM0=0;
  111.         SM1=1;
  112.         EA=1;
  113.         ES=1;
  114. }

  115. /******************************************************************
  116. 函 数: void ms_delay(int t)
  117. 功 能: 毫秒级延时
  118. 参 数: 无
  119. 返回值: 无
  120. *******************************************************************/
  121. void ms_delay(int t)
  122. {  
  123.         int i,j;
  124.         for(i=t;i>0;i--)   
  125.                 for(j=110;j>0;j--);
  126. }

  127. /******************************************************************
  128. 函 数: void LED(void)
  129. 功 能: 发送完命令后显示用的函数
  130. 参 数: 无
  131. 返回值: 无
  132. *******************************************************************/
  133. void LED(void)
  134. {
  135.         P2 = 0;
  136.         ms_delay(100);
  137.         P2 = 0xff;
  138.         ms_delay(100);
  139. }


  140. /******************************************************************
  141. 函 数: void WIFI_Init(void)
  142. 功 能: wifi初始化(名字:esp8266;密码:1234567890)
  143. 参 数: 无
  144. 返回值: 无
  145. *******************************************************************/
  146. void WIFI_Init(void)
  147. {
  148.         ES = 0;
  149.         TI = 1;
  150.         printf("AT+RST\r\n");
  151.         LED();
  152.         ms_delay(1000) ;
  153.         printf("AT+CWMODE=3\r\n");
  154.         LED();
  155.         ms_delay(1000) ;
  156.         printf("AT+CIPMUX=1\r\n");
  157.         LED();
  158.         ms_delay(1000) ;
  159.         printf("AT+CIPSERVER=1,8080\r\n");        
  160.         LED();
  161.         ms_delay(1000) ;
  162.     printf("AT+CIOBAUD=9600\r\n");   // 设置与单片机一致的波特率     
  163.         LED();
  164.         ms_delay(1000) ;
  165.         while(!TI);
  166.         TI = 0;
  167.         ES = 1;
  168. }
复制代码

这是esp8266的烧录


我的8266运行的波特率9600,与51单片机RX TX端口没有接错,但3.3v供电还是用的ttl。尝试过电脑网络调试助手监控,手机网络助手发送1字符时,电脑网络助手可以收到31。但8266连上51就什么反应都没有,不知道是哪里错了,求大神解决!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶2 踩
回复

使用道具 举报

沙发
ID:617449 发表于 2019-11-20 09:19 | 只看该作者
看一下单片机的晶振用的多少?应该用 11.0592
回复

使用道具 举报

板凳
ID:25310 发表于 2019-11-20 10:17 | 只看该作者
RX端口上拉电阻没?上个电路图看看。
回复

使用道具 举报

地板
ID:25310 发表于 2019-11-20 10:23 | 只看该作者
楼主能发一下你那些烧录文件吗?我也想看看你这个程序行不行,我也有一个模块正在玩。有啥测试APP一起共享一下吧
回复

使用道具 举报

5#
ID:642933 发表于 2019-11-20 21:26 | 只看该作者
来51学习1 发表于 2019-11-20 09:19
看一下单片机的晶振用的多少?应该用 11.0592

是11.0592没错的
回复

使用道具 举报

6#
ID:642933 发表于 2019-11-20 21:28 | 只看该作者
pcbboy 发表于 2019-11-20 10:17
RX端口上拉电阻没?上个电路图看看。

需要上拉电阻吗,我直接接上的,rx tx直接反接
回复

使用道具 举报

7#
ID:642933 发表于 2019-11-20 21:34 | 只看该作者
pcbboy 发表于 2019-11-20 10:23
楼主能发一下你那些烧录文件吗?我也想看看你这个程序行不行,我也有一个模块正在玩。有啥测试APP一起共享 ...

esp_iot_sdk_v1.4.0.rar (3.32 MB, 下载次数: 30)
手机软件就搜索有人网络助手就可以了
回复

使用道具 举报

8#
ID:233456 发表于 2019-12-18 19:31 来自手机 | 只看该作者
我也是同样的情况 安到单片机上就没法连接了
回复

使用道具 举报

9#
ID:233456 发表于 2019-12-18 19:34 来自手机 | 只看该作者
楼主的问题解决了没有啊
回复

使用道具 举报

10#
ID:673765 发表于 2019-12-26 21:26 | 只看该作者
我也在做相关的项目群主可不可以分享下APP端的源码呀,这个怎么实现的呀,交流交流呀
回复

使用道具 举报

11#
ID:585014 发表于 2019-12-29 18:14 | 只看该作者
楼主问题解决了吗,我也是ESP8266的数据不能传到51单片机,能分享一下方法吗,非常感谢
回复

使用道具 举报

12#
ID:130230 发表于 2020-1-8 13:55 | 只看该作者
esp8266是比较耗电的,检查一下你的电源功率够不够。
回复

使用道具 举报

13#
ID:332041 发表于 2020-1-12 19:41 | 只看该作者
这个问题也困扰我好久了,希望可以得到解决。
回复

使用道具 举报

14#
ID:646836 发表于 2020-1-22 11:54 | 只看该作者
有人解决了吗?
回复

使用道具 举报

15#
ID:207421 发表于 2020-1-22 15:29 | 只看该作者
重烧入新版本的AT固件吧,乐鑫官网有下载。
其实AT太繁琐了,有的设置还不能保存,断电就复位了,用SDK好多了
回复

使用道具 举报

16#
ID:437615 发表于 2020-1-22 17:17 来自手机 | 只看该作者
如果在电脑上测试可以在单片机上不行的话那就说明你单片机里面发送数据的程序有问题,我没有用printf函数,直接是用字符串输出,用起来完全没有问题
回复

使用道具 举报

17#
ID:648281 发表于 2020-1-22 22:19 | 只看该作者

你好!给你看一个LUA语音固件的ESP8266模块
https://blog.csdn.net/cjjcjj1/article/details/103573759
回复

使用道具 举报

18#
ID:719556 发表于 2020-4-30 00:00 来自手机 | 只看该作者
请问,您解决了吗。
回复

使用道具 举报

19#
ID:719556 发表于 2020-4-30 00:00 来自手机 | 只看该作者
他是数组中第一个字节就放数据了?
回复

使用道具 举报

20#
ID:716914 发表于 2020-5-1 15:30 | 只看该作者
有人解决了吗?可以分享一下吗,非常感谢。
回复

使用道具 举报

21#
ID:26508 发表于 2020-6-12 16:12 | 只看该作者
同问,有人解决了吗?
回复

使用道具 举报

22#
ID:65237 发表于 2020-8-5 21:00 | 只看该作者
我也做了一个 情况跟你的一样
回复

使用道具 举报

23#
ID:809311 发表于 2020-8-6 13:40 | 只看该作者
阿飞7812 发表于 2020-8-5 21:00
我也做了一个 情况跟你的一样

说明这玩意本来就是这样呗,如果不急用就代替吧【滑稽】
回复

使用道具 举报

24#
ID:65237 发表于 2020-8-18 21:27 | 只看该作者
楼主 你说问题找到了 首先模块和单片一同上电  ,手机WIFI相连 ,单片机手动复位 ,打开APP就一切OK了  通电后要手动复位才行  ,这一点问题知怎么解决.
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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