2.4G无线发射模块nRF2402应用_第1页
2.4G无线发射模块nRF2402应用_第2页
2.4G无线发射模块nRF2402应用_第3页
2.4G无线发射模块nRF2402应用_第4页
2.4G无线发射模块nRF2402应用_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2.4g 无线发射模块nrf2402 应用51 系列单片机2010-02-20 16:38:52 阅读 57 评论 0 字号:大中小花了我一个下午的时间,终于调试好了nrf2402 无线发射模块, 有一点值得注意的, nrf2402是单独发射模块,单通道的,具体应用和nrf2401 差不多,就是值得注意的是配置控制字(configuration word) 不一样。nrf2402 模块引脚图如下:值得注意到是nrf2402 配置控制字和nrf2401 不一样,具体看datasheet,我摘录了一部分如下有 4 个字节的控制字,其中d0-d19 是需要配置的,d31-d20 空,可以配置为0.

2、源程序:/*/ /*nrf2402 学习板 v1.0 */ /*创建人:郑文 (climberwin) 日期: 2010-02-20 */ /*功能描述: nrf2402 无线数据传输*/ /*芯片:stc89c51rc 晶振11.0592m */ /*版本:v1.0 */ /*/ /测试 ok,功能描述 : /8 个 led 接在 p0 口,低电平有效/按键 1 是 led 加 按键 2led 减按键 3 led 全亮按键 4 led 全灭/串口输出数据/添加串口发送数据给单片机再无线发送#include #include #include #define uchar unsigned ch

3、ar #define uint unsigned int #define ulong unsigned long /端口定义/led 定义 / sbit led1 = p00; sbit led2 = p01; sbit led3 = p02; sbit led4 = p03; sbit led5 = p04; sbit led6 = p05; sbit led7 = p06; sbit led8 = p07; / 按键定义 / sbit k1 = p33; sbit k2 = p34; sbit k3 = p35; sbit k4 = p36; sbit speaker=p37;/蜂鸣器输出

4、引脚/*/ void speakertest(void); /蜂鸣器程序void init_rs232(void); /串口初始化void keytest(void); /按键测试程序/*/ /* 串口通信初始化设置*/ void init_rs232(void) scon=0 x50; pcon=0 x00; th1=0 xfd; /波特率9600 11.0592mhz 时候 tl1=0xfd; tmod=0x20; tr1=1; void speakertest(void)/ 蜂鸣器程序 unsigned char i; for(i=0;i100;i+) speaker=0; delaym

5、s(1); speaker=1; delayms(1); /*/ void keytest(void) /按键测试程序 / 按键 k1 判断程序 / while(k1=0) delayms(100);/ 按键去抖if(k1=1) nrf2402_flag|=0 x02; / 按键标志位nrf2402_flag_bit1=1 speakertest(); nrf2402_data0+; else ; / / 按键 k2 判断程序 / while(k2=0) delayms(100);/ 按键去抖if(k2=1) nrf2402_flag|=0 x02; / 按键标志位nrf2402_flag_b

6、it1=1 speakertest(); nrf2402_data0-; else nrf2402_flag&=0 xfd; /清除按键标志位nrf2402_flag_bit1=0 / / 按键 k3 判断程序 / while(k3=0) delayms(100);/ 按键去抖if(k3=1) nrf2402_flag|=0 x02; / 按键标志位nrf2402_flag_bit1=1 speakertest(); nrf2402_data0=0 x00; else nrf2402_flag&=0 xfd; /清除按键标志位nrf2402_flag_bit1=0 / / 按键

7、 k4 判断程序 / while(k4=0) delayms(100);/ 按键去抖if(k4=1) nrf2402_flag|=0 x02; / 按键标志位nrf2402_flag_bit1=1 speakertest(); nrf2402_data0=0 xff; else nrf2402_flag&=0 xfd; /清除按键标志位nrf2402_flag_bit1=0 if(nrf2402_flag&0 x02)=0 x02)/判断是否有按键按下 p0=nrf2402_data0; nrf2402_transmit_mode(); /设置为发送模式nrf2402_tran

8、smit_data(nrf2402_data); / 发送数据nrf2402_flag&=0 xfd; / 清除按键标志位nrf2402_flag_bit1=0 else ; void main(void) delayms(1000);/ 开机延时 nrf2402_data0 = 0 x55; init_rs232(); /串口初始化ti=1; /串口发射有效 nrf2402_config(); /nrf2402初始化配置delayms(100); speakertest(); /蜂鸣器叫一声nrf2402_transmit_mode(); /设置为发送模式 nrf2402_trans

9、mit_data(nrf2402_data);/ 发送测试数据 sbuf=0 x55; / 串口输出0 x55 测试是否有正确的串口数据 delayms(100); while (1) keytest(); /调用按键子程序,无线发送数据 / 头文件: nrf2402.h /*/ /*中文版本 */ /*功能描述: nrf2402 无线收发模块应用头文件*/ /*调试平台: 51 单片机11.0592m 晶振*/ /*作者: 郑文 (climberwin) */ /*编写日期: 2010 年 02 月 20 日*/ /*版本信息: v1.0 */ /*修改日期: */ /*/ #ifndef

10、_nrf2402_h_ #define _nrf2402_h_ #include #include #define uchar unsigned char #define uint unsigned int sbit nrf2402_pwr_up = p14; sbit nrf2402_ce = p15; sbit nrf2402_cs = p13; / sbit nrf2402_clk = p16; sbit nrf2402_din = p12; / /configuration word datasheet(page17 of 37) /reserved for testing #defi

11、ne addr_w 2*8 /发送 /接收地址宽度 (单位 :bit) #define data1_w 28*8 /通道 1 payload 数据长度设置(bit) /d31 msb #define pll 0 x00 / d19 #define unused_bit18 0 x01 /未定义必须置 1 #define preamble_bit17 0 x01 /logic 0: no generation of preamble |logic 1: preamble generation enabled (default) #define unused_bit16 0 x01 /未定义必须置

12、 1 #define crc_l 0 x01 /crc 模式0:8 位1:16 位#define crc_en 0 x01 /crc 校验0:禁用1:启用#define cm 0 x01 /0:direct mode 1:shockburst mode #define rfdr_sb 0 x00 /传输速率0:250kbps 1:1mbps(requires 16mhz crystal) #define xo_f 0 x03 /晶振频率d11-d9(000:4mhz 001:8mhz 010:12mhz 011:16mhz 100:20mhz) #define rf_pwr 0 x03 /发射

13、模式的输出功率d8-d7(00:-20dbm 01:-10dbm 10:-5dbm 11:0dbm) #define rf_ch 0 x02 /channel 发 射 频 率 设 置channel=2400mhz+rf_ch * 1.0mhz datasheet(page22 of 37) uchar code nrf2402_config_word4 = 0 x00,0 x07,0 xe7,0 x82 ; uchar code channel_addr=0 x34,0 x12,0 x00,0 x00,0 x00;/设置通道1 地址,发射和接收必须匹配uchar nrf2402_data32;

14、 / 定义 nrf2402 数据发送接收临时存储地址uchar nrf2402_flag;/ 定义标志位,bit7-bit2 暂时保留| bit0: 是否有接收数据标志位1:有 0:无/| bit1: 是否有按键数据标志位1:有 0:无void delayms(uint count); / 延时程序uchar nrf2402_read_byte(void); / 读字节void nrf2402_write_byte(uchar send_byte);/ 写字节void nrf2402_config(void); /参数配置void nrf2402_transmit_mode(void); /设

15、置为发射模式void nrf2402_transmit_data(uchar txbuf); /nrf2402 发送数据子程序/*延时子程序start*/ void delayms(unsigned int count) unsigned int i,j; for(i=0;icount;i+) for(j=0;j120;j+); /*延时子程序end*/ /*读数据子程序*/ uchar nrf2402_read_byte(void) uchar i,j,temp; temp=0 x00; for (i=0;i8;i+) nrf2402_clk=1; _nop_(); if (nrf2402_

16、din=1) j=1; else j=0; temp=(temp1)|j; nrf2402_clk=0; return temp; /*写数据子程序*/ void nrf2402_write_byte(uchar send_byte) uchar i; for (i=0;i8;i+) send_byte=send_byte st_by_mode | max 3ms | name: tpd2sby | nrf2402_cs=1; /进入配置模式configuration /4 个字节的配置字/ datasheet(page17 of 37) for (i=0;i4;i+) nrf2402_write_byte(nrf2402_config_wordi); delayms(1); nrf2402_cs=0; /nrf2402_cs 置低使配置有效datasheet(page26 of 37); /*设置发射模式子程序*/ void nrf2402_transmit_mode(void) /设置为 active(tx) 模式 nrf2402_pwr_up=1; nrf2402_ce=1; nrf2402_cs=0; delayms(1); /*发送数据子程序*/ void nrf2402_tran

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论