单机游戏下载单机游戏下载基地
最新游戏|热门游戏|游戏大全|游戏专题
备份还原硬件驱动系统优化搜索查找键盘鼠标磁盘工具数据恢复系统其它数据备份系统重装
当前位置:首页系统工具硬件驱动 → 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】