二、软件部分
1>接收方程序:
主函数:
#include <reg52.h>
#include <stdio.h>
#include"NRF24L01.h"
#include <intrins.h>
void main()
{ unsigned char i=0;
unsigned char data_RX[32]={1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,
2,2,3,3,3,3,3,3,3,3,3,3,3,3};//接收到的32字节存放数组设置初值
SCON = 0x50; //REN=1允许串行接受状态,串口工作模式1,8位收发,波特率可变
TMOD|= 0x20; //定时器工作方式2 ,自动重载初值
PCON&= 0x7f; //波特率不加倍
TH1 = 0xFA; //波特率等于4800、数据位8、停止位1。效验位无,晶振为11.0592MHZ
TL1 = 0xFA;
TR1 = 1; //开启定时器1
ES = 1; //开串口中断
EA = 1; // 开总中断
NRF24L01_RX();//设置为接收模式
while(!((READ_BYTE(READ_REG+STATUS))&0x40)); //判断是否接收好32字节数据
READ_BYTES(RD_RX_PLOAD,data_RX,32); //将32字节数据存放在数组中
CE=0;
CSN=1;
_nop_();
CSN=0;
SPI_WRITE(FLUSH_RX); //清空接收FIFO,否则接收数据不可预知
SCK=0;
CSN=1;
jieshouv=0; //接收成功标志位
WRITE_BYTE(WRITE_REG+STATUS,0xFF); //屏蔽中断位
for(i=0;i<32;i++)
{ if(data_RX[i]>=10)
{SBUF=data_RX[i]/10+48; //将十位转化为ASCII码发送
while(!TI);
TI=0;
SBUF = data_RX[i]%10+48; //将个位转化为ASCII码发送
while(!TI); // 等特数据传送(TI发送中断标志)
TI = 0; // 清除数据传送标志