找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2206|回复: 9
收起左侧

两个nRF24L01+51单片机无线通讯没反应 求帮助

[复制链接]
ID:528782 发表于 2019-5-15 22:38 来自手机 | 显示全部楼层 |阅读模式
我用两个24l01在51单片机上进行无线通讯,就最简单的按键调试,2401也接了3.3的稳压模块,为什么没反应…应该是自检也没过,蜂鸣器响应该是没检测到2401,那应该怎么办
回复

使用道具 举报

ID:539593 发表于 2019-5-16 10:02 | 显示全部楼层
建议首先检查硬件接线是否和程序设定的相同;
然后,可以在程序中加一些LED灯的程序,判断程序到底走到了哪一步,死在了哪一步。
最后,建议亲多用几个模块测试,避免其中有损坏的。
回复

使用道具 举报

ID:528782 发表于 2019-5-16 14:01 | 显示全部楼层
3448208832 发表于 2019-5-16 10:02
建议首先检查硬件接线是否和程序设定的相同;
然后,可以在程序中加一些LED灯的程序,判断程序到底走到了 ...

检测不到2401蜂鸣器就会响 为什么会 检测不到呢
回复

使用道具 举报

ID:52944 发表于 2019-5-16 14:31 | 显示全部楼层
在程序中加上串口打印,先确定程序死到哪了
回复

使用道具 举报

ID:539886 发表于 2019-5-16 15:35 | 显示全部楼层
我有STM32 + 24l01的双向快速通信的工程,自己摸索出来的,用在无人机数传,需要的话私信我,我回去发你
回复

使用道具 举报

ID:528782 发表于 2019-5-16 16:05 | 显示全部楼层
liushangming 发表于 2019-5-16 14:31
在程序中加上串口打印,先确定程序死到哪了

发送

#include<reg52.h>
#include"NRF_24L01.h"

sbit led=P1^0;         
sbit key=P3^0;
uchar gled[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};


void main(void)
{
        unsigned char t;
        unsigned char tmp_buf[33]={0};
        unsigned char buf[5]={0XA5,0XA5,0XA5,0XA5,0XA5};

        init_nrf24l01_io();           //初始化
        delay(20);
        SPI_Write_Buf(WRITE_REG+TX_ADDR,buf,5);           //数据存入寄存器
    SPI_Read_Buf(TX_ADDR,rx_buf,5);                             //数据读出寄存器
       

        for(t=0;t<5;t++)if(rx_buf[t]!=0XA5)break;
       
        if(t==5)  {led=0;delay(20000);led=1;}           //验证数据,正常则led闪烁

        ifnnrf_tx_mode();                                                    //设为TX模式
        while(1)
        {       
                if(key==0)                                                      
                {       
                        led=0;
                        for(t=0;t<33;t++)
                        {
                        tmp_buf[t]=0;
                        }
                        tmp_buf[31]='a';                                  

                        NRF24L01_TxPacket(tmp_buf);                                   //发送数据
                        while(NRF24L01_TxPacket(tmp_buf)!=TX_OK);  //发送失败则一直发送,直到对方接受成功为止
                       
                        tmp_buf[31]=0;               
                        led=1;
                }                            
        }
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
接收
/***********************
小板测试时如果没有效果
就将2.4G拔下,在插上,按下复位,再次发送数据即可

如果发送数据时led闪烁,应该是发送数据的按键没有去抖

***************************/
#include<reg52.h>
#include"NRF_24L01.h"

sbit led=P1^0;

void main(void)
{
unsigned char  tmp_buf[33];
        delay(200);                 
        init_nrf24l01_io();                //初始化
        delay(200);         
        led=1;
        ifnnrf_rx_mode();                //设置为RX模式
        while(1)
        {
                if(NRF24L01_RxPacket(tmp_buf)==RX_OK)//一旦接收到信息,则显示出来.
                {       
                        if(tmp_buf[31]=='a') led=(!led);   //led取反
                }               
        }                                                                     
}

  就这么最简单的程序 都会失败
回复

使用道具 举报

ID:364224 发表于 2019-8-2 15:59 | 显示全部楼层
我也是在找这个程序,也是搞不出来
回复

使用道具 举报

ID:235200 发表于 2019-8-2 19:03 | 显示全部楼层
我早几天调试出来了,很好用,http://www.51hei.com/bbs/dpj-167239-1.htm 需注意端口输入方式
回复

使用道具 举报

ID:517466 发表于 2019-8-2 19:37 | 显示全部楼层
我建议楼主先不要用单片机。先用串口工具通过AT指令方式,调好波特率,对接协议之类的设置。在用这种方式调通以后,再换成单片机来控制,这样相对就容易多了。换成单片机的时候,可以一边继续保持串口工具,一边是用单片机,OK以后,再全都换成单片机的。我的就是这么调试过来的。
回复

使用道具 举报

ID:517466 发表于 2019-8-2 19:38 | 显示全部楼层
我这边用的是AT89C2051,汇编语言模式。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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