2.4G无线发射模块nRF2402应用
发布时间:2016-9-21 11:36
发布者:designapp
花了我一个下午的时间,终于调试好了nRF2402无线发射模块,有一点值得注意的,nRF2402是单独发射模块,单通道的,具体应用和nRF2401差不多,就是值得注意的是配置控制字(Configuration Word)不一样。![]() ![]() nRF2402模块引脚图如下: ![]() 值得注意到是nRF2402配置控制字和nRF2401不一样,具体看datasheet,我摘录了一部分如下 ![]() 有4个字节的控制字,其中D0-D19是需要配置的,D31-D20空,可以配置为0. 源程序: /***********************************************************/ /*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 char #define uint unsigned int #define ulong unsigned long //端口定义 ///////LED定义////////// sbit LED1 = P0^0; sbit LED2 = P0^1; sbit LED3 = P0^2; sbit LED4 = P0^3; sbit LED5 = P0^4; sbit LED6 = P0^5; sbit LED7 = P0^6; sbit LED8 = P0^7; ///////按键定义//////////// sbit K1 = P3^3; sbit K2 = P3^4; sbit K3 = P3^5; sbit K4 = P3^6; sbit speaker=P3^7;//蜂鸣器输出引脚 /*****************************************/ void speakertest(void); //蜂鸣器程序 void init_rs232(void); //串口初始化 void keytest(void); //按键测试程序 /*****************************************/ /* 串口通信初始化设置 */ void init_rs232(void) { SCON=0x50; PCON=0x00; TH1=0xFD; //波特率 9600 11.0592MHZ 时候 TL1=0XFD; TMOD=0X20; TR1=1; } void speakertest(void)//蜂鸣器程序 { unsigned char i; for(i=0;i ST_BY_mode | MAX 3ms | name: Tpd2sby | nRF2402_CS=1; //进入配置模式Configuration ////4个字节的配置字////////////// datasheet(page17 of 37) for (i=0;i<4;i++) { nRF2402_Write_Byte(nRF2402_Config_Word[ i]); } 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_Transmit_Data(uchar temp[]) //datasheet(page22 of 37); { uchar i; nRF2402_CE=1; delayms(1); for (i=0;i<(ADDR_W/8);i++)//写入接收地址 { nRF2402_Write_Byte(Channel_Addr[ i]); } for (i=0;i<(DATA1_W/8);i++)//写入需要发送的数据 { nRF2402_Write_Byte(temp[ i]); } nRF2402_CE=0; //nRF2402_CE 置低使发送有效 delayms(1); } #endif |
网友评论