历史上的今天

今天是:2024年10月18日(星期五)

正在发生

2019年10月18日 | AVR M16单片机NRF2401无线通信开发包

发布者:zuiquan 来源: 51hei关键字:AVR  M16单片机  NRF2401  无线通信 手机看文章 扫描二维码
随时随地手机看文章

单片机源程序如下:

//ICC-AVR application builder : 

// Target : M16

// Crystal: 8.0000Mhz

#include

#include

//------------------------------------------------------------------------------

//--------------------------------NRF24L01接口定义--------------------------------

//------------------------------------------------------------------------------

//#define NRF24L01_MISO          PB4                //输入0        

#define   Hign_24L01_MISO    PORTB |= (1 << PB4) 

#define   Low_24L01_MISO     PORTB &= ~(1 << PB4)

#define   Read_24L01_MISO    PINB & (1 << PB4) 


//#define NRF24L01_MOSI         PB2              //输出1

#define   Hign_24L01_MOSI    PORTB |= (1 << PB2)  

#define   Low_24L01_MOSI     PORTB &= ~(1 << PB2)

#define   Read_24L01_MOSI    PINB & (1 << PB2) 


//#define NRF24L01_CSN                     PB7              //输出1

#define   Low_24L01_CSN     PORTB &= ~(1 << PB7)

#define   Hign_24L01_CSN           PORTB |= (1 << PB7)


//#define NRF24L01_SCK                  PB6             //输出1

#define   Hign_24L01_SCK    PORTB |= (1 << PB6)   

#define   Low_24L01_SCK     PORTB &= ~(1 << PB6)                 

#define   Read_24L01_SCK    PINB & (1 << PB6);


//#define NRF24L01_CE                PB5              //输出1

#define   Hign_24L01_CE    PORTB |= (1 << PB5)  

#define   Low_24L01_CE     PORTB &= ~(1 << PB5)                

#define   Read_24L01_CE    PINB & (1 << PB5)


//#define  NRF24L01_IRQ     PB3               //输入

#define   Hign_NRF24L01_IRQ    PORTB |= (1 << PB3)   

#define   Low_NRF24L01_IRQ     PORTB &= ~(1 << PB3)

#define   Read_NRF24L01_IRQ    PINB & (1 << PB3)

  

//------------------------------数码管位选--------------------------------------

//#define Display1   PA1                      //输出1

#define   Hign_Display1     PORTA |= (1 << PA1);   

#define   Low_Display1            PORTA &= ~(1 << PA1); 

//#define Display2      PA2                  //输出1

#define   Hign_Display2     PORTA |= (1 << PA2);   

#define   Low_Display2            PORTA &= ~(1 << PA2); 

//#define Display3     PA3                  //输出1

#define   Hign_Display3     PORTA |= (1 << PA3);   

#define   Low_Display3             PORTA &= ~(1 << PA3); 

//#define Display4      PA4                 //输出1

#define   Hign_Display4     PORTA |= (1 << PA4);   

#define   Low_Display4             PORTA &= ~(1 << PA4);   

//-------------------------------BELL蜂明器-------------------------------------

#define   Hign_BELL                 PORTD |= (1 << PD5)  

#define   Low_BELL                 PORTD &= ~(1 << PD5) 

//-------------------------------JDQ继电器--------------------------------------

#define   Hign_JDQ                  PORTD |= (1 << PD7)

#define   Low_JDQ                    PORTD &= ~(1 << PD7) 

//***********************************数码管0-9编码*******************************************

char seg[10]={0xC0,0xCF,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};         //0~~9段码

char TxBuf[32]=

{

0x01,0x02,0x03,0x4,0x05,0x06,0x07,0x08,

0x09,0x10,0x11,0x12,0x13,0x14,0x15,0x16,

0x17,0x18,0x19,0x20,0x21,0x22,0x23,0x24,

0x25,0x26,0x27,0x28,0x29,0x30,0x31,0x32,

};

char sta,tf,KEY0;

//*********************************************NRF24L01*************************************

#define TX_ADR_WIDTH    5           // 5 uints TX address width

#define RX_ADR_WIDTH    5           // 5 uints RX address width

#define TX_PLOAD_WIDTH  32          // 20 uints TX payload

#define RX_PLOAD_WIDTH  32          // 20 uints TX payload

char  TX_ADDRESS[TX_ADR_WIDTH]= {0x34,0x43,0x10,0x10,0x01};        //本地地址

char  RX_ADDRESS[RX_ADR_WIDTH]= {0x34,0x43,0x10,0x10,0x01};        //接收地址

//***************************************NRF24L01寄存器指令*******************************************************

#define READ_REG        0x00          // 读寄存器指令

#define WRITE_REG       0x20         // 写寄存器指令

#define RD_RX_PLOAD     0x61          // 读取接收数据指令

#define WR_TX_PLOAD     0xA0          // 写待发数据指令

#define FLUSH_TX        0xE1         // 冲洗发送 FIFO指令

#define FLUSH_RX        0xE2          // 冲洗接收 FIFO指令

#define REUSE_TX_PL     0xE3          // 定义重复装载数据指令

#define NOP1             0xFF          // 保留

//*************************************SPI(nRF24L01)寄存器地址****************************************************

#define CONFIG          0x00  // 配置收发状态,CRC校验模式以及收发状态响应方式

#define EN_AA           0x01  // 自动应答功能设置

#define EN_RXADDR       0x02  // 可用信道设置

#define SETUP_AW        0x03  // 收发地址宽度设置

#define SETUP_RETR      0x04  // 自动重发功能设置

#define RF_CH           0x05  // 工作频率设置

#define RF_SETUP        0x06  // 发射速率、功耗功能设置

#define STATUS          0x07  // 状态寄存器

#define OBSERVE_TX      0x08  // 发送监测功能

#define CD              0x09  // 地址检测           

#define RX_ADDR_P0      0x0A  // 频道0接收数据地址

#define RX_ADDR_P1      0x0B  // 频道1接收数据地址

#define RX_ADDR_P2      0x0C  // 频道2接收数据地址

#define RX_ADDR_P3      0x0D  // 频道3接收数据地址

#define RX_ADDR_P4      0x0E  // 频道4接收数据地址

#define RX_ADDR_P5      0x0F  // 频道5接收数据地址

#define TX_ADDR         0x10  // 发送地址寄存器

#define RX_PW_P0        0x11  // 接收频道0接收数据长度

#define RX_PW_P1        0x12  // 接收频道0接收数据长度

#define RX_PW_P2        0x13  // 接收频道0接收数据长度

#define RX_PW_P3        0x14  // 接收频道0接收数据长度

#define RX_PW_P4        0x15  // 接收频道0接收数据长度

#define RX_PW_P5        0x16  // 接收频道0接收数据长度

#define FIFO_STATUS     0x17  // FIFO栈入栈出状态寄存器设置

//**************************************************************************************

void Delay(int s);

void inerDelay_us(char n);

void init_NRF24L01(void);

char SPI_RW(char data);

char SPI_Read(char reg);

char SPI_RW_Reg(char reg, char value);

char SPI_Read_Buf(char reg, char *pBuf, char uchars);

char SPI_Write_Buf(char reg, char *pBuf, char uchars);

void SetRX_Mode(void);

char nRF24L01_RxPacket(char* rx_buf);

void nRF24L01_TxPacket(char * tx_buf);

//*****************************************长延时*****************************************

void Delay(int s)

{

        unsigned int i;

        for(i=0; i        for(i=0; i}

/******************************************************************************************

/*延时函数

/******************************************************************************************/

void inerDelay_us(char n)

{

        for(;n>0;n--);


}

//------------------------------串口初始化--------------------------------------

void uart0_init(void) 

CLI(); //关闭中断

UCSRB =0x98;    //disable while setting baud rate 

UCSRA =0x20; 

UCSRC = 0x86; 

UBRRL =51; //set baud rate lo 

TIMSK = 0x00; //timer interrupt sources 

SEI(); //开中断

//----------------------------接收中断处理函数----------------------------------

#pragma interrupt_handler uart0_rx_isr:12 

void uart0_rx_isr(void) 

  KEY0=UDR; 

  UDR=KEY0;

}

/****************************************************************************************************

[1] [2] [3]
关键字:AVR  M16单片机  NRF2401  无线通信 引用地址:AVR M16单片机NRF2401无线通信开发包

上一篇:用带ADC的avr单片机做的一款电压检测表
下一篇:Atmega64 LCD1602+proteus仿真程序

推荐阅读

目前,我国机器人产业发展如何?笔者从近期在南京举办的世界智能制造大会现场了解到,2017年,我国工业机器人产量超过13万台,约占全球产量1/3。其中,我国核心零部件和控制系统自主研发能力增强,涌现了一批创新型机器人企业。比如,哈工大机器人集团自主研发出国内首款具有完全自主知识产权的精密摆线针轮减速器并投入生产,固高科技、新时达等企业相...
(文章来源:中科罗伯特机器人学院) 虽然在我们的日常工作中我们常常会提到工业机器人,但是人们对于工业机器人还是一知半解的。工业机器人是制造领域不可或缺的设备,工业机器人是属于高科技的产品,所以它的技术专业性就非常的强,那什么是工业机器人呢。 机器人是使用在工业领域的多关节机械手或者是多自由度的机器装置,它能够自动的执行工作,是...
IT之家10月16日消息 一款型号为 SM-G9910 的三星 5G 数字移动电话机现已通过 3C 认证,配备 25W 充电器。  IT之家了解到,3C 认证显示,这款三星 5G 手机申请人为三星 (中国)投资有限公司,制造商为三星电子株式会社,生产厂为三星电子越南 THAI NGUYEN 有限公司,首次发证日期为 10 月 15 日。  另据数码博主 @数码闲聊...
近日,丰田研究院(Toyota Research Institute,以下简称TRI)宣布,成功研发出最新一代家庭保姆机器人——巴士男孩(Busboy),能够完成85%的人类级任务!,最擅长“做家务活”。在产品的发布会上, “巴士男孩”展示了“他”的能力:从高亮反光桌面上拿起玻璃杯并放到洗碗池里,还能擦干净桌子和地板等。丰田研发的初衷是日本严峻的人口老龄化问题,...

史海拾趣

问答坊 | AI 解惑

PWM实现LED背光板渐亮渐灭 AT89S52

第一次接触PWM脉宽调制,终于实现了LED背光板的渐亮渐灭,把代码贴出来。一则请大家指点,二则把实现的思想跟新人分享。 /***************************************************************************** 硬件说明: AT89S52,晶振11.0592MHz ...…

查看全部问答∨

Keil C51 编译错误总结

1. Warning 280:’i’:unreferenced local variable 说明局部变量i 在函数中未作任何的存取操作,解决方法消除函数中i 变量的宣告 2 Warning 206:’Music3’:missing function-prototype 说明Music3( )函数未作宣告或未作外部宣告所以无法给其 ...…

查看全部问答∨

【verilog语法分析】建立时钟

  虽然有时在设计中会包含时钟,但时钟通常用在测试模块中。下面 三个例子分别说明如何在门级和行为级建立不同波形的时钟模型。  简单的对称方波时钟:   reg clk; always begin     #period/2  ...…

查看全部问答∨

GPRS 无线远程升级 源码出售

开发平台 :wince 开发环境 :evc++ 4.0,sp4 socket 服务器端 .net 2.0 (c#) 协议 :采用自定义协议,加和校验 基于gprs 无线网络的远程文件下发和程序升级系统 有意联系 :email : acosoft@163.com …

查看全部问答∨

About TI CC2500

我听人说 TI 的 CC2500 因为也是 ZigBee 架构 所以不买 TI 的 TOOL 去搭配 TI 软体,无法设定 CC2500 MODULE 成为 Coordinator 或是 End Device ...…

查看全部问答∨

请教变频的应用问题

两套循环水系统应用恒压变频控制,其中一套实际应用中发现效果不理想,(系统中有4台同型号水泵,上海申宝泵业有限公司SB250-400A清水泵,压头44米,流量500立方/小时,配用电机额定功率90KW),一般情况下为两工一变,变频恒压自动调节,系统设定压 ...…

查看全部问答∨

2407的问题

书上有这样的话:   当mp/mc=0时,DSP使用内部程序存储器,复位时从内部程序存储器0000H处读取程序;   当mp/mc=1时,DSP在复位时从外部存储器0000H处读取程序 我想请问一下这里所说的外部存储器是指程序存储器的8000H处开 ...…

查看全部问答∨

单片机也能玩游戏,你hold住了吗

单片机快速玩游戏啦     很多人说单片机功能太简单,能力小,不能驱动液晶屏或者即使能驱动,速度也很慢,下面本人做的这个实验将粉碎这样的观念,没有做不到,只有想不到。    主控芯片采用STC12C5A60S2单片机,该 ...…

查看全部问答∨

史上最全LED贴片灯知识资料集合

这个号称史上最全LED贴片灯知识资料集合,直接拿走吧,,值得收藏就回复一下,谈谈你看后的感受,发表一下观点,别默默地下载就走哦,对LED封装有哪些见解,,了解多少大功率LED的东西,, [ 本帖最后由 qwqwqw2088 于 2013-5-17 16:18 编辑 ...…

查看全部问答∨

2013年大学生电子设计大赛模拟试题下载

本帖最后由 paulhyde 于 2014-9-15 03:23 编辑 2013年大学生电子设计大赛模拟试题下载 删除了 [ 本帖最后由 在路上的旁观者 于 2013-9-1 15:44 编辑 ]    …

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved