NRF24L01遥控器程序

NRF24L01遥控器程序
NRF24L01遥控器程序

发射端

#include

#include"API.H"

uchar TX_ADDRESS[TX_ADR_WIDTH]={0xFC,0xFF,0xFB,0xFA,0xFF}; //发送地址uchar RX_ADDRESS[RX_ADR_WIDTH]={0xFC,0xFF,0xFB,0xFA,0xFF}; //接收地址//TIME=====================================================

bit time_10ms_s=0;

uchar time_10ms_c2=0;

uchar time_10ms_c99=0;

bit time_30ms_s=0;

bit time_1s_s=0;

//KEY====================================================== uchar s1_s=0;

uchar s2_s=0;

uchar s3_s=0;

uchar order=0;

uchar rate = 0x0F;

//THE KEY OF THE REALLY====================================

sbit K EY1 = P1^0; //按键“KEY1”

sbit K EY2 = P1^1; //按键“KEY2”

sbit KEY3 = P1^2; //按键“KEY3”uchar rece_buf[32]; //接收寄存器

void CLOCK();

void SCAN();

void SCAN_JUDGE();

void launch();

void Delay10ms();

void T0_time()interrupt 1

{

TH0=(65536-9174)/256;

TL0=(65536-9174)%256;

CLOCK();

}

void main()

{

//TO-------------------------------------------------------

TMOD=0x01;

TH0=(65536-9174)/256;

TL0=(65536-9174)%256; //T=10ms

//INITIAL--------------------------------------------------

NRF24L01_RT_Init(TX_PLOAD_WIDTH,TX_ADDRESS,TX_ADR_WIDTH,RX_ADDRESS,RX_ADR_ WIDTH,rate);

P1=0xFF ;

ET0=1;

TR0=1;

EA=1;

for(;;)

{

SCAN();

SCAN_JUDGE();

launch();

}

}

//TIME=====================================================

void CLOCK()

{

time_10ms_s=1;

time_10ms_c2++;

time_10ms_c99++;

if(time_10ms_c2>=1)

{

time_10ms_c2=0;

time_30ms_s=1;

}

if(time_10ms_c99>=99)

{

time_10ms_c99=0;

time_1s_s=1;

}

}

//SCAN=====================================================

void SCAN()

{

if(time_10ms_s==1)

{

time_10ms_s=0;

//key1-----------------------------------------------------

if(KEY1==0)

{

if(s1_s<3)

{

s1_s++;

}

}

else if(KEY1==1)

{

if(s1_s>0)

{

s1_s--;

}

}

//key2----------------------------------------------------- if(KEY2==0)

{

if(s2_s<3)

{

s2_s++;

}

}

else if(KEY2==1)

{

if(s2_s>0)

{

s2_s--;

}

}

//key3----------------------------------------------------- if(KEY3==0)

{

if(s3_s<3)

{

s3_s++;

}

}

else if(KEY3==1)

{

if(s3_s>0)

{

s3_s--;

}

}

}

}

void SCAN_JUDGE()

{

if(s1_s>=3)

{

if(s2_s>=3)

{

order='L';

}

else if(s3_s>=3)

{

order='R';

}

else if((s2_s<=0)&&(s3_s<=0))

{

order='M';

}

}

else if(s1_s<=0)

{

order='S';

}

}

//launch==================================================

void launch()

{

rece_buf[1]=order;

rece_buf[0]=1;

SEND_BUF(rece_buf);

}

接收端

#include "API.h"

uchar TX_ADDRESS[TX_ADR_WIDTH]={0xFC,0xFF,0xFB,0xFA,0xFF}; //发送地址uchar RX_ADDRESS[RX_ADR_WIDTH]={0xFC,0xFF,0xFB,0xFA,0xFF}; //接收地址uchar rate = 0x0F;

sbit m otor1 = P1^0;

sbit m otor2 = P1^1;

uchar rece_buf[32]; //接收寄存器unsigned int i=0;

void main()

{

P1=0x00;

while(NRF24L01_Check());

NRF24L01_RT_Init(TX_PLOAD_WIDTH,TX_ADDRESS,TX_ADR_WIDTH,RX_ADDRESS,RX_ADR_ WIDTH,rate);

while(1)

{

if(NRF_IRQ==0)

{

if(NRF24L01_RxPacket(rece_buf)==0)

{

if( rece_buf[1]=='M')

for(i=0;i<10;i++)

{

motor1=1;

motor2=1;

}

if( rece_buf[1]=='L')

for(i=0;i<10;i++)

{

motor1=1;

motor2=0;

}

if( rece_buf[1]=='R')

for(i=0;i<10;i++)

{

motor1=0;

motor2=1;

}

if( rece_buf[1]=='S')

for(i=0;i<10;i++)

{

motor1=0;

motor2=0;

}

}

}

}

}

NRF24L01发送程序

#include #include typedef unsigned int uint; typedef unsigned char uchar; #define TX_ADDR_WITDH 5//发送地址宽度设置为5个字节 #define RX_ADDR_WITDH 5//接收地址宽度设置为5个字节 #define TX_DATA_WITDH 8// #define RX_DATA_WITDH 8 #define R_REGISTER 0x00 // 读寄存器 #define W_REGISTER 0x20 // 写寄存器 #define R_RX_PLOAD 0x61 // 读RX FIFO有效数据,1-32字节,当读数据完成后,数据被清除,应用于接收模式 #define W_TX_PLOAD 0xA0 // 写TX FIFO有效数据,1-32字节,写操作从字节0开始,应用于发射模式 #define FLUSH_TX 0xE1 // 清除TX FIFO寄存器,应用于发射模式 #define FLUSH_RX 0xE2 // 清除RX FIFO寄存器,应用于接收模式 #define REUSE_TX_PL 0xE3 // 重新使用上一包有效数据,当CE为高过程中,数据包被不断的重新发射 #define NOP 0xFF // 空操作,可以用来读状态寄存器 #define CONFIG 0x00 // 配置寄存器 #define EN_AA 0x01 // “自动应答”功能寄存 #define EN_RX_ADDR 0x02 // 接收通道使能寄存器 #define SETUP_AW 0x03 // 地址宽度设置寄存器 #define SETUP_RETR 0x04 // 自动重发设置寄存器 #define RF_CH 0x05 // 射频通道频率设置寄存器 #define RF_SETUP 0x06 // 射频设置寄存器 #define STATUS 0x07 // 状态寄存器 #define OBSERVE_TX 0x08 // 发送检测寄存器 #define CD 0x09 // 载波检测寄存器 #define RX_ADDR_P0 0x0A // 数据通道0接收地址寄存器 #define RX_ADDR_P1 0x0B // 数据通道1接收地址寄存器 #define RX_ADDR_P2 0x0C // 数据通道2接收地址寄存器 #define RX_ADDR_P3 0x0D // 数据通道3接收地址寄存器 #define RX_ADDR_P4 0x0E // 数据通道4接收地址寄存器 #define RX_ADDR_P5 0x0F // 数据通道5接收地址寄存器 #define TX_ADDR 0x10 // 发送地址寄存器 #define RX_PW_P0 0x11 // 数据通道0有效数据宽度设置寄存器 #define RX_PW_P1 0x12 // 数据通道1有效数据宽度设置寄存器 #define RX_PW_P2 0x13 // 数据通道2有效数据宽度设置寄存器 #define RX_PW_P3 0x14 // 数据通道3有效数据宽度设置寄存器 #define RX_PW_P4 0x15 // 数据通道4有效数据宽度设置寄存器 #define RX_PW_P5 0x16 // 数据通道5有效数据宽度设置寄存器

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

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(); //清屏

NRF24L01无线模块收发程序例程

//下面是接收的NRF24L01的程序。 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #include #include "nrf24l01.h" #include #define uchar unsigned char #define uint unsigned int sbit IRQ =P1^2;//输入 sbit MISO =P1^3; //输入 sbit MOSI =P1^1;//输出 sbit SCLK =P1^4;//输出 sbit CE =P1^5;//输出 sbit CSN =P1^0;//输出 uchar RevTempDate[5];//最后一位用来存放结束标志 uchar code TxAddr[]={0x34,0x43,0x10,0x10,0x01};//发送地址 /*****************状态标志*****************************************/ uchar bdata sta; //状态标志 sbit RX_DR=sta^6; sbit TX_DS=sta^5; sbit MAX_RT=sta^4; /*****************SPI时序函数******************************************/ uchar NRFSPI(uchar date) { uchar i; for(i=0;i<8;i++) // 循环8次 { if(date&0x80) MOSI=1; else MOSI=0; // byte最高位输出到MOSI date<<=1; // 低一位移位到最高位 SCLK=1; if(MISO) // 拉高SCK,nRF24L01从MOSI读入1位数据,同时从MISO输出1位数据date|=0x01; // 读MISO到byte最低位 SCLK=0; // SCK置低 } return(date); // 返回读出的一字节 } /**********************NRF24L01初始化函数*******************************/ void NRF24L01Int() {

遥控器使用说明书

遥控器使用说明书 一、面板说明 1、“”键:机器通电并处于开启状态,按此键,机器进入关闭状态;机器通电并处于关闭状态,按此键,机器进入开启状态。 2、“Home”键:表示选择进入系统主页面; 3、“Menu”键:在SW播放器界面,按此键弹出操作菜单;机器处于安卓系统界面, 4、“”键:开启或关闭播放机声音。 5、“”键:按3秒钟,进入鼠标模式,可以通过遥控器方向键来控制鼠标的移动,再次按3秒钟退出鼠标模式。 6、“”键:方向键,可以向上移动光标;在鼠标模式可以向上移动鼠标 7、“”键:方向键,可以向左移动光标;在鼠标模式可以向左移动鼠标 8、“”键:方向键,可以向右移动光标;在鼠标模式可以向右移动鼠标 9、“”键:方向键,可以向下移动光标;在鼠标模式可以向下移动鼠标 10、“”键:此按键无功能 11、“Vol+”键:调大播放机音量 12、“OK”键:确定按钮

13、“Vol-”键:调小音量 14、“Tab”键:切换光标位置 15、“”键:此按键无功能 16、“”键:在SW播放器界面,按此键弹出操作菜单;安卓系统界面,返回上一级界面。 17、“1”键:输入数字1。 18、“2”键:输入数字2 19、“3”键:输入数字3 20、“4”键:输入数字4 21、“5”键:输入数字5 22、“6”键:输入数字6 23、“7”键:输入数字7 24、“8”键:输入数字8 25、“9”键:输入数字9 26、“0”键:输入数字0

27、“.”键:输入符号“.” 28、“Del”键:删除文件或字符 29、“Vod”键:此按键无功能 30、“Live”键:此按键无功能 31、“Pause”键:此按键无功能 32、“Play”键:此按键无功能 方向键包含:“”键、“”键、“”键和“”键。 数字键包含:“1”“2”“3”“4”“5”“6”“7”“8”“9”“0”“.” 二、常用操作 1,如何退出SW播放器 按“Menu”键,弹出选择菜单,按向下方向键“”到“退出”,按“OK”键退出SW播放器。 2,如何设置网络连接 设置有线网络连接 将RJ45网线连接播放机的有线网络插孔和网络交换机网络接口,播放机会自动识别有线网络并获取相应的IP地址。如过需要对播放机设置静态IP,具体操作如下: 退出SW播放器之后,播放机进入安卓系统主桌面,长按“”键进入鼠标模式,按方向键将鼠标移动到显示器左下角的白色小方块图标,按“OK”键进入应用界面,长按按“”键退出鼠标模式,按方向键,将光标停留在“设置”图标上,按“OK”键,按方向键将光标移动到“更多”图标,按“ok”键,按方向键将光标移动到“以太网”,按“OK”键,通过遥控器的方向键将光标移动到“高级设置”,按“OK”键进入高级配置,长按“”键进入鼠标模式,按方向键将鼠标移动到“动态分配”图标,按“OK”键取消自动分配,将光标移动到“IP地址”输入栏,通过数字键输入相应的IP地址;将光标

遥控器显示屏使用手册

显示屏使用手册 第一章概述 1、显示屏的基本功能 (1)、编辑、显示功能 A、显示屏可以输入并显示汉字、英文、数字、符号。 B、断电保护功能 显示屏设置有断电保护功能,在停电时可保存资料。 C、遥控联网功能 可用红外遥控来控制显示屏。 2、条屏的性能参数 (1)、功能环境 A、电网电压适应范围:AC180V-240V(50HZ) B、环境温度:-25-50℃ C、环境相对湿度:35%-90% (2)、主要技术指标 A、遥控器控制距离≤10M B、断电时内容可保存一年。 3:红外遥控 利用红外遥控器,近距离对着屏修改,遥控距离一般15米左右 3.1:实物图片 参数符号测试条件Min Type Max 单位 2.7 5.5 V 工作电压V CC 工作电流Icc 0.6 0.8 - mA 静态电流Ice 无信号输入时0.1 0.5 mA 接收距离L ※15 18 M 接收角度θ1/2 +/-35 Deg 37.9 KHZ 载波频率f

BMP 宽度f BW -3Db Bandwidth - 8 - kHz 低电平输出V OL Vin=0V Vcc=5V 0.4 V 高电平输出V OH Vcc=5V Vcc-0.3 Vcc V 输出脉冲宽度T PWL Vin=50mVp-p 500 600 700 μS T PWH Vin=50mVp-p 540 640 740 μS 第二章安装 1、安全注意事项 安装时,请务必注意: A、显示屏切勿安装在阳光强烈的地方; B、显示屏不得与其他电器(如电视机、电动机等)共用插座; C、显示屏的安装环境要求通风良好,其环境为: 温度:-25-50℃ 湿度:35%-90% D、请您在安装电源插座时务必安全接地; E、当您采用遥控器控制时,屏体前方不能有障碍物。 第二章遥控操作 1、键盘介绍 我们公司的显示屏采用按键式红外遥控器输入,共有52个按键,在编辑状态量,大部分键有三重功能,按“SHIFT”和“小写/大写”键切换, 退出中文/英文小写/大写插入/覆盖运行 A 编辑1 定时颜色停留 B C D E F G H I J K L M N O P Q R S T U V W X Y Z ↑ ←ENTER → ↓ 0 1 2 3 4 5 6 7 8 9 SHIFT SHIFT 大写状态键值 退出中文/英文小写/大写插入/覆盖运行 a 编辑1 定时颜色停留 b c d e f

NRF24L01无线模块C语言程序

NRF24L01无线模块C语言程序 24MHz晶振 #include #include #include #include #include #include #define U8 unsigned char #define U16 unsigned int #define TX_ADDR_WITDH 5 //发送地址宽度设置为5个字节 #define RX_ADDR_WITDH 5 //接收地址宽度设置为5个字节 #define TX_DATA_WITDH 1//发送数据宽度1个字节 #define RX_DATA_WITDH 1//接收数据宽度1个字节 #define R_REGISTER 0x00//读取配置寄存器 #define W_REGISTER 0x20//写配置寄存器 #define R_RX_PAYLOAD 0x61//读取RX有效数据 #define W_TX_PAYLOAD 0xa0//写TX有效数据 #define FLUSH_TX 0xe1//清除TXFIFO寄存器 #define FLUSH_RX 0xe2//清除RXFIFO寄存器 #define REUSE_TX_PL 0xe3//重新使用上一包有效数据 #define NOP 0xff//空操作 #define CONFIG 0x00//配置寄存器 #define EN_AA 0x01//使能自动应答 #define EN_RXADDR 0x02//接收通道使能0-5个通道 #define SETUP_AW 0x03//设置数据通道地址宽度3-5 #define SETUP_RETR 0x04//建立自动重发 #define RF_CH 0x05//射频通道设置 #define RF_SETUP 0x06//射频寄存器 #define STATUS 0x07//状态寄存器 #define OBSERVE_TX 0x08//发送检测寄存器 #define CD 0x09//载波 #define RX_ADDR_P0 0x0a//数据通道0接收地址 #define RX_ADDR_P1 0x0b//数据通道1接收地址 #define RX_ADDR_P2 0x0c//数据通道2接收地址 #define RX_ADDR_P3 0x0d//数据通道3接收地址 #define RX_ADDR_P4 0x0e//数据通道4接收地址 #define RX_ADDR_P5 0x0f//数据通道5接收地址

nrf24l01无线模块NRF24L01模块收发c程序

//许多人都在找nrf24l01无线模块的c程序;我以前刚接触无线//时用的就是nrf24l01模块;搜索了许多程序有很多都没法直接用;甚至还怀疑模块是不是被我搞坏了;拿去让别人检测模块又是好的;为避免大家走弯路;我将我的程序发出来供大家参考; 这是nrf24l01无线模块pcb图; 下面有Nrf24l01无线模块的收发c程序;以下程序经本人亲自测试;绝对能用!! 请注意以下几点: 1、24L01模块的电源电压是否为3V-3.6V之间; 2、如果您用的单片机是5V的话,请在IO口与模块接口之间串一个1K电阻; 3、检查模块的GND是否与单片机的GND相连接 4、先用程序进行调试,如果IO口不同,请更改IO口或相关时序; 5、如果是51系列单片机,晶振请选用11.0592M Hz; 模块供电最好用asm1117 5v转3.3v 稳压 测试单片机是stc89c52;at89c52 通用; 收发一体;

一大截不废话了;上程序;此程序是按键控制led;当按下s的时候对应接受的led会闪闪发光;很简单的~如果要实现其他更先进的功能;自己发掘吧~~ 务必将硬件连接正确;否则;它不会工作的~~当然做什么都要严谨~~错一点就差大了~~ 《《收发一体程序》》 #include #include typedef unsigned char uchar; typedef unsigned char uint; //****************************************NRF24L01端口定义

*************************************** sbit M ISO =P1^3; sbit M OSI =P1^4; sbit SCK =P1^2; sbit CE =P1^1; sbit CSN =P3^2; sbit IRQ =P3^3; //************************************按键*************************************************** sbit KEY=P2^0; //***************************************************************************** sbit led=P2^1; //*********************************************NRF24L01*********************** ************** #define TX_ADR_WIDTH 5 // 5 uints TX address width #define RX_ADR_WIDTH 5 // 5 uints RX address width #define TX_PLOAD_WIDTH 20 // 20 uints TX payload #define RX_PLOAD_WIDTH 20 // 20 uints TX payload uint const TX_ADDRESS[TX_ADR_WIDTH]= {0x34,0x43,0x10,0x10,0x01}; //本地地址uint const RX_ADDRESS[RX_ADR_WIDTH]= {0x34,0x43,0x10,0x10,0x01}; //接收地址//***************************************NRF24L01寄存器指令******************************************************* #define READ_REG 0x00 // 读寄存器指令 #define WRITE_REG 0x20 // 写寄存器指令 #define RD_RX_PLOAD 0x61 // 读取接收数据指令 #define WR_TX_PLOAD 0xA0 // 写待发数据指令 #define FLUSH_TX 0xE1 // 冲洗发送FIFO指令 #define FLUSH_RX 0xE2 // 冲洗接收FIFO指令 #define REUSE_TX_PL 0xE3 // 定义重复装载数据指令 #define NOP 0xFF // 保留 //*************************************SPI(nRF24L01)寄存器地址**************************************************** #define CONFIG 0x00 // 配置收发状态,CRC校验模式以及收发状态响应方式#define EN_AA 0x01 // 自动应答功能设置 #define EN_RXADDR 0x02 // 可用信道设置 #define SETUP_AW 0x03 // 收发地址宽度设置 #define SETUP_RETR 0x04 // 自动重发功能设置 #define RF_CH 0x05 // 工作频率设置 #define RF_SETUP 0x06 // 发射速率、功耗功能设置 #define STATUS 0x07 // 状态寄存器 #define OBSERVE_TX 0x08 // 发送监测功能 #define CD 0x09 // 地址检测 #define RX_ADDR_P0 0x0A // 频道0接收数据地址 #define RX_ADDR_P1 0x0B // 频道1接收数据地址

F24-60无线电遥控器操作手册

F24-60系列工业用无线电遥控器 操作手册

F24-60安装及操作说明书 保固 质量保证 禹鼎公司保证本产品出厂时,完全符合其所公布之各项规格,只要适当地安装,都可以正常使用,但是禹鼎公司并不保证本产品的操作是亳无中断或零错误。保证期间本产品自出厂日起享有一年的保固期,保证客户在一年内不会有任何产品上的问题,若在保固期间内,只要证明产品质量有瑕疵,禹鼎公司愿意维修。任何需要修护的产品都必需送往禹鼎公司指定的服务处,该客户必须负担产品运往服务处的单程运费,而禹鼎公司的服务处在保证期间内将会负担回程费用,寄还该产品。 未包含事项 前述的保证范围,并未包含按键、继电器、保险丝、电池等损耗性零件或是装机错误所造成的基板损坏等,且未包含因客户不当使用、维修不足、操作环境规格的忽略、未经许可的变更、错误的使用或客户自行设置接口而造成之故障。 备注 ◎前述之保证事项,并无其它明述或隐含的保固事项。 ◎保固所提供的赔偿是客户唯一的赔偿,禹鼎公司并不负任何直接、间接、特殊、意外或因果的损毁责任。 注意事项 一般注意事项 ◎未经专业训练之人员,不得拆开本机器,否则可能损坏。 ◎使用后天车总电源应关闭,以切断接收机电源,并将发射器之钥匙开关拔除。 ◎天车应有总电源继电器、极限开关,及其它安全性设施。 安装注意事项(一) 接收机安装位置必须远离变频器、马达及其连接电缆越远越好以避免接收机受到噪声之干扰。 安装注意事项(二) 接收机不可安装于电控箱内,正确之安装方式是将接收机固定于电控箱顶部(或外部)之适当位置,然后再将接收机输出电缆穿入电控箱内做适当之接线。 紧急状况之处理 当紧急状况出现时,请依下列步骤处理,并立刻通知经销商。 1.按下STOP紧急停止按键。 2.将发射机之钥匙开关拔除。 3.关闭天车总电源。 4.通知经销商,找出原因。

NRF24L01功能使用文档

NRF24L01使用文档 基于c8051f330单片机

目录 芯片简介 (3) 1 NRF24L01功能框图 (4) 2 NRF24L01状态机 (5) 3 Tx与Rx的配置过程 (7) 3.1 Tx 模式初始化过程 (7) 3.2 Rx模式初始化过程 (8) 4控制程序详解 (9) 4.1 函数介绍 (9) 4.1.1 uchar SPI_RW(uchar byte) (9) 4.1.2 uchar SPI_RW_Reg (uchar reg, uchar value) (10) 4.1.3 uchar SPI_Read (uchar reg); (10) 4.1.4 uchar SPI_Read_Buf (uchar reg, uchar *pBuf, uchar bytes); (11) 4.1.5 uchar SPI_Write_Buf (uchar reg, uchar *pBuf, uchar bytes); (11) 4.1.6 void RX_Mode(void) (12) 4.1.7 void TX_Mode(void) (13) 4.2 NRF24L01相关命令的宏定义 (13) 4.3 NRF24L01相关寄存器地址的宏定义 (14) 5 实际通信过程示波器图 (16) 1)发射节点CE与IRQ信号 (17) 2)SCK与IRQ信号(发送成功) (18) 3)SCK与IRQ信号(发送不成功) (19)

芯片简介 NRF24L01是NORDIC公司最近生产的一款无线通信通信芯片,采用FSK调制,内部集成NORDIC自己的Enhanced Short Burst 协议。可以实现点对点或是1对6的无线通信。无线通信速度可以达到2M(bps)。NORDIC公司提供通信模块的GERBER文件,可以直接加工生产。嵌入式工程师或是单片机爱好者只需要为单片机系统预留5个GPIO,1个中断输入引脚,就可以很容易实现无线通信的功能,非常适合用来为MCU系统构建无线通信功能。

遥控器操作手册

第三章 遥控器操作手册 §3.2 遥控器操作 §3.2.1 遥控器的外形(HDR-2型) 蓝牙遥控器的外形 菜单键

§7.1 HD8200E操作流程 1、开机:打开接收机,打开遥控器。 2、连接:遥控器与主机进行自动连接,若连接不成功,检查遥控器控制的接收 机号,或自动搜索,完成后按“Shift”键重新连接。 3、设置工作方式:若工作方式不能更改,请在采集设置中结束当前文件。 4、查看卫星状态及是否进入3-D;若未进入3-D请等待收星,需要约1-2分钟, 直到进入3-D状态。 5、输入文件名,时段及其它设置参数,新建或修改,成功后进行以下操作。 6、若静态,采集完成后结束文件或关机。 7、动态按“·5MNO”键进入动态设置界面,进行碎部或连续测量。 8、完成后,结束文件或直接关机。 9、若十五分钟内未能进入3-D状态,则接收机自动关机以防误开接收机,并节 约电能。 10、主机上指示灯的状态代表的含义如下表。 操作遥控器前的准备: 1.在背面打开电池盖,按标识正确的方向放入两节1.5V七号电池。 2.按ON/ESC键开机,显示屏会显示开机画面并进入主菜单。 3.选择相应的功能,按ENTER键进入该项设置,也可按快捷键直接进入。 4.设置完毕按ON/ESC键可返回上一级菜单,或退出该项命令的执行。 5.在需要输入字符提示下,按键默认为数字和字母键,由按键次数确定。

信号指示 遥控器电量 接收机电量

§3.3 测量操作步骤 连接成功后,遥控器将控制接收机进行全部的工作,由于接收机工作状态 分为静态和后差分(动态)两种,遥控器的操作也不完全相同,以下分别 进行说明。 §3.3.1 静态操作步骤

NRF24L01无线发射简易教程

NRF24L01 简易教程

先来看接口电路,使用的IO 口不是唯一的哦,可随意定义接口,当然是在使用IO 口模拟SPI 且IRQ 中断引脚不使用的使用查询方法判断接收状态的情况下了。作为初探我们就是用简单的IO 模拟SPI 的方法了,中断使用查询的方式。那么该教程讲解的接口与单片机的连接如下: 首先您需要了解NRF24L01,请参阅“NRF24L01 芯片中文资料”或者“NRF24L01 芯片英文资料”。 我们的教程是以一个简单的小项目为大家展示NRF24L01 的使用方法与乐趣。我们所写的教程均是以这种方式的呢,让您在学习的时候明白它能做什么,使您学起来不至于枯燥无味。 作为简易的教程,我们只需要知道它是怎么使用的就够了,我们本教程的目的是用NRF24L01 发送数据和接收数据,且接收方会对比发送的数据与接收的数据,若完全相同则控制LED 闪烁一次,并且把接收到的数据通过串口发送到PC 端,通过串口工具查看接收到的数据。 具体的要求如下: 1、具备发送和接收的能力。 2、发送32 个字节的数据,接收方接收到正确数据之后给予提示,通过LED 闪烁灯形 式。 3、把接收到的数据传送到PC 进行查看。 4、发送端每隔大约1.5 秒发送一次数据,永久循环。以上是程序的要求,若您想自行 设计出硬件接口,您也是可以添加一条呢:使用DIY 方 式设计NRF24L01 的接口板,且包含含单片机平台,使用PCB 方式或者万用板方式均可。如果您想让自己学的很扎实,那么推荐您自行做出接口板子呢。当然若您的能力不足,那么我们不推荐自行做板呢,因为这样会增加您学习的难度,反而起到了反效果呢。 我们使用的方式是画PCB 的方式呢,若您自己做了接口板子,那么您可以对比下一呢,O(∩_∩)O! 我们知道NRF24L01 的供电电压是1.9V~3.6V 不能超过这个范围,低了不工作,高了可能烧毁NRF24L01 芯片。我们常用的STC89C52 的单片机的供电电压是5V,我们不能直接给24L01 这个模块供电,我们需要使用AMS1117-3.3V 稳压芯片把5V 转成3.3V 的电压为24L01 模块供电。 为此我们的设计原理图如下:包含单片机最小系统、供电系统、下载程序接口、5V 转3.3V 电路、NRF24L01 模块接口。并且全部引出单片机的IO 口,另外还加了5 个电源输出接口,为扩展使用。还包括了电源指示LED 以及一个IO 口独立控制的LED,这个独立控制的LED用于NRF24L01 接收成功闪烁指示。为了保证系统的稳定性,在设计中添加了两个滤波电容。

NRF24L01参考程序(包含多个实例)

(相关人员如觉得本人水平低下,还请见谅) Nrf24L01的使用程序和使用方法和简单操作: 功能: 无线对发程序。两个模块a,b,实现按下一个按键,会在对方的数码管上显示3或4,在本机上显示1,2。 当一个模块,比如a模块。当两个按键按下其中一个,则会在另一个模块b上显示数字3,4(具体根据按下哪个按键)。以上功能描述,B模块按键按下,如同a模块一样的功能,不做系统性描述了。 下面给出程序中几个地方的解释: #define READ_REG 0x00 // 读寄存器指令 #define WRITE_REG 0x20 // 写寄存器指令 #define RD_RX_PLOAD 0x61 // 读取接收数据指令 #define WR_TX_PLOAD 0xA0 // 写待发数据指令 #define FLUSH_TX 0xE1 // 冲洗发送FIFO指令 #define FLUSH_RX 0xE2 // 冲洗接收FIFO指令 #define REUSE_TX_PL 0xE3 // 定义重复装载数据指令 #define NOP 0xFF // 保留 类似这种的描述,可以等同于READ_REG =0x00;这个是经过实际程序测试出来的,比如 以下程序: #include #define k 0xfe void main() { P1=k; } 则会出现此类结果:

MOSI = (uchar & 0x80); // output 'uchar', MSB to MOSI uchar = (uchar << 1); // shift next bit into MSB.. SCK = 1; // Set SCK high.. uchar |= MISO; // capture current MISO bit SCK = 0; 此处为spi的核心,是spi协议的编程,其中uchar |= MISO; 表示uchar |= MISO | uchar; MOSI = (uchar & 0x80);其中0x80是1000 0000,与上uchar,这种&,是按位与,故可以从uchar提取出一个电平给mosi。 MOSI = (uchar & 0x80); // output 'uchar', MSB to MOSI uchar = (uchar << 1); 这两句组合起来用,就实现了把uchar编程8位2进制数后的每一位都可以发送给mosi;Uchar的只待对象,就是上面的诸如#define FLUSH_TX 0xE1 这样的数,或者是相关的发送数据。 *pBuf这个并不是一个主要的问题,实际这个是涉及指针问题的,带*的跟地址有关系,但是我们其实不需要很关心编译的时候数据被具体存入哪个地址,即使是很重要的数据。 void init_NRF24L01(void) { inerDelay_us(100); CE=0; // chip enable CSN=1; // Spi disable SCK=0; // SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH); // 写本地地址 SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, RX_ADDRESS, RX_ADR_WIDTH); // 写接收端地址 SPI_RW_Reg(WRITE_REG + EN_AA, 0x01); // 频道0自动ACK应答允许 SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x01); // 允许接收地址只有频道0,如果需要多频道可以参考Page21 SPI_RW_Reg(WRITE_REG + RF_CH, 0); // 设置信道工作为2.4GHZ,收发必须一致 SPI_RW_Reg(WRITE_REG + RX_PW_P0, RX_PLOAD_WIDTH); //设置接收数据长度,本次设置为32字节 SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x07); //设置发射速率为1MHZ,发射功率为最大值0dB } 在整个初始化中我们看到: CE=0; // chip enable CSN=1; // Spi disable 这是设置整个的状态。如过状态设置成待机,则引脚可能变为高阻。(以上并非全部引脚)

NRF24L01发送程序(可用)

//***************************************************发送程序**********************************************************// #include #include typedef unsigned char uchar; //****************************************NRF24L01端口定义*************************************** sbit M ISO =P1^5; sbit M OSI =P1^1; sbit SCK =P1^6; sbit CE =P1^7; sbit CSN =P1^2; sbit IRQ =P1^0; //***********************************发送缓冲区********************************************* uchar TxBuf[32]= { 0x01,0x22,0x32,0x04,0x08,0x01,0x07,0x08, 0x09,0x10,0x11,0x12,0x13,0x14,0x15,0x16, 0x17,0x18,0x19,0x20,0x21,0x22,0x23,0x24, 0x25,0x26,0x27,0x28,0x29,0x30,0x31,0x32, }; //

//*********************************************NRF24L01************************ ************* #define TX_ADR_WIDTH 5 // 5 uints TX address width #define RX_ADR_WIDTH 5 // 5 uints RX address width #define TX_PLOAD_WIDTH 32 // 20 uints TX payload #define RX_PLOAD_WIDTH 32 // 20 uints TX payload uchar const TX_ADDRESS[TX_ADR_WIDTH]= {0x34,0x43,0x10,0x10,0x01}; //本地地址 uchar const RX_ADDRESS[RX_ADR_WIDTH]= {0x34,0x43,0x10,0x10,0x01}; //接收地址 //***************************************NRF24L01寄存器指令******************************************************* #define READ_REG 0x00 // 读寄存器指令 #define WRITE_REG 0x20 // 写寄存器指令 #define RD_RX_PLOAD 0x61 // 读取接收数据指令 #define WR_TX_PLOAD 0xA0 // 写待发数据指令 #define FLUSH_TX 0xE1 // 冲洗发送FIFO指令 #define FLUSH_RX 0xE2 // 冲洗接收FIFO指令 #define REUSE_TX_PL 0xE3 // 定义重复装载数据指令 #define NOP 0xFF // 保留 //*************************************SPI(nRF24L01)寄存器地址**************************************************** #define CONFIG 0x00 // 配置收发状态,CRC校验模式以及收发状态响应方式 #define EN_AA 0x01 // 自动应答功能设置 #define EN_RXADDR 0x02 // 可用信道设置

nRF24L01温度发送与接收程序

/******************************************************* ** 温度无线发送程序 ** 时间:2012.2.3 ** ——by Keliwen *******************************************************/ #include #include #include #include typedef unsigned char uchar; typedef unsigned int uint; /***************************************************/ #define TX_ADR_WIDTH 5 // 5字节宽度的发送/接收地址 #define TX_PLOAD_WIDTH 4 // 数据通道有效数据宽度 uchar code TX_ADDRESS[TX_ADR_WIDTH] = {0x34,0x43,0x10,0x10,0x01}; // 定义一个静态发送地址 uchar RX_BUF[TX_PLOAD_WIDTH]; uchar TX_BUF[TX_PLOAD_WIDTH]; sbit CSN = P1^0; // Chip Enable pin signal (output) sbit MOSI= P1^1; // Slave Select pin, (output to CSN, nRF24L01) sbit IRQ = P1^2; // Interrupt signal, from nRF24L01 (input) sbit MISO= P1^3; // Master In, Slave Out pin (input) sbit SCLK= P1^4; // Serial Clock pin, (output) sbit CE = P1^5; // Master Out, Slave In pin (output) // SPI(nRF24L01) commands #define READ_REG 0x00 // Define read command to register #define WRITE_REG 0x20 // Define write command to register #define RD_RX_PLOAD 0x61 // Define RX payload register address #define WR_TX_PLOAD 0xA0 // Define TX payload register address #define FLUSH_TX 0xE1 // Define flush TX register command #define FLUSH_RX 0xE2 // Define flush RX register command #define REUSE_TX_PL 0xE3 // Define reuse TX payload register command #define NOP 0xFF // Define No Operation, might be used to read status register // SPI(nRF24L01) registers(addresses) #define CONFIG 0x00 // 'Config' register address #define EN_AA 0x01 // 'Enable Auto Acknowledgment' register address #define EN_RXADDR 0x02 // 'Enabled RX addresses' register address

遥控器说明书

FYF50C说明书 FYF50C是在FYF50B基础上开发出来的双向遥控器,遥控按键与原遥控器完全一致,在遥控器的上部增加了一个液晶显示窗,可以显示遥控器的按键状态和采煤机的数据。电路的设计中采用的双CPU 设计,一只CPU管理键盘和无线收发,另一只CPU管理显示,可以实现灵活的节电管理,当关闭显示进行遥控时,整机的功耗与FYF50B 的功耗基本相同。 当用该遥控器遥控采煤机动作时,所有的遥控按键的功能与操作方法与FYF50B完全相同;当对前端液晶屏进行操作时,用到的是组合按键中单独按下不起任何作用【的】按键,遥控器中有7只这样的 按键,分别为: 和“AUTO”。 显示屏每屏可以显示4行数据,有3屏数据自动循环显示,共有12个可以显示的数据,用户可以根据自己的需要从100多项参数中选定这12个数据的显示内容。 打开遥控器的电源【,】首先显示初始界面,3秒后进入主界面,这时指标灯会每秒闪亮一次,表示发送一次遥控数据或请求数据,显示如下: 这时表示正在搜索上位机,当没有与上位机进行成功连接前,按下遥控器的遥控按键不会有反应,当与上位机成功建立连接后,显示如下:

这时再按下遥控器的遥控按键,可以实现遥控功能。 显示屏每屏可以显示4行数据,每隔4-5秒将切换到下一屏显示,共有3屏依次循环显示,这样通过分屏方式可以显示共12个数据。 当关注某一屏参数时,可以通过按动 键来翻页,这时会打 破循环显示的延时时间,停在选择的显示屏上可达到60秒,然后再次进行循环翻屏显示,以方便操作者关注某一条参数。 当要【在】主界面状态下按一次“AUTO”键后显示帮助界面,这时再将【删将】按下“AUTO”键后进入密码输入界面,这时输入0111可进入参数选择界面,输入:8900可以进入显示设计界面。 在帮助界面上有对【删对】操作按键的功能显示【说明】,这些键的功能如下:

相关文档
最新文档