NRF24L01多通道通信.doc
文本预览下载声明
无线抢答系统
本系统用到4个NRF24L01模块,最多可以加到7个NRF24L01(其中一个用作主机另外的六个用作从机)。显示用的是诺基亚的5110,MCU用的是52单片机。经亲测发送和接收都很好。在此给上原理图加程序。
附上成品图
主机代码
可下载到开发板上也可以自己做一个可以串口通信的最小系统或者去掉主机代码中的串口通信部分下载到上图做的板中(记得修改引脚)
#include reg52.h
#include intrins.h
typedef unsigned char uchar;
typedef unsigned char uint;
/*****************NRF24L01端口定义*****************************************/
sbit MISO =P0^4;
sbit MOSI =P0^3;
sbit SCK =P0^2;
sbit CE =P0^0;
sbit CSN =P0^1;
sbit IRQ =P0^5;
/*************LCD5110 I/O定义***********************************************/
sbit LCD_RST =P1^4;
sbit LCD_CE =P1^3;
sbit LCD_DC =P1^2;
sbit LCD_SCLK =P1^0;
sbit LCD_Din =P1^1;
/******************按键****************************************************/
sbit KEY1=P3^6;
sbit KEY2=P3^7;
/******************发光二极管*********************************************/
sbit led1=P1^6;
sbit led2=P1^7;
/******************NRF24L01地址宏定义*************************************/
#define TX_ADR_WIDTH 5 // 5 uints TX address width
#define RX_ADR_WIDTH 5 // 5 uints RX address width
#define TX_PLOAD_WIDTH 20 // 20 uints TX payload
#define RX_PLOAD_WIDTH 20 // 20 uints TX payload
uint const TX_ADDRESS[TX_ADR_WIDTH]= {0x34,0x43,0x10,0x10,0x01}; //本地地址
uint const RX_ADDRESS[RX_ADR_WIDTH]= {0x34,0x43,0x10,0x10,0x01}; //接收地址0
uint const RX_ADDRESS1[RX_ADR_WIDTH]={0xf1,0xb3,0xb4,0xb5,0xb6}; //接收地址1
uint const RX_ADDRESS2[RX_ADR_WIDTH]={0xcd,0xb3,0xb4,0xb5,0xb6}; //接收地址2
uint const RX_ADDRESS3[RX_ADR_WIDTH]={0xa3,0xb3,0xb4,0xb5,0xb6}; //接收地址3
uint const RX_ADDRESS4[RX_ADR_WIDTH]={0x0f,0xb3,0xb4,0xb5,0xb6}; //接收地址4
uint const RX_ADDRESS5[RX_ADR_WIDTH]={0x05,0xb3,0xb4,0xb5,0xb6}; //接收地址5
/********************NRF24L01寄存器指令*************************************/
#define READ_REG 0x00 // 读寄存器指令
#define WRITE_REG 0x20 // 写寄存器指令
#define RD_RX_PLOAD 0x61 // 读取接收数据指令
#define WR_TX_PLOAD 0xA0 // 写待发数据指令
#define FLUSH_TX 0xE1 // 冲洗发送 FIFO指令
#define FLUSH_RX 0xE2 // 冲洗接收 FIFO指令
#define REUSE_TX_PL
显示全部