nrf24l01无线模块NRF24L01模块收发c程序Word格式文档下载.doc

上传人:b****3 文档编号:15494959 上传时间:2022-11-02 格式:DOC 页数:13 大小:2.58MB
下载 相关 举报
nrf24l01无线模块NRF24L01模块收发c程序Word格式文档下载.doc_第1页
第1页 / 共13页
nrf24l01无线模块NRF24L01模块收发c程序Word格式文档下载.doc_第2页
第2页 / 共13页
nrf24l01无线模块NRF24L01模块收发c程序Word格式文档下载.doc_第3页
第3页 / 共13页
nrf24l01无线模块NRF24L01模块收发c程序Word格式文档下载.doc_第4页
第4页 / 共13页
nrf24l01无线模块NRF24L01模块收发c程序Word格式文档下载.doc_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

nrf24l01无线模块NRF24L01模块收发c程序Word格式文档下载.doc

《nrf24l01无线模块NRF24L01模块收发c程序Word格式文档下载.doc》由会员分享,可在线阅读,更多相关《nrf24l01无线模块NRF24L01模块收发c程序Word格式文档下载.doc(13页珍藏版)》请在冰豆网上搜索。

nrf24l01无线模块NRF24L01模块收发c程序Word格式文档下载.doc

1、24L01模块的电源电压是否为3V-3.6V之间;

2、如果您用的单片机是5V的话,请在IO口与模块接口之间串一个1K电阻;

3、检查模块的GND是否与单片机的GND相连接

4、先用程序进行调试,如果IO口不同,请更改IO口或相关时序;

5、如果是51系列单片机,晶振请选用11.0592M 

Hz;

模块供电最好用asm11175v转3.3v稳压

测试单片机是stc89c52;

at89c52通用;

收发一体;

一大截不废话了;

上程序;

此程序是按键控制led;

当按下s的时候对应接受的led会闪闪发光;

很简单的~如果要实现其他更先进的功能;

自己发掘吧~~

务必将硬件连接正确;

否则;

它不会工作的~~当然做什么都要严谨~~错一点就差大了~~

《《收发一体程序》》

#include<

reg52.h>

intrins.h>

typedefunsignedcharuchar;

typedefunsignedcharuint;

//****************************************NRF24L01端口定义***************************************

sbit MISO =P1^3;

sbit MOSI =P1^4;

sbit SCK =P1^2;

sbit CE =P1^1;

sbit CSN =P3^2;

sbit IRQ =P3^3;

//************************************按键***************************************************

sbit KEY=P2^0;

//*****************************************************************************

sbit led=P2^1;

//*********************************************NRF24L01*************************************

#defineTX_ADR_WIDTH5 //5uintsTXaddresswidth

#defineRX_ADR_WIDTH5 //5uintsRXaddresswidth

#defineTX_PLOAD_WIDTH20 //20uintsTXpayload

#defineRX_PLOAD_WIDTH20 //20uintsTXpayload

uintconstTX_ADDRESS[TX_ADR_WIDTH]={0x34,0x43,0x10,0x10,0x01};

//本地地址

uintconstRX_ADDRESS[RX_ADR_WIDTH]={0x34,0x43,0x10,0x10,0x01};

//接收地址

//***************************************NRF24L01寄存器指令*******************************************************

#defineREAD_REG0x00 //读寄存器指令

#defineWRITE_REG0x20 //写寄存器指令

#defineRD_RX_PLOAD0x61 //读取接收数据指令

#defineWR_TX_PLOAD0xA0 //写待发数据指令

#defineFLUSH_TX0xE1 //冲洗发送FIFO指令

#defineFLUSH_RX0xE2 //冲洗接收FIFO指令

#defineREUSE_TX_PL0xE3 //定义重复装载数据指令

#defineNOP0xFF //保留

//*************************************SPI(nRF24L01)寄存器地址****************************************************

#defineCONFIG0x00//配置收发状态,CRC校验模式以及收发状态响应方式

#defineEN_AA0x01//自动应答功能设置

#defineEN_RXADDR0x02//可用信道设置

#defineSETUP_AW0x03//收发地址宽度设置

#defineSETUP_RETR0x04//自动重发功能设置

#defineRF_CH0x05//工作频率设置

#defineRF_SETUP0x06//发射速率、功耗功能设置

#defineSTATUS0x07//状态寄存器

#defineOBSERVE_TX0x08//发送监测功能

#defineCD0x09//地址检测

#defineRX_ADDR_P00x0A//频道0接收数据地址

#defineRX_ADDR_P10x0B//频道1接收数据地址

#defineRX_ADDR_P20x0C//频道2接收数据地址

#defineRX_ADDR_P30x0D//频道3接收数据地址

#defineRX_ADDR_P40x0E//频道4接收数据地址

#defineRX_ADDR_P50x0F//频道5接收数据地址

#defineTX_ADDR0x10//发送地址寄存器

#defineRX_PW_P00x11//接收频道0接收数据长度

#defineRX_PW_P10x12//接收频道0接收数据长度

#defineRX_PW_P20x13//接收频道0接收数据长度

#defineRX_PW_P30x14//接收频道0接收数据长度

#defineRX_PW_P40x15//接收频道0接收数据长度

#defineRX_PW_P50x16//接收频道0接收数据长度

#defineFIFO_STATUS0x17//FIFO栈入栈出状态寄存器设置

//**************************************************************************************

voidDelay(unsignedints);

voidinerDelay_us(unsignedcharn);

voidinit_NRF24L01(void);

uintSPI_RW(uintuchar);

ucharSPI_Read(ucharreg);

voidSetRX_Mode(void);

uintSPI_RW_Reg(ucharreg,ucharvalue);

uintSPI_Read_Buf(ucharreg,uchar*pBuf,ucharuchars);

uintSPI_Write_Buf(ucharreg,uchar*pBuf,ucharuchars);

unsignedcharnRF24L01_RxPacket(unsignedchar*rx_buf);

voidnRF24L01_TxPacket(unsignedchar*tx_buf);

//*****************************************长延时*****************************************

voidDelay(unsignedints)

{

unsignedinti;

for(i=0;

i<

s;

i++);

}

//******************************************************************************************

uint bdatasta;

//状态标志

sbit RX_DR =sta^6;

sbit TX_DS =sta^5;

sbit MAX_RT =sta^4;

/******************************************************************************************

/*延时函数

/******************************************************************************************/

voidinerDelay_us(unsignedcharn)

for(;

n>

0;

n--)

_nop_();

//****************************************************************************************

/*NRF24L01初始化

//***************************************************************************************/

voidinit_NRF24L01(void)

inerDelay_us(100);

CE=0;

//chipenable

CSN=1;

//Spidisable

SCK=0;

//

SPI_Write_Buf(WRITE_REG+TX_ADDR,TX_ADDRESS,TX_ADR_WIDTH);

//写本地地址

SPI_Write_Buf(WRITE_REG+RX_ADDR_P0,RX_ADDRESS,RX_ADR_WIDTH);

//写接收端地址

SPI_RW_Reg(WRITE_REG+EN_AA,0x01);

//频道0自动 ACK应答允许

SPI_RW_Reg(WRITE_REG+EN_RXADDR,0x01);

//允许接收地址只有频道0,如果需要多

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 财会金融考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1