花了我一個下午的時間,終于調試好了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 |