天津理工大学2015届本科毕业设计说明书
那个信号直到发送的次数达到峰值,此时MAX_RT寄存器变成高电压,导致IRQ变成低电压,中断触发,通知STC。
发射模块流程图可由图4.3所表示:
图4.3 发射流程图
4.3.2 发射程序
首先是设置发送模式:
(1) 该函数初始化NRF24L01到TX模式
(2) 设置TX地址,写TX数据宽度,设置RX自动应答的地址,填充TX发送数据,选
择RF频道,波特率 (3) PWR_UP,CRC使能
(4) CE为高大于10us,则启动发送
void TX_Mode(void) {
22
天津理工大学2015届本科毕业设计说明书
NRF24L01_CE=0;
NRF24L01_Write_Reg(FLUSH_TX,0xff);//清除TX FIFO寄存器
NRF24L01_Write_Buf(WRITE_REG+TX_ADDR,(u8*)TX_ADDRESS,TX_ADR_WIDTH);//写TX节点地址
NRF24L01_Write_Buf(WRITE_REG+RX_ADDR_P0,(u8*)RX_ADDRESS,RX_ADR_WIDTH);//设置TX节点地址,主要为了使能ACK
NRF24L01_Write_Reg(WRITE_REG+EN_AA,0x01); //使能通道0的自动应答 NRF24L01_Write_Reg(WRITE_REG+EN_RXADDR,0x01); //使能通道0的接收地址 NRF24L01_Write_Reg(WRITE_REG+SETUP_RETR,0x1a);//设置自动重发间隔时间:500us + 86us;最大自动重发次数:10次
NRF24L01_Write_Reg(WRITE_REG+RF_CH,40); //设置RF通道为40 NRF24L01_Write_Reg(WRITE_REG+RF_SETUP,0x0f); //设置TX发射参数,0db增益,2Mbps,低噪声增益开启
NRF24L01_Write_Reg(WRITE_REG+CONFIG,0x0e); //配置基本工作模式的参数;PWR_UP,EN_CRC,16BIT_CRC,接收模式,开启所有中断
NRF24L01_CE=1;//CE为高,10us后启动发送 }
4.4 接收模块的系统设计
4.4.1接收模块流程图
车体接收信号时,第一步先将NRF调整为接收方式;第二步当收到无线信号时,把接收到的内容放入RX中,紧接着中断触发,IRQ变成低电压,让STC去寄存器中拿。如果与此同时打开了自动回答模式,接收模块就会把发射内容把信息转回到发射站台。最终完成信号的接收。
接收模块流程图可由图4.4所表示:
23
天津理工大学2015届本科毕业设计说明书
图4.4 接收数据流程图
4.4.2接收程序
发送模式下可以不设置发射的有效数据宽度,但接收模式一定要有。该芯片有6个通道,但其中写入到2,3,4,5通道地址的时候,无论你写多少个进去,它只识别最后一个。所以该地址宽度代码为:
const u8 TX_ADDRESS[TX_ADR_WIDTH]={0xe7,0xe7,0xe7,0xe7,0xe7}; //发送地址 const u8 RX_ADDRESS [RX_ADR_WIDTH]={0x01,0x01,0xc2,0xc2,0xc2}; //接收0通道地址
const u8 RX_ADDRESS1[RX_ADR_WIDTH]={0x02,0x01,0xc2,0xc2,0xc2}; //接收1通道地址
const u8 RX_ADDRESS2[RX_ADR_WIDTH]={0x03}; //接收2通道地址 const u8 RX_ADDRESS3[RX_ADR_WIDTH]={0x04}; //接收3通道地址 const u8 RX_ADDRESS4[RX_ADR_WIDTH]={0x05}; //接收4通道地址 const u8 RX_ADDRESS5[RX_ADR_WIDTH]={0x06}; //接收5通道地址
24
天津理工大学2015届本科毕业设计说明书
然后设置接收模式:
(1) 该函数初始化NRF24L01到RX模式
(2) 设置RX地址,写RX数据宽度,选择RF频道,波特率 (3) 当CE变高后即进入RX模式,并可以接收数据
void RX_Mode(void) {
NRF24L01_CE=0;
NRF24L01_Write_Reg(FLUSH_RX,0xff);//清除TX FIFO寄存器
NRF24L01_Write_Buf(WRITE_REG+RX_ADDR_P0,(u8*)RX_ADDRESS,RX_ADR_WIDTH);//写RX节点地址
NRF24L01_Write_Buf(WRITE_REG+RX_ADDR_P1,(u8*)RX_ADDRESS1,RX_ADR_WIDTH);//写RX节点地址
NRF24L01_Write_Buf(WRITE_REG+RX_ADDR_P2,(u8*)RX_ADDRESS2,1);//写RX节点地址
NRF24L01_Write_Buf(WRITE_REG+RX_ADDR_P3,(u8*)RX_ADDRESS3,1); NRF24L01_Write_Buf(WRITE_REG+RX_ADDR_P4,(u8*)RX_ADDRESS4,1); NRF24L01_Write_Buf(WRITE_REG+RX_ADDR_P5,(u8*)RX_ADDRESS5,1); NRF24L01_Write_Reg(WRITE_REG+EN_AA,0x3f); //使能通道0的自动应答 NRF24L01_Write_Reg(WRITE_REG+EN_RXADDR,0x3f);//使能通道0-5的接收地址 NRF24L01_Write_Reg(WRITE_REG+RF_CH,40); //设置RF通信频率
NRF24L01_Write_Reg(WRITE_REG+RX_PW_P0,RX_PLOAD_WIDTH);//选择通道0的有效数据宽度
NRF24L01_Write_Reg(WRITE_REG+RX_PW_P1,RX_PLOAD_WIDTH); NRF24L01_Write_Reg(WRITE_REG+RX_PW_P2,RX_PLOAD_WIDTH); NRF24L01_Write_Reg(WRITE_REG+RX_PW_P3,RX_PLOAD_WIDTH); NRF24L01_Write_Reg(WRITE_REG+RX_PW_P4,RX_PLOAD_WIDTH); NRF24L01_Write_Reg(WRITE_REG+RX_PW_P5,RX_PLOAD_WIDTH); NRF24L01_Write_Reg(WRITE_REG+RF_SETUP,0x0f);//设置TX发射参数,0db增益,2Mbps,低噪声增益开启
NRF24L01_Write_Reg(WRITE_REG+CONFIG, 0x0f);//配置基本工作模式的参数;PWR_UP,EN_CRC,16BIT_CRC,接收模式 NRF24L01_CE = 1; //CE为高,进入接收模式 }
25
天津理工大学2015届本科毕业设计说明书
4.5 软件简介
4.5.1 Keil软件
Keil是由德国的Keil Elektronik GmbH和美国的Keil Software组成的一家公司。Keil分为Keil MDK与Keil C51两种软件,目前流行的还是51的开发软件Keil C51,这个软件支持几种编程语言,操作简单。Keil提供了一个功能强大的仿真器,其中包含宏编译、连接器、C编译器等,通过一个集成开发环境组合起来,并且Keil能在Windows操作系统下运行,很方便。
Keil C51 强大的功能能够进行交叉编译、连接、调试、仿真等操作,此软件操作简单,非常受欢迎。开发人员可以用C语言或者汇编语言进行编程,接下来利用编译器生成文件(.obj),然后再将目标文件转换成绝对目标文件(.abs),最后绝对目标文件有OH51转换成hex文件,用来仿真或者是烧录。使用Keil仿真器应注意仿真器上的晶振可由用户的需求更换其他频率的晶振,仿真器上的复位按钮是复位芯片。
Keil C51的优点是它生产目标代码速度之快,在开发软件时高级语言在功能上、结构上、可读性上体现出了很大的优势。
下面介绍下该软件的使用方法:
第一步先在点击工程选项,选择新建工程,这时会弹出一个保存窗口,保存文件名自拟,然后点击保存在新建的文件夹中。保存完成后会弹出让你选择哪种CPU,这时选择自己需要的CPU点击确定,这时一个新的工程就建立完毕了。
第二步建立一个新的文件,打开文件新建文件后,点击保存按钮此时会出现对话框,这时在文件名后要加上.C后缀,点击保存。之后再右键点击工程组添加文件,点击确定,一个新的文件就建立完成了。如下面的图4.5所表达:
图4.5 建立一个工程
26
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库基于单片机的车站自动报站系统设计(6)在线全文阅读。
相关推荐: