ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:1.64MB ,
资源ID:23191911      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/23191911.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(NRFL多通道通信.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

NRFL多通道通信.docx

1、NRFL多通道通信无线抢答系统本系统用到4个NRF24L01模块,最多可以加到7个NRF24L01(其中一个用作主机另外的六个用作从机)。显示用的是诺基亚的5110,MCU用的是52单片机。经亲测发送和接收都很好。废话不多说,在此给上原理图加程序。附上成品图阅读NRF24L01那部分代码请结合nrf24L01中文资料中的寄存器介绍结合起来一起看,能使你理解的更透彻。在此附上NRF24L01芯片的寄存器的作用和地址图片(下图的截图是在“nrf24L01中文资料”中截的图需要更完整的“nrf24L01中文资料”请自己XX搜索下载)主机代码可下载到开发板上也可以自己做一个可以串口通信的最小系统或者去

2、掉主机代码中的串口通信部分下载到上图做的板中(记得修改引脚)#include #include typedef unsigned char uchar;typedef unsigned char uint;/*NRF24L01端口定义*/sbit MISO =P04;sbit MOSI =P03;sbit SCK =P02;sbit CE =P00;sbit CSN =P01;sbit IRQ =P05;/*LCD5110 I/O定义*/sbit LCD_RST =P14;sbit LCD_CE =P13;sbit LCD_DC =P12;sbit LCD_SCLK =P10;sbit LCD

3、_Din =P11;/*按键*/sbit KEY1=P36;sbit KEY2=P37;/*发光二极管*/sbit led1=P16;sbit led2=P17;/*NRF24L01地址宏定义*/#define TX_ADR_WIDTH 5 )右移一位,准备传送下一个数据 SCK = 1; )设置SCK为高 uchar |= MISO; then set SCK low again)拉低SCK时钟产生下降沿,从MSOI送出数据,在下一次SCK为高时读入MISO return(uchar); .)CSN拉低,启动SPI通信 NRF24L01_SPI_RW(reg); )设置读取的寄存器 reg_

4、val = NRF24L01_SPI_RW(0); then read registervalue)读出寄存器中的数据 CSN = 1; and write value to it.)向选择的寄存器中写入数据 CSN = 1; )右移一位,准备传送下一个数据 SCK = 1; )设置SCK为高 uchar |= MISO; then set SCK low again)拉低SCK时钟产生下降沿,从MSOI送出数据,在下一次SCK为高时读入MISO return(uchar); .)CSN拉低,启动SPI通信 NRF24L01_SPI_RW(reg); )设置读取的寄存器 reg_val = N

5、RF24L01_SPI_RW(0); then read registervalue)读出寄存器中的数据 CSN = 1; and write value to it.)向选择的寄存器中写入数据 CSN = 1; / (CSN high again)CSN拉高,终止SPI通信 return(status); / (return nRF24L01 status uchar)返回2401 reg寄存器的状态/*/*函数:uint SPI_Read_Buf(uchar reg, uchar *pBuf, uchar uchars)/*功能: 用于读数据,reg:为寄存器地址,pBuf:为待读出数据地

6、址,uchars:读出数据的个数/*/uint NRF24L01_SPI_Read_Buf(uchar reg, uchar *pBuf, uchar uchars) uint status,uchar_ctr; CSN = 0; / Set CSN low, init SPI tranaction status = NRF24L01_SPI_RW(reg); / Select register to write to and read status uchar for(uchar_ctr=0;uchar_ctruchars;uchar_ctr+) pBufuchar_ctr = NRF24L

7、01_SPI_RW(0); / CSN = 1; return(status); / return nRF24L01 status uchar/*/*函数:uint SPI_Write_Buf(uchar reg, uchar *pBuf, uchar uchars)/*功能: 用于写数据,reg:为寄存器地址,pBuf:为待写入数据地址,uchars:写入数据的个数/*/uint NRF24L01_SPI_Write_Buf(uchar reg, uchar *pBuf, uchar uchars) uint status,uchar_ctr; CSN = 0; /SPI使能 status

8、= NRF24L01_SPI_RW(reg); for(uchar_ctr=0; uchar_ctruchars; uchar_ctr+) / NRF24L01_SPI_RW(*pBuf+);/指向下一个数据 CSN = 1; /关闭SPI return(status); /返回24L01的状态/*/*函数:void SetRX_Mode(void)/*功能:数据接收配置 /*/void NRF24L01_SetRX_Mode(void) CE=0; /片选使能 NRF24L01_SPI_RW_Reg(WRITE_REG + CONFIG, 0x0f); / IRQ收发完成中断响应,16位CR

9、C ,主接收 CE = 1; /片选失能 inerDelay_us(130);/*/*函数:unsigned char nRF24L01_RxPacket(unsigned char* rx_buf)/*功能:数据读取后放如rx_buf接收缓冲区中/*/unsigned char NRF24L01_RxPacket(unsigned char* rx_buf) unsigned char revale=0; NRF24L01_SetRX_Mode(); Delay(1000); sta=NRF24L01_SPI_Read(STATUS); / 读取状态寄存其来判断数据接收状? if(RX_DR

10、) / 判断是否接收到数据 CE = 0; /SPI使能 NRF24L01_SPI_Read_Buf(RD_RX_PLOAD,rx_buf,TX_PLOAD_WIDTH);/ (read receive payload from RX_FIFO buffer)从接收缓冲器中读出数据 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_

11、RX); /用于清空FIFO !关键!防止接收先前的数据! CSN=1; Delay(100); led2=1; return revale;/*/*函数:void nRF24L01_TxPacket(unsigned char * tx_buf)/*功能:发送 tx_buf中数据/*/void NRF24L01_TxPacket(unsigned char * tx_buf) CE=0; /(StandBy I模式)待机 I模式 CSN=0; NRF24L01_SPI_RW(FLUSH_TX); /用于清空FIFO !关键!防止发送先前的数据! CSN=1; NRF24L01_SPI_Wri

12、te_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);/*/void main() unsigned char TxBufTX_PLOAD_WIDTH=0; /定义

13、发送的数据数组 unsigned char RxBufRX_PLOAD_WIDTH=0; /定义接收数据的数组 unsigned char tf=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,RxBu

14、f); if(KEY2=0) /去抖延时 Delay(30); if(KEY2=0) TxBuf0=0; /抢答模式 led1=0; Delay(120); led1=1; Delay(120); NRF24L01_TxPacket(TxBuf); while(!KEY2); if(KEY4=0) Delay(30); /去抖延时 if(KEY4=0) while(!KEY4);break; TxBuf0=0; TxBuf1=0; LCD_write_english_string(2*6,1,jury mode); LCD_write_english_string(2*6,2,grade:);

15、 LCD_write_english_char(8*6,2,0); while(1) if(KEY1=0) Delay(30); /去抖延时 if(KEY1=0) TxBuf1=TxBuf1+1; if(TxBuf1=11) TxBuf1=0; LCD_write_english_char(8*6,2,TxBuf1+0x30); LCD_write_english_char(9*6,2, ); if(TxBuf1=10) LCD_write_english_char(8*6,2,1); LCD_write_english_char(9*6,2,0); led1=0; Delay(120); l

16、ed1=1; Delay(120); while(!KEY1); if(KEY2=0) Delay(30); /去抖延时 if(KEY2=0) TxBuf0=1; /评委模式 NRF24L01_TxPacket(TxBuf); led1=0; Delay(120); led1=1; Delay(120); while(!KEY2); if(KEY3=0) Delay(30); /去抖延时 if(KEY3=0) if(TxBuf1=0) TxBuf1=10; else TxBuf1=TxBuf1-1; LCD_write_english_char(8*6,2,TxBuf1+0x30); LCD_

17、write_english_char(9*6,2, ); if(TxBuf1=10) LCD_write_english_char(8*6,2,1); LCD_write_english_char(9*6,2,0); led1=0; Delay(120); led1=1; Delay(120); while(!KEY3); if(KEY4=0) Delay(30); /去抖延时 if(KEY4=0) while(!KEY4);break; LCD_write_english_string(2*6,1, ); LCD_write_english_string(2*6,2, ); TxBuf0=0; TxBuf1=0; /*修改日:2013/9/25称号:起点 学校:桂林电子科技大学本人现在正在写上位机的串口通信软件有什么意见的可以一起交流*/

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

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