无线收发系统设计概述.docx

上传人:b****6 文档编号:15678890 上传时间:2023-07-06 格式:DOCX 页数:28 大小:389.76KB
下载 相关 举报
无线收发系统设计概述.docx_第1页
第1页 / 共28页
无线收发系统设计概述.docx_第2页
第2页 / 共28页
无线收发系统设计概述.docx_第3页
第3页 / 共28页
无线收发系统设计概述.docx_第4页
第4页 / 共28页
无线收发系统设计概述.docx_第5页
第5页 / 共28页
无线收发系统设计概述.docx_第6页
第6页 / 共28页
无线收发系统设计概述.docx_第7页
第7页 / 共28页
无线收发系统设计概述.docx_第8页
第8页 / 共28页
无线收发系统设计概述.docx_第9页
第9页 / 共28页
无线收发系统设计概述.docx_第10页
第10页 / 共28页
无线收发系统设计概述.docx_第11页
第11页 / 共28页
无线收发系统设计概述.docx_第12页
第12页 / 共28页
无线收发系统设计概述.docx_第13页
第13页 / 共28页
无线收发系统设计概述.docx_第14页
第14页 / 共28页
无线收发系统设计概述.docx_第15页
第15页 / 共28页
无线收发系统设计概述.docx_第16页
第16页 / 共28页
无线收发系统设计概述.docx_第17页
第17页 / 共28页
无线收发系统设计概述.docx_第18页
第18页 / 共28页
无线收发系统设计概述.docx_第19页
第19页 / 共28页
无线收发系统设计概述.docx_第20页
第20页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

无线收发系统设计概述.docx

《无线收发系统设计概述.docx》由会员分享,可在线阅读,更多相关《无线收发系统设计概述.docx(28页珍藏版)》请在冰点文库上搜索。

无线收发系统设计概述.docx

无线收发系统设计概述

nRF2401无线收发系统设计

一实验目的

培养基本实验能力和工程实践能力,通过实验锻炼基本实验技能,使同学们掌握单片机的基本工作原理和单片机系统应用设计的技能,掌握单片机的简单编程方法以及调试方法,并能应用于电子系统设计中,提高同学们对综合电子系统的设计能力,加深对无线通信系统理论知识的理解,增强工程实践能力,培养创新意识,提高分析问题和解决问题的能力。

二实验基本要求

(1)正确使用电子仪器;

(2)根据项目设计要求能够进行单片机系统硬件电路设计和软件编程;

(3)学会查阅接口电路手册和相关技术资料;

(4)具有初步的单片机电路硬件和软件分析、寻找和排除常见故障的能力;

(5)正确地记录实验数据和写实验报告。

三实验器材

万能板、单片机、nRF2401无线收发模块、液晶屏、晶振、按键、发光二级管、开关、电容、电阻、5V电源适配器、导线、万用表、电烙铁、焊锡。

四GFSK调制解调原理

4.1调制

频移键控方式,幅度恒定不变的载波信号频率随着调制信号的信息状态而切换,通常采用的是二进制频移键控,即载波信号频率随着数据信息码的“0”、“1”变化进行切换。

根据频率变化影响发射波形的方式,FSK信号在相邻的比特之间,呈现连续的相位或不连续的相位。

一种常见的二进制FSK信号产生方法是根据数据比特码是“0”还是“1”,在两个振荡频率分别为

的振荡器间切换,这种FSK信号的表达式为:

(二进制1)

(二进制0)

分别代表载波信号频率和恒定频率偏移,而

分别表示单比特能量和比特周期。

这种方法产生的波形在比特码“0”,“1”切换时刻是不连续的,这种不连续的相位会造成诸如频谱扩展和传输差错等问题,信号的功率谱密度函数按照频率偏移的负二次幂衰落,在无线系统中一般不采用这种FSK信号,而是使用信号波形对单一载波振荡器进行调制,这样FSK信号可以表示如下:

上式中,

是频率调制系数,定义为

为比特率,尽管调制波形

在“0”和“1”比特间转换时不连续,但是相位函数

是与

的积分成比例,所以是连续的,大部分信号能量集中在以载波频率为中心的主瓣范围,功率谱密度函数按照频率偏移的负四次幂衰减。

为了进一步减小信号的频谱旁瓣,可以在前加入一级高斯滤波器,高斯滤波器的传递函数为:

,其中:

通过高斯滤波,平缓了输入信号的相位变化,大大压缩了信号频谱的旁瓣。

图1典型的GFSK调制

输入信号

是随机二进制信号形成的双极性方波,方波经高斯滤波器后是:

式中﹡号表示线性卷积运算,矩形脉冲定义为:

通过数学推导,得到的表达式可表示为:

式中Q定义为:

连续相位通过频率调制产生为:

式中h是调制指数;

是对

离散时间采样。

4.2解调

尽管高斯滤波器减小了发送GFSK信号对带宽的需求,但是以接收端得到符号间干扰为代价的。

GFSK是频率调制信号,所以采用鉴相和鉴频的方法来解调。

令:

是引入码间干扰的

,基带同相和正交成分分别表示为:

基带信号的相位可以通过:

计算。

在输出端可以通过:

获得数字信号

图2典型的GFSK解调

五主要器件介绍

5.151单片机

引脚功能:

MCS-51是标准的40引脚双列直插式集成电路芯片,引脚分布请参照——单片机引脚图:

P0.0~P0.7P0口8位双向口线(在引脚的39~32号端子)。

P1.0~P1.7P1口8位双向口线(在引脚的1~8号端子)。

P2.0~P2.7P2口8位双向口线(在引脚的21~28号端子)。

P3.0~P3.7P3口8位双向口线(在引脚的10~17号端子)。

P0口有三个功能:

1、外部扩展存储器时,当作数据总线(如图1中的D0~D7为数据总线接口)

2、外部扩展存储器时,当作地址总线(如图1中的A0~A7为地址总线接口)

3、不扩展时,可做一般的I/O使用,但内部无上拉电阻,作为输入或输出时应在外部接上拉电阻。

P1口只做I/O口使用,其内部有上拉电阻。

P2口有两个功能:

1、扩展外部存储器时,当作地址总线使用

2、做一般I/O口使用,其内部有上拉电阻;

P3口有两个功能:

除了作为I/O使用外(其内部有上拉电阻),还有一些特殊功能,由特殊寄存器来设置。

有内部EPROM的单片机芯片(例如8751),为写入程序需提供专门的编程脉冲和编程电源,这些信号也是由信号引脚的形式提供的。

即:

编程脉冲:

30脚(ALE/PROG)

编程电压(25V):

31脚(EA/Vpp)

ALE/PROG地址锁存控制信号:

在系统扩展时,ALE用于控制把P0口的输出低8位地址送锁存器锁存起来,以实现低位地址和数据的隔离。

当CPU对外部进行存取时,用以锁住地址的低位地址,即P0口输出。

ALE有可能是高电平也有可能是低电平,当ALE是高电平时,允许地址锁存信号,当访问外部存储器时,ALE信号负跳变(即由正变负)将P0口上低8位地址信号送入锁存器。

当ALE是低电平时,P0口上的内容和锁存器输出一致。

关于锁存器的内容,我们稍后也会介绍。

在8051单片机内部有一个4KB或8KB的程序存储器(ROM),ROM的作用就是用来存放用户需要执行的程序的,那么我们是怎样把编写好的程序存入进这个ROM中的呢?

实际上是通过编程脉冲输入才能写进去的,这个脉冲的输入端口就是PROG。

PSEN外部程序存储器读选通信号:

在读外部ROM时PSEN低电平有效,以实现外部ROM单元的读操作。

1、内部ROM读取时,PSEN不动作;

2、外部ROM读取时,在每个机器周期会动作两次;

3、外部RAM读取时,两个PSEN脉冲被跳过不会输出;

4、外接ROM时,与ROM的OE脚相接。

EA/VPP访问和序存储器控制信号:

1、接高电平时:

CPU读取内部程序存储器(ROM)

扩展外部ROM:

当读取内部程序存储器超过0FFFH(8051)1FFFH(8052)时自动读取外部ROM。

2、接低电平时:

CPU读取外部程序存储器(ROM)。

在前面的学习中我们已知道,8031单片机内部是没有ROM的,那么在应用8031单片机时,这个脚是一直接低电平的。

RST复位信号:

当输入的信号连续2个机器周期以上高电平时即为有效,用以完成单片机的复位初始化操作,当复位后程序计数器PC=0000H,即复位后将从程序存储器的0000H单元读取第一条指令码。

XTAL1和XTAL2:

外接晶振引脚。

当使用芯片内部时钟时,此二引脚用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。

5.2无线通信模块nRF24L01+

nRF24L01+是一款工作在2.4~2.5GHz世界通用ISM频段的单片无线收发器芯片。

无线收发器包括:

频率发生器、增强型SchockBurst模式控制器、功率放大器、晶体管振荡器调制器、解调器。

输出功率频道选择和协议的设置可以通过SPI接口进行设置。

极低的电流消耗,当工作在发射模式下发射功率为0dBm时电流消耗为11.3mA,接收模式为13.5mA,掉电模式和待机模式下电流消耗更低。

nRF24L01+适用于多种无线通信的场合,如无线数据传输系统、无线鼠标、遥控开锁、遥控玩具等。

模块特点

(1)2.4~2.5GHz全球免申请ISM工作频段。



(2)125个通讯频道,满足多点通讯、分组、跳频等应用需求。



(3)发射功率可设置为:

0dBm、-6dBm、-12dBm和-18dBm。



(4)实际发射功率≥0dBm(设置为0dBm时测试得出)。



(5)SMA接口,可方便连接同轴电缆或外置天线。



SMA接口:

微波高频连接器,最高频率为18GHz。

(6)通过SPI(行外设接口)接口与MCU连接,速率0~8Mbps。

(7)支持2Mbps、1Mbps和250kbps传输速率。



(8)增强型ShockBurstTM传输模式,完全兼容nRF2401A、nRF24L01等芯片。

(9)支持自动应答及自动重发,内置地址及CRC数据校验功能。



(10)工作电压范围:

1.9V~3.6V,待机模式下电流低于1μA。

(11)工作温度范围:

-40℃~+85℃

CE:

使能发射或接收;

CSN、SCK、MOSI、MISO:

SPI引脚端,微处理器可通过此脚配置nRF24L01;

IRQ:

中断标志位;

VDD:

电源输入端;

VSS:

地;

XC2、XC1:

晶体振荡器引脚;

VDD_PA:

为功率放大器供电,输出为1.8V;

ANT1、ANT2:

天线接口;

IREF:

参考电流输入。

模块上的引脚定义,与外部连接信号只有8个。

引脚

a

b

c

d

e

f

g

h

名称

VCC

CE

CSN

CLK

MOSI

MISO

IRQ

GND

5.2.1天线

鞭状天线是一种可弯曲的垂直杆状天线,其长度一般为1/4或1/2波长。

可用于小型通信机、步谈机、汽车收音机等,军用电台等。

该实验仅用到了通道1,因为通道1的DATA引脚是双向的数字I/O口,已经满足要求,通道2的DOUT只能在接收模式中使用,为单向数字输出口。

其中PWR_UP、CE、CS三个引脚控制着nRF2401的四种工作模式:

收发模式、配置模式、空闲模式、关断模式。

工作模式

PWR_UP

CE

CS

收发模式

1

1

0

配置模式

1

0

1

空闲模式

1

0

0

关断模式

0

*

*

5.2.2状态字设置

位置

个数

名称

功能

143-120

24

TEXT

测试保留

119-112

8

DATA2_W

通道2数据段长度

111-104

8

DATA1_W

通道1数据段长度

103-64

40

ADDR2

通道2硬件地址

63-24

40

ADDR1

通道1硬件地址

23-18

6

ADDR_W

地址段长度

17

1

CRC_L

检验段长度,值为1时16bit,0时8bit

16

1

CRC_EN

检验使能,值为1时检验有效,0时无效

15

1

RX2_EN

启用通道数,值为1时两通道,0时单通道

14

1

CM

通信模式,值为1时突发模式,0时直接传递模式

13

1

RFDR_SB

通信速率,值为1时1kbit/s,0时250kbit/s

12-10

3

XO_F

晶振频率,值为011时16MHz

9-8

2

RF_PWR

输出功率,值为11

7-1

7

RF_CH#

工作频率

0

1

RXEN

工作状态,值为1时表示接收,1为发送

5.3显示屏

引脚

名称

方向

功能

1

VSS

I

电源地

2

VDD

I

电源电压5V

3

VO

O

LCD驱动电压(可调,一般0.8V)

4

RS

I

RS=0,选择指令寄存器;RS=1,数据寄存器

5

R/W

I

R/W=0,写操作;R/W=1,读操作;

6

E

I

写操作时,信号下降沿有效;读操作高电平有效

7

DB0

I/O

数据口0

8

DB1

I/O

数据口1

9

DB2

I/O

数据口2

10

DB3

I/O

数据口3

11

DB4

I/O

数据口4

12

DB5

I/O

数据口5

13

DB6

I/O

数据口6

14

DB7

I/O

数据口7

15

LED+

I

背光电源正

16

LED-

I

背光电源地

状态字由RS、R/W、DB7~DB0写入,包括清屏、光标归位、设置输入模式、显示开/关控制、光标或显示移位、功能设置、地址设置、写数据、读数据。

具体参照文档。

六工作过程

(1)单片机对自身、nRF24L01+、显示屏进行初始化配置

设置CS高、CE低,使nRF24L01+进入编程模式,nRF24L01+的DATA引脚为输入状态,配置数据写入。

(2)单片机向nRF24L01+发送数据

设置CE高,使nRF24L01+进入TX模式,nRF24L01+的DATA为输入状态,并通过它输出数据到TXFIFO,之后设置CE低,开始传输。

(3)单片机通过nRF24L01+读取数据

七程序

#include"STC89.H"//STC89系列单片机头文件

#include"Type.h"//数据类型声明头文件

#include"LCD1602.h"//字符型液晶屏头文件

#include"Board.h"//LED、按键和蜂鸣器引脚定义头文件

#include"nRF24L01P.h"//nRF24L01+无线数传模块驱动头文件

uint8key_down=0;//按键按下标志.为0时代表没有按键按下,为1时代表已有按键按下.

uint8key_code=0;//按键编号,为0时无按键按下.

 

voidKey_Send(void)

{

key_code=0;

if(KEY1==KEY_DOWN){key_code+=1;}//根据按键状态设置按键编号标志

if(KEY2==KEY_DOWN){key_code+=2;}

if(KEY3==KEY_DOWN){key_code+=3;}

if(KEY4==KEY_DOWN){key_code+=4;}

if(key_code==0){//key_code=0,说明未有按键按下

if(key_down==1){key_down=0;}

}else{//key_code!

=0,说明已有按键按下

if(key_down==0){//key_down=0,之前没有按键按下

key_down=1;//设置按键状态标志

n1P_TX_Buff[3]=key_code+'0';//将按键代码转换为ASCII字符后存入TX缓存数组

n1P_TX_Buff[4]='0';//设置标志为"发送按键信息"

LCD_Print_String(0,1,"Key-SendErr");//提前显示按键信息发送失败信息

LCD_Print_Char(5,1,n1P_TX_Buff[3]);//显示本机按键代码

LED3=LED_ON;

n1P_Turn_TX(n1P_TX_Buff);//发送按键代码信息

LED3=LED_OFF;

}

}

}

voidKey_Rece(void)

{

if(n1P_RX_Buff[4]=='0'){//接收到的数据为对方设备发送的按键信息

LCD_Print_String(0,1,"Key-Received");//显示从对方设备接收到的按键信息

LCD_Print_Char(5,1,n1P_RX_Buff[3]);//显示从对方设备接收到的按键代码

n1P_TX_Buff[3]=n1P_RX_Buff[3];

n1P_TX_Buff[4]='1';//设置标志为"接收按键信息成功"

LED3=LED_ON;

n1P_Turn_TX(n1P_TX_Buff);//切换nRF24L01(+)为发送模式,并发送"接收成功"信息,发送结束后返回接收模式

LED3=LED_OFF;

}else{//接收到的数据为对方设备返回的接收正确信息

LCD_Print_String(0,1,"Key-SendOK!

");//显示对方接收按键信息成功信息

LCD_Print_Char(5,1,n1P_RX_Buff[3]);//显示对方接收到的按键代码

}

}

voidmain(void)

{

LCD_Init_Dev();//初始化LCD.清屏、设置工作方式等。

LCD_Cls();//清屏

LCD_Print_String(0,0,"NOVATEnRF24L01+");//显示字符

LCD_Print_String(0,1,"PressAnyKey");//显示字符

LED1=LED_OFF;LED2=LED_OFF;LED3=LED_OFF;//熄灭全部指示灯,完成上电程序部分

n1P_Init_IO();//初始化nRF24L01(+)模块IO

n1P_Turn_RX();//初始化nRF24L01(+),并将其设置为接收模式

while

(1){

if(n1P_Check_IRQ(n1P_RX_Buff)){//检查IRQ引脚状态

Key_Rece();//接收处理

}

Key_Send();//检测按键

}

}

#include"STC89.H"

#include"Type.h"

#include"LCD1602.h"

#defineLCD_Dly_Dat6//等待数据建立时间,实测STC89C52RC外部晶振11.0592MHz时需>=4.

//函数:

LCD_Soft_Dly()

//描述:

软件延时

//参数:

dly延时时间

voidLCD_Soft_Dly(uint16dly)

{

uint16i;

for(;dly>0;dly--)for(i=0;i<10;i++);

}

//函数:

LCD_Init_IO()

//描述:

初始化IO

//参数:

voidLCD_Init_IO(void)

{

LPin_E=0;//E置低,设备禁用

LPin_RS=0;//RS置低,切换到命令字操作模式

LPin_RW=0;//RW置低,切换到写入模式

LPin_BLED=0;//关闭背光

}

//函数:

LCD_Wait_Busy()

//描述:

等待LCD空闲,只有在空闲状态下方可对LCD进行操作

//参数:

voidLCD_Wait_Busy(void)

{

uint8isbusy=0,dly=0;

for(dly=250;dly>0;dly--){//指定最大超时时间,防止死循环

LPin_RS=0;//RS置低,切换到命令字操作模式

LPin_RW=1;//RW置高,切换到读取模式

LPin_E=1;//E置高,开始操作(读取操作时为高电平有效)

LCD_Soft_Dly(LCD_Dly_Dat);//等待数据建立

isbusy=LPin_DB;//读取忙标志(bit7=Busy)和当前指针(bit6:

0=AC)

LPin_E=0;//E置低,结束操作

if(isbusy<0x80)break;//bit7=0=空闲,退出等待

}

}

//函数:

LCD_W_Reg()

//描述:

写LCD寄存器

//参数:

dat待写入的数据

voidLCD_W_Reg(uint8dat)

{

LCD_Wait_Busy();//等待空闲

LPin_RS=0;//RS置低,切换到命令字操作模式

LPin_RW=0;//RW置低,切换到写入模式

LPin_E=1;//E置高,开始操作

LPin_DB=dat;//将数据输出到数据线上

LCD_Soft_Dly(LCD_Dly_Dat);//等待数据建立

LPin_E=0;//E置低,完成操作(写入操作时为下降沿有效)

}

//函数:

LCD_W_Byte()

//描述:

向LCD写入1byte数据

//参数:

dat待写入的数据

voidLCD_W_Byte(uint8dat)

{

LCD_Wait_Busy();//等待空闲

LPin_RS=1;//RS置高,切换到数据操作模式

LPin_RW=0;//RW置低,切换到写入模式

LPin_E=1;//E置高,开始操作

LPin_DB=dat;//将数据输出到数据线上

LCD_Soft_Dly(LCD_Dly_Dat);//等待数据建立

LPin_E=0;//E置低,完成操作(写入操作时为下降沿有效)

}

//函数:

LCD_Init_Dev()

//描述:

LCD复位,注意该操作有固定顺序

//参数:

voidLCD_Init_Dev(void)

{

LCD_Init_IO();

LCD_W_Reg(0x38);

LCD_Soft_Dly(500);//等待约5ms

LCD_W_Reg(0x38);

LCD_Soft_Dly(500);

LCD_W_Reg(0x30);

LCD_Soft_Dly(500);

LCD_W_Reg(0x38);//8位数据总线宽度,两行字符,5x7点阵

LCD_W_Reg(0x08);//显示关,光标不显示,光标不闪烁

LCD_W_Reg(0x01);//清屏

LCD_W_Reg(0x06);//显示光标右移,画面不滚动

LCD_W_Reg(0x0C);//显示开,光标不显示,光标不闪烁

}

//函数:

LCD_Cls()

//描述:

显示清屏

//参数:

voidLCD_Cls(void)

{

LCD_W_Reg(0x01);//清屏

}

//函数:

LCD_Set_Coor()

//描述:

指定显示坐标

//参数:

x列坐标(1602为0至15)

//y行坐标(1602为0至1)

voidLCD_Set_Coor(uint8x,uint8y)

{

if(y){x+=0x40;}//在第二行的显示数据时,地址偏移0x40

x+=0x80;//计算DDRAM地址(DisplayDataRAM)

LCD_W_Reg(x);//写AC(AddressCounter)到DDRAM地址

}

//函数:

LCD_Print_Char()

//描述:

在指定位置显示一个字符

//参数:

x列坐标(1602为0至15)

//y行坐标(1602为0

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2