文档库 最新最全的文档下载
当前位置:文档库 › 无线接收完整程序

无线接收完整程序

无线接收完整程序
无线接收完整程序

无线接收完整程序:1,头文件2程序

1

typedef unsigned char uchar;

typedef unsigned char uint;

//****************************************SPI-IO端口***************************************

sbit CE = P1^0;//3

sbit SCK = P1^1;//5

sbit MISO = P1^2;//7

sbit CSN = P1^5;//4

sbit MOSI = P1^6;//6

sbit IRQ = P1^7;//8

//*****************************************地址、数据长度*************************************

#define TX_ADR_WIDTH 5 // 5 uints TX address width

#define RX_ADR_WIDTH 5 // 5 uints RX address width

#define TX_PLOAD_WIDTH 4 // 20 uints TX payload

#define RX_PLOAD_WIDTH 4 // 20 uints TX payload

//***************************************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 NOP 0xFF // 保留

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

#define CONFIG 0x00 // 配置收发状态,CRC校验模式以及收发状态响应方式#define EN_AA 0x01 // 自动应答功能设置P0自动应答允许

#define EN_RXADDR 0x02 // 可用信道设置接收通道1允许

#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栈入栈出状态寄存器设置

2

#include

#include "无线接收模块.h"

sbit w4=P2^7;//定义控制数码管的管脚

sbit w3=P2^6;

sbit w2=P2^5;

sbit w1=P2^4;

sbit arl=P2^0;//报警灯

uchar code table[]={

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f};

uchar code table1[]={

0xbf,0x86,0xdb, //有小数点的编码表

0xcf,0xe6,0xed,

0xfd,0x87,0xff,0xef};

uchar bdata sta; //状态标志

sbit RX_DR =sta^6;

sbit TX_DS =sta^5;

sbit MAX_RT =sta^4;

uint const TX_ADDRESS[TX_ADR_WIDTH]= {0x34,0x43,0x10,0x10,0x01}; //本地地址uint const RX_ADDRESS[RX_ADR_WIDTH]= {0x34,0x43,0x10,0x10,0x01}; //接收地址

void us(uint m)

{

while(m--);

}

void ms(uint m)

{

uint i,j;

for(i=m;i>0;i--)

for(j=110;j>0;j--);

}

void display(uchar* p)//显示函数

{

uint i;

for(i=200;i>0;i--)

{

P0=table[p[0]];

w2=0;

ms(5);

w2=1;

P0=table1[p[1]];

w3=0;

ms(5);

w3=1;

P0=table[p[2]];

w4=0;

ms(5);

w4=1;

}

}

//函数:uint SPI_RW(uint uchar)

//功能:NRF24L01的SPI写时序

uint SPI_RW(uint uchar)//写一字节并返回MISO状态

{

uint bit_ctr;

for(bit_ctr=0;bit_ctr<8;bit_ctr++) // output 8-bit

{

MOSI = (uchar & 0x80); // output 'uchar', MSB to MOSI uchar = (uchar << 1); // shift next bit into MSB..

SCK = 1; // Set SCK high..

uchar |= MISO; // capture current MISO bit

SCK = 0; // ..then set SCK low again

}

return(uchar); // return read uchar

}

//函数:uchar SPI_Read(uchar reg)

//功能:NRF24L01的SPI时序

uchar SPI_Read(uchar reg)

{

uchar reg_val;//定义寄存器值

CSN = 0; // CSN low, initialize SPI communication...

SPI_RW(reg); // Select register to read from..

reg_val = SPI_RW(0); // ..then read registervalue

CSN = 1; // CSN high, terminate SPI communication

return(reg_val); // return register value

}

//功能:NRF24L01读写寄存器函数

uint SPI_RW_Reg(uchar reg, uchar value)

{

uint status;

CSN = 0; // CSN low, init SPI transaction

status = SPI_RW(reg); // select register

SPI_RW(value); // ..and write value to it..

CSN = 1; // CSN high again

return(status); // return nRF24L01 status uchar

}

//函数:uint SPI_Read_Buf(uchar reg, uchar *pBuf, uchar uchars)

//功能: 用于读数据,reg:为寄存器地址,pBuf:为待读出数据地址,uchars:读出数据的个数

uint SPI_Read_Buf(uchar reg, uchar *pBuf, uchar num)

{

uint status;

uchar ctr;

CSN = 0; // Set CSN low, init SPI tranaction

status = SPI_RW(reg); // Select register to write to and read status uchar

for(ctr=0;ctr

pBuf[ctr] = SPI_RW(0); //

CSN = 1;

return(status); // return nRF24L01 status uchar

}

//函数:uint SPI_Write_Buf(uchar reg, uchar *pBuf, uchar uchars)

//功能: 用于写数据:为寄存器地址,pBuf:为待写入数据地址,uchars:写入数据的个数uint SPI_Write_Buf(uchar reg, uchar *pBuf, uchar num)

{

uint status;

uchar ctr;

CSN = 0; //SPI使能

status = SPI_RW(reg);

for(ctr=0; ctr

SPI_RW(*pBuf++);

CSN = 1; //关闭SPI

return(status);

}

//函数:unsigned char nRF24L01_RxPacket(unsigned char* rx_buf)

//功能:数据读取后放如rx_buf接收缓冲区中

unsigned char nRF24L01_RxPacket(unsigned char* rx_buf)

{

unsigned char revale=0;

sta=SPI_Read(STATUS); // 读取状态寄存其来判断数据接收状况

if(RX_DR) // 判断是否接收到数据

{

CE = 0; //SPI使能

SPI_Read_Buf(RD_RX_PLOAD,rx_buf,TX_PLOAD_WIDTH);// read receive payload from RX_FIFO buffer

revale =1; //读取数据完成标志

}

SPI_RW_Reg(WRITE_REG+STA TUS,sta); //接收到数据后RX_DR,TX_DS,MAX_PT都置高为1,通过写1来清楚中断标志

return revale;

}

//函数:void SetRX_Mode(void)

//功能:数据接收配置

void SetRX_Mode(void)

{

CE=0;

CE = 1;

us(130);

}

void init_NRF24L01(void)

{

us(100);

CE=0; // chip enable

CSN=1; // Spi disable

SCK=0; // Spi clock line init high

SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH); // 写本地地址

SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, RX_ADDRESS, RX_ADR_WIDTH); // 写接收端地址

SPI_RW_Reg(WRITE_REG + EN_AA, 0x01); // 频道0自动ACK应答允许

SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x01); // 允许接收地址只有频道0,如果需要多频道可以参考Page21

SPI_RW_Reg(WRITE_REG + RF_CH, 0); // 设置信道工作为2.4GHZ,收发必须一致

SPI_RW_Reg(WRITE_REG + RX_PW_P0, RX_PLOAD_WIDTH); //设置接收数据长度,本次设置为32字节

SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x07); //设置发射速率为1MHZ,发射功率为最大值0dB

SPI_RW_Reg(WRITE_REG + CONFIG, 0x0f); // IRQ收发完成中断响应,16位CRC ,主接收

}

//--------------------------接收主函数-------------------------

void main(void)

{

uchar RX_BUF[4];

SetRX_Mode();

init_NRF24L01();

while(1)

{

nRF24L01_RxPacket(RX_BUF);

if(RX_BUF[3]>0)

{

arl=0;

}

CE=1;

display(RX_BUF);

CE=0;

}

}

NRF24L01无线模块收发程序(实测成功 多图)

NRF24L01无线模块收发程序(实测成功多图) 本模块是NRF24L01无线传输模块,用于无线传输数据,距离不远,一般只是能够满足小距离的传输,目测是4-5m,价格一般是4元左右,可以方便的买到。 51最小系统学习板就可以,当时是用了两块学习板,一块用于发送,一块用于接收。 小车也是比较容易购到的,四个端口控制两个电机,两个控制一个电机,当两个端口高低电平不同时电机就会转动,即为赋值1和0是电机转动,赋值可以用单片机作用,当然这是小车启动部分,前进后退左转右转就是你赋值0和1的顺序问题了。

整体思路是用发射端的按键控制小车,即为按键按下就前进,再按其他按键实现其他功能,本次程序是在用NRF24L01发射数据在接收端用1602显示的基础上改变。 下面是程序源码(有好几个文件,分别创建) ////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////// #include #include #include'1602.h' #include'delay.h' #include 'nrf24l01.h' #define uint unsigned int #define uchar unsigned char uint Weight_Shiwu=1234; unsigned char KeyScan(void);//键盘扫描 // unsigned char KeyScan(void);//键盘扫描 //#define KeyPort P0 sbit KEY1 = P0^0; sbit KEY2 = P0^1; sbit KEY3 = P0^2; sbit KEY4 = P0^3; sbit KEY5 = P0^4; void main() { // char TxDate[4]; // LCD_Init(); //初始化液晶屏 // LCD_Clear(); //清屏

nRF24L01+无线收发系统设计

nRF2401无线收发系统设计 一 实验目的 培养基本实验能力和工程实践能力,通过实验锻炼基本实验技能,使同学们掌握单片机的基本工作原理和单片机系统应用设计的技能,掌握单片机的简单编程方法以及调试方法,并能应用于电子系统设计中,提高同学们对综合电子系统的设计能力,加深对无线通信系统理论知识的理解,增强工程实践能力,培养创新意识,提高分析问题和解决问题的能力。 二 实验基本要求 (1)正确使用电子仪器; (2)根据项目设计要求能够进行单片机系统硬件电路设计和软件编程; (3)学会查阅接口电路手册和相关技术资料; (4)具有初步的单片机电路硬件和软件分析、寻找和排除常见故障的能力; (5)正确地记录实验数据和写实验报告。 三 实验器材 万能板、单片机、nRF2401无线收发模块、液晶屏、晶振、按键、发光二级管、开关、电容、电阻、5V 电源适配器、导线、万用表、电烙铁、焊锡。 四 GFSK 调制解调原理 4.1 调制 频移键控方式,幅度恒定不变的载波信号频率随着调制信号的信息状态而切换,通常采用的是二进制频移键控,即载波信号频率随着数据信息码的“0”、“1”变化进行切换。根据频率变化影响发射波形的方式,FSK 信号在相邻的比特之间,呈现连续的相位或不连续的相位。一种常见的二进制FSK 信号产生方法是根据数据比特码是“0”还是“1”,在两个振荡频率分别为 c d f f +和 c d f f -的振荡器间切换,这种FSK 信号的表达式为: []()()2π() 0FSK H c d b S t v t f f t t T == +≤≤ (二进制1) []()()2π() 0FSK L c d b S t v t f f t t T == -≤≤ (二进制0) c f 和d f 分别代表载波信号频率和恒定频率偏移,而b E 和b T 分别表示单比特能量和比 特周期。这种方法产生的波形在比特码“0”,“1”切换时刻是不连续的,这种不连续的相位会造成诸如频谱扩展和传输差错等问题,信号的功率谱密度函数按照频率偏移的负二次幂衰落,在无线系统中一般不采用这种FSK 信号,而是使用信号波形对单一载波振荡器进行调制,这样FSK 信号可以表示如下: [ ]()2π()2ππ()t FSK c c S t f t t f t h m d θττ-∞??=+=+???? ? 上式中,h 是频率调制系数,定义为2/b b h f R =,b R 为比特率,尽管调制波形()m t 在“0”和“1”比特间转换时不连续,但是相位函数()t θ是与()m t 的积分成比例,所以是连 续的,大部分信号能量集中在以载波频率为中心的主瓣范围,功率谱密度函数按照频率偏移的负四次幂衰减。 为了进一步减小信号的频谱旁瓣,可以在前加入一级高斯滤波器,高斯滤波器的传递函

NRF24L01无线模块收发程序例程

//下面是接收的NRF24L01的程序。 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #include #include "nrf24l01.h" #include #define uchar unsigned char #define uint unsigned int sbit IRQ =P1^2;//输入 sbit MISO =P1^3; //输入 sbit MOSI =P1^1;//输出 sbit SCLK =P1^4;//输出 sbit CE =P1^5;//输出 sbit CSN =P1^0;//输出 uchar RevTempDate[5];//最后一位用来存放结束标志 uchar code TxAddr[]={0x34,0x43,0x10,0x10,0x01};//发送地址 /*****************状态标志*****************************************/ uchar bdata sta; //状态标志 sbit RX_DR=sta^6; sbit TX_DS=sta^5; sbit MAX_RT=sta^4; /*****************SPI时序函数******************************************/ uchar NRFSPI(uchar date) { uchar i; for(i=0;i<8;i++) // 循环8次 { if(date&0x80) MOSI=1; else MOSI=0; // byte最高位输出到MOSI date<<=1; // 低一位移位到最高位 SCLK=1; if(MISO) // 拉高SCK,nRF24L01从MOSI读入1位数据,同时从MISO输出1位数据date|=0x01; // 读MISO到byte最低位 SCLK=0; // SCK置低 } return(date); // 返回读出的一字节 } /**********************NRF24L01初始化函数*******************************/ void NRF24L01Int() {

nrf24l01无线模块NRF24L01模块收发c程序

//许多人都在找nrf24l01无线模块的c程序;我以前刚接触无线//时用的就是nrf24l01模块;搜索了许多程序有很多都没法直接用;甚至还怀疑模块是不是被我搞坏了;拿去让别人检测模块又是好的;为避免大家走弯路;我将我的程序发出来供大家参考; 这是nrf24l01无线模块pcb图; 下面有Nrf24l01无线模块的收发c程序;以下程序经本人亲自测试;绝对能用!! 请注意以下几点: 1、24L01模块的电源电压是否为3V-3.6V之间; 2、如果您用的单片机是5V的话,请在IO口与模块接口之间串一个1K电阻; 3、检查模块的GND是否与单片机的GND相连接 4、先用程序进行调试,如果IO口不同,请更改IO口或相关时序; 5、如果是51系列单片机,晶振请选用11.0592M Hz; 模块供电最好用asm1117 5v转3.3v 稳压 测试单片机是stc89c52;at89c52 通用; 收发一体;

一大截不废话了;上程序;此程序是按键控制led;当按下s的时候对应接受的led会闪闪发光;很简单的~如果要实现其他更先进的功能;自己发掘吧~~ 务必将硬件连接正确;否则;它不会工作的~~当然做什么都要严谨~~错一点就差大了~~ 《《收发一体程序》》 #include #include typedef unsigned char uchar; typedef unsigned char uint; //****************************************NRF24L01端口定义

*************************************** sbit M ISO =P1^3; sbit M OSI =P1^4; sbit SCK =P1^2; sbit CE =P1^1; sbit CSN =P3^2; sbit IRQ =P3^3; //************************************按键*************************************************** sbit KEY=P2^0; //***************************************************************************** sbit led=P2^1; //*********************************************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 20 // 20 uints TX payload #define RX_PLOAD_WIDTH 20 // 20 uints TX payload uint const TX_ADDRESS[TX_ADR_WIDTH]= {0x34,0x43,0x10,0x10,0x01}; //本地地址uint const 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 NOP 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接收数据地址

无线发射接收系统设计与实现

无线发射接收系统设计与实现 摘要: 此系统采用了无线发射和接受实现双向的全双工无线通信。通过使用C51单片机实现对系统的数据采集、信号收发进行控制。用硅光片进行对阳光是否照射的采集,DS18B20进行温度信息采集。该系统是一个独立系统,能够在一定范围内进行数据采集并且将数据通过无线传输到数据接收模块。 关键词:无线传输;单片机;数据采集 1 引言 对于环境信息采集是很普遍的,但是将采集的信息如何传输就是关键,传统的系统都是用有线的方法,不仅要铺设线路,而且不方便,可移植性差。随着无线技术的不断发展,无线在各个领域中的应用也不断增加,通过嵌入式系统,用无线的方式实现数据的采集和传输是最好的解决方法,不仅简化了实施的难度,而且成本相对较低。 本文主要是以C51单片机为控制核心,用无线接收发射装置来实现环境数据采集系统。 2 系统目的 设计并制作一个无线环境监测模拟装置,实现对周边温度和光照信息的探测。该装置由1个监测终端和不多于255个探测节点组成(实际制作2个)。监测终端和探测节点均含一套无线收发电路,要求具有无线传输数据功能,收发共用一个天线。 探测节点有编号预置功能,编码预置范围为00000001B~B。探测节点能够探测其环境温度和光照信息。温度测量范围为0℃~100℃,绝对误差小于2℃;光照信息仅要求测量光的有无。探测节点采用三节干电池串联,单电源供电。 监测终端用外接单电源供电。探测节点分布示意图如图1所示。监测终端可以分别与各探测节点直接通信,并能显示当前能够通信的探测节点编号及其探测到的环境温度和光照信息。 每个探测节点增加信息的转发功能,节点转发功能示意图如图2所示。即探测节点B的探测信息,能自动通过探测节点A转发,以增加监测终端与节点B之间的探测距离D+D1。该转发功能应自动识别完成,无需手动设置,且探测节点A、B可以互换位置。

NRF24L01无线发射简易教程

NRF24L01 简易教程

先来看接口电路,使用的IO 口不是唯一的哦,可随意定义接口,当然是在使用IO 口模拟SPI 且IRQ 中断引脚不使用的使用查询方法判断接收状态的情况下了。作为初探我们就是用简单的IO 模拟SPI 的方法了,中断使用查询的方式。那么该教程讲解的接口与单片机的连接如下: 首先您需要了解NRF24L01,请参阅“NRF24L01 芯片中文资料”或者“NRF24L01 芯片英文资料”。 我们的教程是以一个简单的小项目为大家展示NRF24L01 的使用方法与乐趣。我们所写的教程均是以这种方式的呢,让您在学习的时候明白它能做什么,使您学起来不至于枯燥无味。 作为简易的教程,我们只需要知道它是怎么使用的就够了,我们本教程的目的是用NRF24L01 发送数据和接收数据,且接收方会对比发送的数据与接收的数据,若完全相同则控制LED 闪烁一次,并且把接收到的数据通过串口发送到PC 端,通过串口工具查看接收到的数据。 具体的要求如下: 1、具备发送和接收的能力。 2、发送32 个字节的数据,接收方接收到正确数据之后给予提示,通过LED 闪烁灯形 式。 3、把接收到的数据传送到PC 进行查看。 4、发送端每隔大约1.5 秒发送一次数据,永久循环。以上是程序的要求,若您想自行 设计出硬件接口,您也是可以添加一条呢:使用DIY 方 式设计NRF24L01 的接口板,且包含含单片机平台,使用PCB 方式或者万用板方式均可。如果您想让自己学的很扎实,那么推荐您自行做出接口板子呢。当然若您的能力不足,那么我们不推荐自行做板呢,因为这样会增加您学习的难度,反而起到了反效果呢。 我们使用的方式是画PCB 的方式呢,若您自己做了接口板子,那么您可以对比下一呢,O(∩_∩)O! 我们知道NRF24L01 的供电电压是1.9V~3.6V 不能超过这个范围,低了不工作,高了可能烧毁NRF24L01 芯片。我们常用的STC89C52 的单片机的供电电压是5V,我们不能直接给24L01 这个模块供电,我们需要使用AMS1117-3.3V 稳压芯片把5V 转成3.3V 的电压为24L01 模块供电。 为此我们的设计原理图如下:包含单片机最小系统、供电系统、下载程序接口、5V 转3.3V 电路、NRF24L01 模块接口。并且全部引出单片机的IO 口,另外还加了5 个电源输出接口,为扩展使用。还包括了电源指示LED 以及一个IO 口独立控制的LED,这个独立控制的LED用于NRF24L01 接收成功闪烁指示。为了保证系统的稳定性,在设计中添加了两个滤波电容。

2006我的毕设315M和433M无线发射接收程序

发送::::: #include "reg51.h" #include #include "lcd1602.h" #include "delay.h" sbit ch1 = P1^0; sbit ch2 = P1^1; sbit ch3 = P1^2; sbit ch4 = P1^3; sbit key_1 = P2^0; sbit key_2 = P2^1; sbit key_3 = P2^2; sbit key_4 = P2^3; sbit key_5 = P2^4; sbit key_6 = P3^5; //有问题 sbit FASONG_send = P3^7; // 低电平发送 #define FASONG_Port P1 void FASONG(unsigned char i) { FASONG_Port = i; //发送数据的低4位一个数据有8位,分成高4位和低4位。 FASONG_send = 0; //启动发送 _nop_();_nop_();_nop_();_nop_(); //控制令起延时作用 YANSHIYIHAOMIAO(200); //延时让硬件发送数据 FASONG_send = 1; //关闭发送 } /**************************主函数********************************************/ void main() { unsigned int i = 0; // CLK_DIV = 0x03; FASONG_send = 1; //开机时关闭发送数据 YEJINGYANSHI(50); //延时500ms启动 YEJINGCHUSHIHUA( ); //LCD初始化 YANSHI10US(10); XIANSHIYICHUANZHIFU(0,0," Graduate");//显示 XIANSHIYICHUANZHIFU(0,1," Send: "); //显示 FASONG_send = 0;

无线发射程序

无线发射 #include #include #include #include //--------------------------------------------------------- -------------------------------- ----------------------- #define uint unsigned int #define uchar unsigned char //--------------------------------------------------------- -------------------------------- ----------------------- #define BYTE_BIT0 0x01 #define BYTE_BIT7 0x80 //--------------------------------------------------------- -------------------------------- ----------------------- bdata unsigned char DATA_BUF; #define DATA7 ((DATA_BUF&BYTE_BIT7) != 0)

#define DATA0 ((DATA_BUF&BYTE_BIT0) != 0) sbit flag =DATA_BUF^7; sbit flag1 =DATA_BUF^0; //---------------------------------------------------发送数 据缓冲区 -------------------------------- ----------------- #define TxRxBuf_Len 4 unsigned char TxRxBuf[TxRxBuf_Len]={0x29,0x30,0x31,0x32,}; code TxAddress[4]={0xcc,0xcc,0xcc,0xcc}; char tf; //----------------------------------------NRF905工作模式控 制端口 -------------------------------- ---------------------- sbit TXEN=P1^4; sbit TRX_CE=P3^2; sbit PWR=P1^3; //----------------------------------------LED显示端口 -------------------------------- ------------------- sbit LED=P3^5;

nRF24L01温度发送与接收程序

/******************************************************* ** 温度无线发送程序 ** 时间:2012.2.3 ** ——by Keliwen *******************************************************/ #include #include #include #include typedef unsigned char uchar; typedef unsigned int uint; /***************************************************/ #define TX_ADR_WIDTH 5 // 5字节宽度的发送/接收地址 #define TX_PLOAD_WIDTH 4 // 数据通道有效数据宽度 uchar code TX_ADDRESS[TX_ADR_WIDTH] = {0x34,0x43,0x10,0x10,0x01}; // 定义一个静态发送地址 uchar RX_BUF[TX_PLOAD_WIDTH]; uchar TX_BUF[TX_PLOAD_WIDTH]; sbit CSN = P1^0; // Chip Enable pin signal (output) sbit MOSI= P1^1; // Slave Select pin, (output to CSN, nRF24L01) sbit IRQ = P1^2; // Interrupt signal, from nRF24L01 (input) sbit MISO= P1^3; // Master In, Slave Out pin (input) sbit SCLK= P1^4; // Serial Clock pin, (output) sbit CE = P1^5; // Master Out, Slave In pin (output) // SPI(nRF24L01) commands #define READ_REG 0x00 // Define read command to register #define WRITE_REG 0x20 // Define write command to register #define RD_RX_PLOAD 0x61 // Define RX payload register address #define WR_TX_PLOAD 0xA0 // Define TX payload register address #define FLUSH_TX 0xE1 // Define flush TX register command #define FLUSH_RX 0xE2 // Define flush RX register command #define REUSE_TX_PL 0xE3 // Define reuse TX payload register command #define NOP 0xFF // Define No Operation, might be used to read status register // SPI(nRF24L01) registers(addresses) #define CONFIG 0x00 // 'Config' register address #define EN_AA 0x01 // 'Enable Auto Acknowledgment' register address #define EN_RXADDR 0x02 // 'Enabled RX addresses' register address

NRF24L01详细教程..

先来看接口电路,使用的IO 口不是唯一的哦,可随意定义接口,当然是在使用IO 口模拟SPI 且IRQ 中断引脚不使用的使用查询方法判断接收状态的情况下了。作为初探我们就是用简单的IO 模拟SPI 的方法了,中断使用查询的方式。那么该教程讲解的接口与单片机的连接如下: 首先您需要了解NRF24L01,请参阅“NRF24L01 芯片中文资料”或者“NRF24L01 芯片英文资料”。 我们的教程是以一个简单的小项目为大家展示NRF24L01 的使用方法与乐趣。我们所写教程均是以这种方式的呢,让您在学习的时候明白它能做什么,使您学起来不至于枯燥无味。 作为简易的教程,我们只需要知道它是怎么使用的就够了,我们本教程的目的是用NRF24L01 发送数据和接收数据,且接收方会对比发送的数据与接收的数据,若完全相同则控制LED 闪烁一次,并且把接收到的数据通过串口发送到PC 端,通过串口工具查看接收到的数据。 具体的要求如下: 1、具备发送和接收的能力。 2、发送32 个字节的数据,接收方接收到正确数据之后给予提示,通过LED 闪烁灯形 式。 3、把接收到的数据传送到PC 进行查看。 4、发送端每隔大约1.5 秒发送一次数据,永久循环。 以上是程序的要求,若您想自行设计出硬件接口,您也是可以添加一条呢:使用DIY 方式设计NRF24L01 的接口板,且包含含单片机平台,使用PCB 方式或者万用板方式均可。如果您想让自己学的很扎实,那么推荐您自行做出接口板子呢。当然若您的能力不足,那么我们不推荐自行做板呢,因为这样会增加您学习的难度,反而起到了反效果呢。 我们知道NRF24L01 的供电电压是1.9V~3.6V 不能超过这个范围,低了不工作,高了可能烧毁NRF24L01 芯片。我们常用的STC89C52 的单片机的供电电压是5V,我们不能直接给24L01 这个模块供电,我们需要使用AMS1117-3.3V 稳压芯片把5V 转成3.3V 的电压为24L01 模块供电。 为此我们的设计原理图如下:包含单片机最小系统、供电系统、下载程序接口、5V 转3.3V 电路、NRF24L01 模块接口。并且全部引出单片机的IO 口,另外还加了5 个电源输出接口,为扩展使用。还包括了电源指示LED 以及一个IO 口独立控制的LED,这个独立控制的LED用于NRF24L01 接收成功闪烁指示。为了保证系统的稳定性,在设计中添加了两个滤波电容。

无线发射与接收复习过程

无线发射与接收

基于BH1417芯片的FM无线发射电路设计 类别:电源技术阅读:1439 BH1417是FM无线发射芯片,它可工作于87MHz~108MHz频段,与简单的外围电路配合使用,可发射音频FM信号,它可以将计算机声卡、游戏机、CD、DVD、MP3、调音台等立体声音频信号进行立体声调制发射传输,配合普通的调频立体声接收机就可实现无线调频立体声传送。适用于生产立体声的无线音箱、无线耳机、CD、MP3、DVD、PAD、笔记本电脑等的无线音频适配器。 BH1417的原理特性 FM发射电路采用稳定频率的锁相环系统。这一部分由高频振荡器、高频放大器及锁相环频率合成器组成。调频由变容二极管组成的高频振荡器实现,高频振荡器是锁相环的VCO,立体声复合信号通过它直接进行调频。高频振荡器由第9引脚外部的LC回路与内部电路组成,振荡信号经过高频放大器从11引脚输出,同时输送到锁相环电路进行比较后,从第7引脚输出一个信号,对高频振荡器的值进行修正,确保频率稳定。一但超过锁相环设定的频率,第7引脚将输出的电平拉高;如果低于设定频率,它将输出的电平拉低;相同的时候,它的电平将不变。 1) 将预加重电路、限幅电路、低通滤波电路(LPF)一体化,使音频信号的质量比分立元件的电路(如BA1404、NJM2035等)有很大改进。 2) 采用锁相环锁频,并与调频发射电路一体化,使得发射的频率非常稳定。 3) 采用了4位拔码开关进行频率设定,可设定14个频点,使用非常方便。 BH1417的内部结构如图1所示。它由5部分组成:音频预处理电路(加重、限幅和低通滤波);基频产生电路(晶振、分频);锁相环电路(相位检测、锁频);频率设定电路(高低电平转换);调频发射电路。外围电路主要有拔码开关组成的频率控制电路、压控振荡器组成的载波产生电路、定时器以及一些耦合电容。 应用电路 音频输入端的限幅电路设计 BH1417音频输入有最大电平限制,过大的输入电平会损坏芯片。在前期的试验阶段,输入音频电平幅值具有不可预测性,为了保护芯片,需对输入音频信号进行限幅处理。限幅电路很简单,利用可变电位器即可。电路如图2所示,图中电容的作用是将音频信号耦合到芯片中,同时有隔直流功能。

NRF24L01 MSP430发送接收程序

NRF24L01 MSP430发送接收程序 作者:codebaby 文章来源:codebaby 点击数: 1351 更新时间:2011-8-18 最近弄了几天的无线模块,玩的是NRF2L01,因为这款 无线模块价格便宜,网上也就卖10多块钱!刚开始用51 写,“百度一下”发现网上的程序真是百篇一律,你抄我, 我抄你。对比了几个程序之后,发现他们的程序注释也是 自相矛盾,看了的唯一收获就是,结合技术资料,对NR F24L01的工作模式和通信过程有了个总体的把握。 用51调了几次没成功,改而用430板子来写。在网上查 了一些相关的程序,终于成功了。现在发现其实要写对N RF24L01的基本通信程序并不难,当然要玩转它又是另外 一回事了。我也刚刚才玩会单通道接收发送这个工作模式,其他的工作模式还没玩!还是附上相应的程序供大家学习交流,当然程序可能难免还有疏漏和错误,还望比拼 指出! 这是NRF24L01的头文件配置程序: #include //=======================NRF24L01_CE 端口========================================= #define RF24L01_CE_0 P3OUT &=~BIT1 #define RF24L01_CE_1 P3OUT |= BIT1 //=============================RF24L01_CSN 端口================================== #define RF24L01_CSN_0 P3OUT &=~BIT3 #define RF24L01_CSN_1 P3OUT |= BIT3 //=============================RF24L01_SCK 端口====================================== #define RF24L01_SCK_0 P3OUT &=~BIT2 #define RF24L01_SCK_1 P3OUT |= BIT2 //=============================RF24L01_MISO 端口========================================= #define RF24L01_MISO_0 P3OUT &=~BIT0 #define RF24L01_MISO_1 P3OUT |= BIT0 //============================= RF24L01_MOSI 端口================================ #define RF24L01_MOSI_0 P2OUT &=~BIT6 #define RF24L01_MOSI_1 P2OUT |= BIT6 //==========================IRQ 状态============================================ #define RF24L01_IRQ_0 P2OUT &=~BIT7

无线发射台实施细则

附件4 《广播电视安全播出管理规定》无线发射转播台实施细则 国家新闻出版广电总局 二〇一四年十月

第一章总则 第一条为指导和规无线发射转播台(以下简称发射台)安全播出管理工作,根据《广播电视安全播出管理规定》,制定本实施细则。 第二条本实施细则适用于发射台的技术系统配置及运行、维护、技术管理工作。 第三条根据发射台的覆盖围和影响程度,发射台安全播出保障等级分为一级、二级、三级,一级为最高保障等级。保障等级越高,对技术系统配置、运行维护、预防突发事件、应急处置等方面的保障要求越高。有条件的发射台应提升安全播出保障等级。 (一)中央直属发射台、位于省会城市的省直属发射台、省会城市和计划单列市所属发射台应达到一级保障要求; (二)其他省直属发射台、地市所属发射台应达到二级保障要求; (三)县级发射台应达到三级保障要求,县以下转播台宜达到三级保障要求; (四)以下将“三级保障发射台”、“二级保障发射台”、“一级保障发射台”分别简写为三级、二级、一级。 第二章系统配置要求 第一节供配电系统 第四条外部电源应符合以下规定: (一)三级宜接入两路外电,如只有一路外电,宜配置自备电源; (二)二级宜接入两路外电,其中一路应为专线,调频、电视发射台和发射总功率小于100千瓦的中短波发射台暂时做不到两路外

电的,应配置自备电源; (三)一级应接入两路外电,其中一路应为专线,当一路外电发生故障时,另一路外电不应同时受到损坏。调频、电视发射台和发射总功率小于100千瓦的中短波发射台应配置自备电源。 第五条供配电系统应符合以下规定: (一)高、低压供配电应符合现行国家、行业标准和规; (二)三级播出负荷供电宜设两个以上独立低压回路,并具备自动或手动互投功能;调频、电视发射台的发射控制设备和信号源设备宜采用不间断电源UPS供电,UPS电池组后备时间应满足实际负荷工作30分钟以上; (三)二级播出负荷宜设对应于不同外电的变压器,单母线分段供电并具备自动或手动互投功能;发射控制设备和信号源设备应采用UPS供电,UPS电池组后备时间应满足实际负荷工作30分钟以上;主备播出设备、双电源播出设备应分别接入不同的供电回路; (四)一级播出负荷应设置备用变压器,主备变压器应具备自动或手动互投功能;发射控制设备和信号源设备应采用UPS供电,UPS 电池组后备时间应满足实际负荷工作30分钟以上;主备播出设备、双电源播出设备应分别接入不同的供电回路。 (五)智能电源设备应实施必要的信息安全防护,禁止通过外部网络进行远程维护。 第二节信号源系统 第六条所播节目均应具备至少两路不同传输路由的信号源;信号来源应安全可靠,且应符合《广播电视相关信息系统安全等级保护

STC12单片机SPI的nrf24l01接收程序

#include #include typedef unsigned char uchar; #define uint unsigned int //****************************************IO端口定义*************************************** sfr SPCTL = 0xCE; //SPI Control Register SSIG SPEN DORD MSTR CPOL CPHA SPR1 SPR0 0000,0100 sfr SPSTAT = 0xCD; //SPI Status Register SPIF WCOL - - - - - - 00xx,xxxx sfr SPDAT = 0xCF; sbit CE =P1^0; sbit CSN =P1^1; sbit IRQ =P1^2; sbit led = P1^3; //****************************************************************************************** uchar bdata sta; //状态标志 sbit RX_DR =sta^6; sbit TX_DS =sta^5; sbit MAX_RT =sta^4; //*********************************************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 // 32 uints TX payload #define RX_PLOAD_WIDTH 32 // 32 uints TX payload uchar const TX_ADDRESS[TX_ADR_WIDTH]= {0x34,0x43,0x10,0x10,0x01}; //本地地址 uchar const RX_ADDRESS[RX_ADR_WIDTH]= {0x34,0x43,0x10,0x10,0x01}; //接收地址 uchar code Tx_Buf[TX_PLOAD_WIDTH]={0xff,0xee,0x11,0x22,0x33,0xaa,0xbb,0x11,0x22,0x33,0xaa,0xbb,0x11,0x2 2, 0x33,0xaa,0xbb,0x11,0x22,0x33,0xaa,0xbb,0x11,0x22,0x33,0xaa,0xbb,0x11,0x22,0x33,0xee,0xff};/ /发送数据 uchar Rx_Buf[RX_PLOAD_WIDTH];//接收数据 //***************************************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 NOP 0xFF // 保留

NRF24L01接收程序(可用)

////************************************接收程序******************************************************// #include #include typedef unsigned char uchar; //****************************************NRF24L01端口定义*************************************** sbit M ISO =P1^5; sbit M OSI =P1^1; sbit SCK =P1^6; sbit CE =P1^7; sbit CSN =P1^2; sbit IRQ =P1^0; //***************************************************************************** ************** #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 uchar const TX_ADDRESS[TX_ADR_WIDTH]= {0x34,0x43,0x10,0x10,0x01}; //本地地址 uchar const RX_ADDRESS[RX_ADR_WIDTH]= {0x34,0x43,0x10,0x10,0x01}; //接收地址 //***************************************NRF24L01寄存器指令*******************************************************

相关文档
相关文档 最新文档