怎么让nrf24l01收发程序详解对码不冲突

       本模块是NRF24L01无线传输模块,用于无线传输数据,距离不远,一般只是能够满足小距离的传输,目测是4-5m,价格一般是4元左右,可以方便的买到。

       51最小系统学习板就可以,当时是用了两块学习板,一块用于发送,一块用于接收。

         小车也是比较容易购到的,四个端口控制两个电机,两个控制一个电机,当两个端口高低电平不同时电机就会转动,即为赋值1和0是电机转动,赋值可以用单片机作用,当然这是小车启动部分,前进后退左转右转就是你赋值0和1的顺序问题了。


       整体思路是用发射端的按键控制小车,即为按键按下就前进,再按其他按键实现其他功能,本次程序是在用NRF24L01发射数据在接收端用1602显示的基础上改变。
下面是程序源码(有好几个文件,分别创建)

  1. a = RevTempDate[0];//根据接受数据来设置高低电平(目测仅限传输1.0两种数值)
  1. { //寄存器地址//读取数据存放变量//读取数据长度//用于接收
  2. { //寄存器地址//写入数据存放变量//读取数据长度//用于发送
  3. NRFSPI(FLUSH_TX);//用于清空FIFO !!关键!!不然会出现意想不到的后果!!!大家记住!!
  1. unsigned char 是定义无符号字符变量,其值的范围是
  2. 0~255 这里使用晶振12M,精确延时请使用汇编,大致延时
  3. unsigned char 是定义无符号字符变量,其值的范围是
  4. 0~255 这里使用晶振12M,精确延时请使用汇编
  1. 下面是接收的NRF24L01的程序。
  2. { //寄存器地址//读取数据存放变量//读取数据长度//用于接收
  3. { //寄存器地址//写入数据存放变量//读取数据长度//用于发送
  4. { //用于发射模式接收应答信号
  5. NRFSPI(FLUSH_RX);//用于清空FIFO !!关键!!不然会出现意想不到的后果!!!大家记住!!

nRF24L01无线传输模块,可以实现一对多,多对一,多对多,根据nRF24L01芯片特性,可以做到多个同时运行时数据不会相互影响,这就涉及到配对问题,本人做这个的时候想到的是实时变换接受发地址,这种方法确实可用,特别是在一对多时特别好用,但是在多对一是就不是很好,会有数据丢失,所以,多对一建议用多路接收数据,再配合上本人方法相信可以解决,我没做那一部分,如果有人做了,希望可以同样分享出来学习,毕竟OPEN

1、设置公共地址,用来传输从机ID

2、用芯片的ID作为收发地址,让主机可储存从机ID

3、每次发送先切换地址

我要回帖

更多关于 nrf24l01收发程序详解 的文章

 

随机推荐