單機遊戲下載單機遊戲下載基地
最新遊戲|熱門遊戲|遊戲大全|遊戲專題
備份還原硬件驅動係統優化搜索查找鍵盤鼠標磁盤工具數據恢複係統其它數據備份係統重裝
當前位置:首頁係統工具硬件驅動 → NRF2401無線模塊驅動程序

NRF2401無線模塊驅動程序

  • NRF2401無線模塊驅動程序截圖0
< >
NRF2401無線模塊驅動程序下載
好玩 好玩 0
坑爹 坑爹 0
  • 應用語言:中文
  • 應用大小:157KB
  • 更新時間:2014-12-25 16:31
  • 發行時間:
  • 應用類型:普通
  • 應用標簽: NRF2401
NRF2401無線模塊的驅動程序源碼,能夠用於STC,51等單片機驅動,具有很高的學習參考利用價值。[更多]
應用介紹

NRF2401無線模塊的驅動程序源碼,能夠用於STC,51等單片機驅動,具有很高的學習參考利用價值。

NRF2401無線模塊調試說明

1.nRF2401是3.3V供電的,電壓過低或過高都會對通信造成影響,要麼不能完全通信要麼斷斷續續地通信,至於怎麼穩壓到3.3V,可以采用穩壓二級管,可以使用LM317,這幾種方法都試用過,都可行。
2.一般的微處理器的I/O口電壓為5V,而2401的I/O口電壓為3.3V,若直接相連,容易燒壞2401,可以采用串連2K電阻的方法,也可以使用3.3V和5V電平轉換芯片如74LVX3245。

3.至於程序部分,一兩句話也說不清楚,請仔細閱讀nRF2401的使用說明書。下麵公布一段2401程序僅供參考,此程序多次修改,久經考驗,應該沒有問題。

2401.h下麵的代碼

//說明:nRF2401 CE腳控製收發使能,CS控製片選,均為高電平有效
//===============引腳定義=======================
#define nRF2401_CE_PORT       PORTD.1//
#define nRF2401_CE_DDR        DDRD.1//

#define nRF2401_PWR_PORT    PORTD.0//
#define nRF2401_PWR_DDR     DDRD.0//

#define nRF2401_CS_PORT       PORTD.3//
#define nRF2401_CS_DDR      DDRD.3//  

#define nRF2401_CLK1_PORT   PORTD.5//
#define nRF2401_CLK1_DDR  DDRD.5//

#define nRF2401_DATA1_PORT   PORTD.4
#define nRF2401_DATA1_DDR  DDRD.4
#define nRF2401_DATA1_PIN  PIND.4

#define nRF2401_DR1_PORT     PORTD.2//
#define nRF2401_DR1_DDR    DDRD.2//
#define nRF2401_DR1_PIN    PIND.2//

unsigned char Address[4]={0x00,0x00,0x00,0x99};                                  

//===================配置字定義================================
unsigned char nRF2401_InitData[15]={    //設配置字                          //test
8,8,                        //通道2與通道1數據寬度設置為8位
0,0,0,0,57,                 //通道2接收地址
0x00,0x00,0x00,0x00,0x99,  //通道1接收地址
0x83,                      //通道1和通道2地址寬度為32位,開CRC,16位,CRC 校驗
0x6F, //4F                 //雙頻道功能禁用,ShockBurst mode,傳輸速率1M,晶振頻率16M
0x02                       //Channel = 2400MHz + RF_CH * 1.0MHz ,發送模式
};                         //0:Tx 1:Rx                                                                  
//===========================================================

//===================發送單字節數據==============================
void nRF2401_SendByte(unsigned char Data)
{
 unsigned char i;
 nRF2401_DATA1_DDR = 1;
 for(i=0;i<8;i++)
 {
    if((Data&0x80)!=0)
    nRF2401_DATA1_PORT=1;
    else  nRF2401_DATA1_PORT=0;
    delay_us(1);  //最小500ns  
    nRF2401_CLK1_PORT=1;
    delay_us(1);//最小500ns
    Data<<=1;
    nRF2401_CLK1_PORT=0;
    delay_us(1);
  }
}
//===========================================================
//==================從nRF2401A數據緩衝區讀取數據==================
void nRF2401_GetData(unsigned char *DataBuffer)
{
  unsigned char i=0,temp=0;
  nRF2401_DATA1_DDR =  0;//數據輸入
  while(nRF2401_DR1_PIN)
  {
   for(i=0;i<8;i++)
   {
     temp<<=1;  
     nRF2401_CLK1_PORT=1;delay_us(1);
     temp|=nRF2401_DATA1_PIN;
     nRF2401_CLK1_PORT=0;delay_us(1);
   }
  }
  *DataBuffer=temp;
}                                  

//=====================nRF2401A發送/接收方式設置=================
//Mode=0:發送方式   Mode=1:接收方式
void nRF2401_SetMode(unsigned char Mode)
{
    nRF2401_PWR_PORT=1;nRF2401_CE_PORT=0;nRF2401_CS_PORT=1;//設置模式
    nRF2401_DATA1_DDR = 1;
    delay_us(10);  //最小5us進入配置模式
    nRF2401_DATA1_PORT=Mode;                                    
    nRF2401_CLK1_PORT=1;delay_us(1);
    nRF2401_CLK1_PORT=0;delay_us(1);       //寫入最低配置位
    nRF2401_PWR_PORT=1;nRF2401_CS_PORT=0;nRF2401_CE_PORT=1;         //進入收發模式、
    delay_us(300);
}
//===========================================================

//====================數據發送=================================
void nRF2401_SendData(unsigned char *Address,unsigned char DataBuffer)
{
  unsigned char i=4;
  nRF2401_PWR_PORT=1;nRF2401_CS_PORT=0;nRF2401_CE_PORT=1;  //進入收發模式    
  delay_us(10);
  while(i--)nRF2401_SendByte(*Address++);                //發送地址字節
  nRF2401_SendByte(DataBuffer);            //發送數據字節
  nRF2401_CE_PORT=0;                                                                          //發射數據
  delay_us(300);    //等待結束
}
//===========================================================

//======================初始化===============================
void nRF2401_Init()
{                      
    unsigned char i;
    nRF2401_CLK1_DDR=1;
    nRF2401_DATA1_DDR=1;
    nRF2401_CS_DDR = 1;
    nRF2401_CE_DDR = 1;
    nRF2401_PWR_DDR = 1;
    nRF2401_DR1_DDR = 0;
   
    nRF2401_DR1_PORT=0;
    nRF2401_CLK1_PORT=0;
    nRF2401_DATA1_PORT=0;
   
    nRF2401_CE_PORT=0;
    nRF2401_CS_PORT=0;//空閑模式,低功耗
    nRF2401_PWR_PORT=1;//上電
    delay_ms(5);//從上電到進入配置模式最大 3ms 的延時
    nRF2401_CS_PORT=1;//進入配置模式
    delay_us(10); //最小5us              
    for(i=0;i<15;i++)nRF2401_SendByte(nRF2401_InitData[i]);
    delay_us(10);
    nRF2401_CS_PORT=0;            //低功耗模式    
    delay_ms(6);
}
//===========================================================



現將發送部分和接收部分的程序一並貼上

發送部分:

//=======單片機:ATmega16,編譯器:CodeVision v1.24==========

#include<mega16.h>
#include<delay.h>
#include "2401.h"
unsigned char a=0;
main()
{
 nRF2401_Init();
 nRF2401_SetMode(0);//發送模式
while(1)
{
 nRF2401_SendData(Address,a++);
 delay_ms(100);    
}
}

接收部分:

//=======單片機:ATmega16,編譯器:CodeVision v1.24==========

//==== 采用的是中斷接收方式=================================

//Writen by ChenZhou
#include<mega16.h>
#include<delay.h>
#include "2401.h"
unsigned char a=0;
main()
{
 MCUCR=0X03;GICR=0X40;#asm("sei");//啟用外部中斷INT0,上升沿中斷
 nRF2401_Init();
 nRF2401_SetMode(1);//接收模式
while(1)
{
//=========在這裏顯示變量a的數值即可,若為0到225則是正確的
 delay_ms(10);        
}
}

interrupt [2] void int0(void)
{
nRF2401_GetData(&a);
}


下載地址

NRF2401無線模塊驅動程序

    熱門評論

    最新評論

    發表評論 查看所有評論(0)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    (您的評論需要經過審核才能顯示)

    配置需求

    推薦專題

    DLL修複工具DLL修複工具

    關於飛翔 | 聯係我們 | 大事記 | 下載幫助(?) | 廣告聯係 | 版權聲明 | 網站地圖 | 友情鏈接

    Copyright 2010-2013 單機遊戲下載 (R) 版權所有 飛翔下載所有遊戲及軟件下載資源來源互聯網,並由網友上傳分享。如有侵權,請來電來函告之。
    飛翔忠告:抵製不良色情、反動、暴力遊戲 合理安排遊戲時間 享受健康生活【鄂ICP備13011873號-1】