单片机基于2.4G无线收发模块NRF24L01的无线通信(基本测试通过)续

本文介绍了单片机使用2.4G无线收发模块NRF24L01进行无线通信的测试过程,基本测试已通过。测试结果显示通信稳定,为后续的应用提供了基础。如需了解更多详情,请访问:http://shop108408772.taobao.com/
摘要由CSDN通过智能技术生成

二、软件部分
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;  // 清除数据传送标志
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值