NRF24L01多通道通信Word文档下载推荐.docx

上传人:b****5 文档编号:17762805 上传时间:2022-12-09 格式:DOCX 页数:15 大小:1.64MB
下载 相关 举报
NRF24L01多通道通信Word文档下载推荐.docx_第1页
第1页 / 共15页
NRF24L01多通道通信Word文档下载推荐.docx_第2页
第2页 / 共15页
NRF24L01多通道通信Word文档下载推荐.docx_第3页
第3页 / 共15页
NRF24L01多通道通信Word文档下载推荐.docx_第4页
第4页 / 共15页
NRF24L01多通道通信Word文档下载推荐.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

NRF24L01多通道通信Word文档下载推荐.docx

《NRF24L01多通道通信Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《NRF24L01多通道通信Word文档下载推荐.docx(15页珍藏版)》请在冰豆网上搜索。

NRF24L01多通道通信Word文档下载推荐.docx

sbitLCD_RST=P1^4;

sbitLCD_CE=P1^3;

sbitLCD_DC=P1^2;

sbitLCD_SCLK=P1^0;

sbitLCD_Din=P1^1;

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

sbitKEY1=P3^6;

sbitKEY2=P3^7;

/******************发光二极管*********************************************/

sbitled1=P1^6;

sbitled2=P1^7;

/******************NRF24L01地址宏定义*************************************/

#defineTX_ADR_WIDTH5)右移一位,准备传送下一个数据

SCK=1;

)设置SCK为高

uchar|=MISO;

thensetSCKlowagain)拉低SCK时钟产生下降沿,从MSOI送出数据,在下一次SCK为高时读入MISO

}

return(uchar);

.)CSN拉低,启动SPI通信

NRF24L01_SPI_RW(reg);

)设置读取的寄存器

reg_val=NRF24L01_SPI_RW(0);

thenreadregistervalue)读出寄存器中的数据

CSN=1;

andwritevaluetoit..)向选择的寄存器中写入数据

)右移一位,准备传送下一个数据

//(CSNhighagain)CSN拉高,终止SPI通信

return(status);

//(returnnRF24L01statusuchar)返回2401reg寄存器的状态

}

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

/*函数:

uintSPI_Read_Buf(ucharreg,uchar*pBuf,ucharuchars)

/*功能:

用于读数据,reg:

为寄存器地址,pBuf:

为待读出数据地址,uchars:

读出数据的个数

uintNRF24L01_SPI_Read_Buf(ucharreg,uchar*pBuf,ucharuchars)

{

uintstatus,uchar_ctr;

CSN=0;

//SetCSNlow,initSPItranaction

status=NRF24L01_SPI_RW(reg);

//Selectregistertowritetoandreadstatusuchar

for(uchar_ctr=0;

uchar_ctr<

uchars;

uchar_ctr++)

pBuf[uchar_ctr]=NRF24L01_SPI_RW(0);

//

//returnnRF24L01statusuchar

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

uintSPI_Write_Buf(ucharreg,uchar*pBuf,ucharuchars)

用于写数据,reg:

为待写入数据地址,uchars:

写入数据的个数

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

uintNRF24L01_SPI_Write_Buf(ucharreg,uchar*pBuf,ucharuchars)

//SPI使能

uchar_ctr<

uchar_ctr++)//

NRF24L01_SPI_RW(*pBuf++);

//指向下一个数据

//关闭SPI

//返回24L01的状态

voidSetRX_Mode(void)

/*功能:

数据接收配置

voidNRF24L01_SetRX_Mode(void)

CE=0;

//片选使能

NRF24L01_SPI_RW_Reg(WRITE_REG+CONFIG,0x0f);

//IRQ收发完成中断响应,16位CRC,主接收

CE=1;

//片选失能

inerDelay_us(130);

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

unsignedcharnRF24L01_RxPacket(unsignedchar*rx_buf)

数据读取后放如rx_buf接收缓冲区中

unsignedcharNRF24L01_RxPacket(unsignedchar*rx_buf)

unsignedcharrevale=0;

NRF24L01_SetRX_Mode();

Delay(1000);

sta=NRF24L01_SPI_Read(STATUS);

//读取状态寄存其来判断数据接收状?

if(RX_DR)//判断是否接收到数据

{

CE=0;

//SPI使能

NRF24L01_SPI_Read_Buf(RD_RX_PLOAD,rx_buf,TX_PLOAD_WIDTH);

//(readreceivepayloadfromRX_FIFObuffer)从接收缓冲器中读出数据

revale=1;

//读取数据完成标志

led2=0;

//二极管显示接没接收到数据

NRF24L01_SPI_RW_Reg(WRITE_REG+STATUS,sta);

//接收到数据后RX_DR,TX_DS,MAX_PT都置高为1,通过写1来清除中断标志

CSN=0;

NRF24L01_SPI_RW(FLUSH_RX);

//用于清空FIFO!

关键!

防止接收先前的数据!

CSN=1;

Delay(100);

led2=1;

returnrevale;

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

voidnRF24L01_TxPacket(unsignedchar*tx_buf)

发送tx_buf中数据

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

voidNRF24L01_TxPacket(unsignedchar*tx_buf)

//(StandByI模式)待机I模式

NRF24L01_SPI_RW(FLUSH_TX);

防止发送先前的数据!

NRF24L01_SPI_Write_Buf(WRITE_REG+RX_ADDR_P0,RX_ADDRESS,RX_ADR_WIDTH);

//装载接收端地址0

NRF24L01_SPI_Write_Buf(WR_TX_PLOAD,tx_buf,TX_PLOAD_WIDTH);

//装载数据

NRF24L01_SPI_RW_Reg(WRITE_REG+CONFIG,0x0e);

//IRQ收发完成中断响应,16位CRC,主发送

CE=1;

//置高CE,激发数据发送

inerDelay_us(10);

voidmain()

unsignedcharTxBuf[TX_PLOAD_WIDTH]={0};

//定义发送的数据数组

unsignedcharRxBuf[RX_PLOAD_WIDTH]={0};

//定义接收数据的数组

unsignedchartf=0;

//模式标志

LCD_init();

//5110的初始化

LCD_clear();

//5110的清屏函数

NRF24L01_init();

//NRF24L01的初始化

LCD_write_english_string(3*6,0,"

acceptor"

);

//字符串显示

while

(1)

while

(1)

{

NRF24L01_RxPacket(RxBuf);

Delay(1000);

LCD_write_english_string(3*6,1,RxBuf);

if(KEY2==0)

{//去抖延时

Delay(30);

if(KEY2==0)

{

TxBuf[0]=0;

//抢答模式

led1=0;

Delay(120);

led1=1;

NRF24L01_TxPacket(TxBuf);

while(!

KEY2);

}

}

if(KEY4==0)

{

//去抖延时

if(KEY4==0)

{while(!

KEY4);

break;

}

TxBuf[0]=0;

TxBuf[1]=0;

LCD_write_english_string(2*6,1,"

jurymode"

LCD_write_english_string(2*6,2,"

grade:

"

LCD_write_english_char(8*6,2,'

0'

if(KEY1==0)

{

if(KEY1==0)

{

TxBuf[1]=TxBuf[1]+1;

if(TxBuf[1]==11)

TxBuf[1]=0;

LCD_write_english_char(8*6,2,TxBuf[1]+0x30);

LCD_write_english_char(9*6,2,'

'

if(TxBuf[1]==10)

{

LCD_write_english_char(8*6,2,'

1'

LCD_write_english_char(9*6,2,'

}

KEY1);

}

TxBuf[0]=1;

//评委模式

}

if(KEY3==0)

if(KEY3==0)

if(TxBuf[1]==0)

{TxBuf[1]=10;

}

else

{TxBuf[1]=TxBuf[1]-1;

KEY3);

}

if(KEY4==0)

{while(!

"

}

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

修改日:

2013/9/25

称号:

起点学校:

桂林电子科技大学

QQ:

978019740

本人现在正在写上位机的串口通信软件有什么意见的可以一起交流

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

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

当前位置:首页 > 解决方案 > 学习计划

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

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