NRF24L01无线模块收发程序(实测成功 多图)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
NRF24L01无线模块收发程序(实测成功多图)
本模块是NRF24L01无线传输模块,用于无线传输数据,距离不远,一般只是能够满足小距离的传输,目测是4-5m,价格一般是4元左右,可以方便的买到。
51最小系统学习板就可以,当时是用了两块学习板,一块用于发送,一块用于接收。
小车也是比较容易购到的,四个端口控制两个电机,两个控制一个电机,当两个端口高低电平不同时电机就会转动,即为赋值1和0是电机转动,赋值可以用单片机作用,当然这是小车启动部分,前进后退左转右转就是你赋值0和1的顺序问题了。
整体思路是用发射端的按键控制小车,即为按键按下就前进,再按其他按键实现其他功能,本次程序是在用NRF24L01发射数据在接收端用1602显示的基础上改变。
下面是程序源码(有好几个文件,分别创建)
////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////
#include
#include
#include'1602.h'
#include'delay.h'
#include 'nrf24l01.h'
#define uint unsigned int
#define uchar unsigned char
uint Weight_Shiwu=1234;
unsigned char KeyScan(void);//键盘扫描
// unsigned char KeyScan(void);//键盘扫描
//#define KeyPort P0
sbit KEY1 = P0^0;
sbit KEY2 = P0^1;
sbit KEY3 = P0^2;
sbit KEY4 = P0^3;
sbit KEY5 = P0^4;
void main()
{
// char TxDate[4];
// LCD_Init(); //初始化液晶屏
// LCD_Clear(); //清屏
// NRF24L01Int(); //初始化LCD1602
// LCD_Write_String(4,0,'welcome');
while(1)
{
KeyScan();
}
}
unsigned char KeyScan(void)
{
/********************************************************/ char TxDate[4];
{
if(!KEY1) //如果检测到低电平,说明按键按下
{
DelayMs(10); //延时去抖,一般10-20ms
if(!KEY1) //再次确认按键是否按下,没有按下则退出
{
while(!KEY1);//如果确认按下按键等待按键释放,没有则退出
{
TxDate[0] = 1;//向左转
TxDate[1] = 0;
TxDate[2] = 1;
TxDate[3] = 1;
NRFSetTxMode(TxDate);//发送数据·
while(CheckACK()); //检测是否发送完毕
}
}
}
/********************************************************/ else if(!KEY2) //如果检测到低电平,说明按键按下
{
DelayMs(10); //延时去抖,一般10-20ms
if(!KEY2) //再次确认按键是否按下,没有按下则退出
{
while(!KEY2);//如果确认按下按键等待按键释放,没有则退出
{
TxDate[0] = 1;//向右转
TxDate[1] = 1;
TxDate[2] = 1;
TxDate[3] = 0;
NRFSetTxMode(TxDate);//发送数据
while(CheckACK()); //检测是否发送完毕
}
}
}
/********************************************************/ else if(!KEY3) //如果检测到低电平,说明按键按下
{
DelayMs(10); //延时去抖,一般10-20ms
if(!KEY3) //再次确认按键是否按下,没有按下则退出
{
while(!KEY3);//如果确认按下按键等待按键释放,没有则退出
{
TxDate[0] = 1;//前进
TxDate[1] = 0;
TxDate[2] = 1;
TxDate[3] = 0;
NRFSetTxMode(TxDate);//发送数据
while(CheckACK()); //检测是否发送完毕
}
}
}
/********************************************************/ else if(!KEY4) //如果检测到低电平,说明按键按下
{