无线模块收发程序(实测成功 多图

上传人:aa****6 文档编号:39166611 上传时间:2018-05-12 格式:DOCX 页数:27 大小:66.29KB
返回 下载 相关 举报
无线模块收发程序(实测成功 多图_第1页
第1页 / 共27页
无线模块收发程序(实测成功 多图_第2页
第2页 / 共27页
无线模块收发程序(实测成功 多图_第3页
第3页 / 共27页
无线模块收发程序(实测成功 多图_第4页
第4页 / 共27页
无线模块收发程序(实测成功 多图_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《无线模块收发程序(实测成功 多图》由会员分享,可在线阅读,更多相关《无线模块收发程序(实测成功 多图(27页珍藏版)》请在金锄头文库上搜索。

1、NRF24L01 无线模块收发程序(实测成功 多图) 本模块是 NRF24L01 无线传输模块,用于无线传输数据,距离不远,一般只是能够满足小距离的传输,目测是 4-5m,价格一般是 4 元左右,可以方便的买到。51 最小系统学习板就可以,当时是用了两块学习板,一块用于发送,一块用于接收。小车也是比较容易购到的,四个端口控制两个电机,两个控制一个电机,当两个端口高低电平不同时电机就会转动,即为赋值 1 和 0 是电机转动,赋值可以用单片机作用,当然这是小车启动部分,前进后退左转右转就是你赋值 0 和 1 的顺序问题了。整体思路是用发射端的按键控制小车,即为按键按下就前进,再按其他按键实现其他功

2、能,本次程序是在用 NRF24L01 发射数据在接收端用1602 显示的基础上改变。下面是程序源码(有好几个文件,分别创建)/#include#include#include1602.h#includedelay.h#include nrf24l01.h#define uint unsigned int#define uchar unsigned charuint Weight_Shiwu=1234;unsigned char KeyScan(void);/键盘扫描/ unsigned char KeyScan(void);/键盘扫描/#define KeyPort P0sbit KEY1 =

3、 P00;sbit KEY2 = P01;sbit KEY3 = P02;sbit KEY4 = P03;sbit KEY5 = P04;void main()/ char TxDate4;/ LCD_Init(); /初始化液晶屏/ LCD_Clear(); /清屏/ NRF24L01Int(); /初始化 LCD1602/ LCD_Write_String(4,0,welcome);while(1)KeyScan();unsigned char KeyScan(void)/*/char TxDate4;if(!KEY1) /如果检测到低电平,说明按键按下DelayMs(10); /延时去抖

4、,一般 10-20msif(!KEY1) /再次确认按键是否按下,没有按下则退出while(!KEY1);/如果确认按下按键等待按键释放,没有则退出TxDate0 = 1;/向左转TxDate1 = 0;TxDate2 = 1;TxDate3 = 1;NRFSetTxMode(TxDate);/发送数据while(CheckACK(); /检测是否发送完毕/*/else if(!KEY2) /如果检测到低电平,说明按键按下DelayMs(10); /延时去抖,一般 10-20msif(!KEY2) /再次确认按键是否按下,没有按下则退出while(!KEY2);/如果确认按下按键等待按键释放,

5、没有则退出TxDate0 = 1;/向右转TxDate1 = 1;TxDate2 = 1;TxDate3 = 0;NRFSetTxMode(TxDate);/发送数据while(CheckACK(); /检测是否发送完毕/*/else if(!KEY3) /如果检测到低电平,说明按键按下DelayMs(10); /延时去抖,一般 10-20msif(!KEY3) /再次确认按键是否按下,没有按下则退出while(!KEY3);/如果确认按下按键等待按键释放,没有则退出TxDate0 = 1;/前进TxDate1 = 0;TxDate2 = 1;TxDate3 = 0;NRFSetTxMode(

6、TxDate);/发送数据while(CheckACK(); /检测是否发送完毕/*/else if(!KEY4) /如果检测到低电平,说明按键按下DelayMs(10); /延时去抖,一般 10-20msif(!KEY4) /再次确认按键是否按下,没有按下则退出while(!KEY4);/如果确认按下按键等待按键释放,没有则退出TxDate0 = 0;/后退TxDate1 = 1;TxDate2 = 0;TxDate3 = 1;NRFSetTxMode(TxDate);/发送数据while(CheckACK(); /检测是否发送完毕else if(!KEY5)DelayMs(10);if(!

7、KEY5)while(!KEY5)TxDate0 = 1;TxDate1 = 1;TxDate2 = 1;TxDate3 = 1;NRFSetTxMode(TxDate);while(CheckACK();/#include#include#include1602.h#includedelay.h#include nrf24l01.h#define uint unsigned int#define uchar unsigned charuint Weight;sbit a = P20;sbit b = P21;sbit c = P22;sbit d = P23;void main()LCD_I

8、nit(); /初始化液晶屏LCD_Clear(); /清屏*(RevTempDate+4)=*0*;NRF24L01Int();while(1)NRFSetRXMode();/设置为接收模式GetDate();/开始接受数;/ Weight=RevTempDate0*1000+RevTempDate1*100+RevTempDate2*10+RevTempDate3;LCD_Write_Char(7,0,RevTempDate0+0x30);LCD_Write_Char(8,0,RevTempDate1+0x30);LCD_Write_Char(9,0,RevTempDate2+0x30);

9、LCD_Write_Char(10,0,RevTempDate3+0x30);a = RevTempDate0;/根据接受数据来设置高低电平(目测仅限传输1.0 两种数值)b = RevTempDate1;c = RevTempDate2;d = RevTempDate3;/#include#include nrf24l01.h#define uchar unsigned char#define uint unsigned intsbit IRQ =P12;/输入sbit MISO =P13; /输入sbit MOSI =P11;/输出sbit SCLK =P14;/输出sbit CE =P1

10、5;/输出sbit CSN =P10;/输出uchar code TxAddr=0x34,0x43,0x10,0x10,0x01;/发送地址/*状态标志*/uchar bdata sta; /状态标志sbit RX_DR=sta6;sbit TX_DS=sta5;sbit MAX_RT=sta4;/*SPI 时序函数*/uchar NRFSPI(uchar date)uchar i;for(i=0;iif(dateelseMOSI=0; / byte 最高位输出到 MOSIdateSCLK=1;if(MISO) / 拉高 SCK,nRF24L01 从 MOSI 读入 1 位数据,同时从 MIS

11、O输出 1 位数据date|=0x01; / 读 MISO 到 byte 最低位SCLK=0; / SCK 置低return(date); / 返回读出的一字节/*NRF24L01 初始化函数*/void NRF24L01Int()DDelay(2);/让系统什么都不干CE=0; /待机模式 1CSN=1;SCLK=0;IRQ=1;/*SPI 读寄存器一字节函数*/uchar NRFReadReg(uchar RegAddr)uchar BackDate;CSN=0;/启动时序NRFSPI(RegAddr);/写寄存器地址BackDate=NRFSPI(0x00);/写入读寄存器指令CSN=1

12、;return(BackDate); /返回状态/*SPI 写寄存器一字节函数*/uchar NRFWriteReg(uchar RegAddr,uchar date)uchar BackDate;CSN=0;/启动时序BackDate=NRFSPI(RegAddr);/写入地址NRFSPI(date);/写入值CSN=1;return(BackDate);/*SPI 读取 RXFIFO 寄存器的值*/uchar NRFReadRxDate(uchar RegAddr,uchar *RxDate,uchar DateLen) /寄存器地址/读取数据存放变量/读取数据长度/用于接收uchar BackDate,i;CSN=0;/启动时序BackDate=NRFSPI(RegAddr);/写入要读取的寄存器地址for(i=0;iRxDatei=NRFSPI(0);CSN=1;return(BackDate);/*SPI 写入 TXFIFO 寄存器的值*/uchar NRFWriteTxDate(uchar RegAddr,uchar *TxDate,uchar Dat

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号