沈阳航空航天大学电子信息工程学院毕业设计(论文)
别与接收端单片机的P1口的一些管脚相连。无线发射电路如图3.14所示,无线接收电路如图3.15所示。
图3.14 无线发射电路
图3.15 无线接收电路
- 21 -
沈阳航空航天大学电子信息工程学院毕业设计(论文)
发射数据时,nRF24L01无线发射模块采用GFSK调制方式,即高斯频移键控调制方式。首先将nRF24L01配置为发射模式,接着把接收节点地址TX_ADDR和有效数TX_PLD按照时序由SPI口写入nRF24L01缓存区,TX_PLD必须在CSN为低时连续写入,而TX_ADDR在发射时写入一次即可,然后CE置为高电平并保持至少10μs,延迟130μs后发射数据;若自动应答开启,那么nRF24L01在发射数据后立即进入接收模式,接收应答信号。如果收到应答,则认为此次通信成功,TX_DS置高,同时TX_PLD从TX FIFO中清除;若未收到应答,则自动重新发射该数据,最后发射成功时,若CE为低则nRF24L01进入空闲模式1;若发送堆栈中有数据且CE为高,则进入下一次发射;若发送堆栈中无数据且CE为高,则进入空闲模式2,完成对数据的发射。
接收数据时,首先将nRF24L01配置为接收模式,接着延迟130μs进入接收状态等待数据的到来。当接收方检测到有效的地址和CRC时,就将数据包存储在RX FIFO中,同时中断标志位RX_DR置高,IRQ变低,产生中断,通知MCU去取数据。若此时自动应答开启,接收方则同时进入发射状态回传应答信号。最后接收成功时,若CE变低,则nRF24L01进入空闲模式1,完成对数据的接收。
这样,无线收发电路完成对数据的发射和接收。
3.6 键控电路
此系统的作用是测试和监控空气的湿度、温度和光照强度,因此,需要手动设置这三量的上限和下限。此键控电路是给单片机连接一个外部中断,当外部中断0口低电平时,即S2闭合,主程序停止,执行中断程序,这时由三个开关分别控制三个采集量的选择,S3闭合则开始预置湿度的上下限,S4闭合则开始预置温度的上下限,S5闭合则开始预置光照强度的上下限。当选择好即将预置的采集量后,这时当S6接高电平时,开始设置预置量的上限,接低电平时,则开始设置预置量的下限。S7是控制显示器的十位,按下则十位加一,一下一下的加,加到10则自动变为0,S8是控制显示器的个位,按下则个位加一,同样也是一下一下的加,加到10也会自动变为0,这样就完成了手动预置的操作。设置完毕后,将S2断开,中断程序停止,系统继续执行主程序,即数码管继续循环显示此时所测大气的湿度、温度和光照强度,键控电路如图3.16所示。
- 22 -
沈阳航空航天大学电子信息工程学院毕业设计(论文)
图3.16 键控电路
3.7 声光报警电路
此电路部分是为了方便工作人员监控湿度而设计的,该部分电路是由一个单片机、一个发光二极管、一个三极管和一个蜂鸣器组成,和单片机连接的支路上串联1K电阻。当此时空气的湿度、温度和光照强度的任意一个值低于所设置的下限值或高于所设置的上限值时,启动声光报警电路,二极管会发光,蜂鸣器会响。当空气湿度、温度和光照强度在正常范围之内时,不会此启动声光报警电路,声光报警电路如图3.17所示。
图3.17 声光报警电路
- 23 -
沈阳航空航天大学电子信息工程学院毕业设计(论文)
当三个采集量有不在所设定的上下限范围之内时,单片机和蜂鸣器、发光二极管连接的管脚分别置1,这样三极管基级就有小电流,会使发射结正偏,三极管的集电极接电源,所以会使集电结反偏,三极管导通,驱动蜂鸣器工作。而放光二极管正向导通,会发光。这样声光报警电路就会工作了。
- 24 -
沈阳航空航天大学电子信息工程学院毕业设计(论文)
第4章 软件系统的设计
系统软件设计也就是程序设计,就是在完成了硬件系统的基础上,再编写相应的程序,下载到芯片里,通过执行程序指令控制硬件,从而实现各部分功能。在本设计中,软件编程方面采用C语言对单片机进行编程,并使用KeiLC51系统进行软件调试。Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。
Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。掌握这一软件的使用方法对于使用51系列单片机的使用者来说是十分必要的。
早期的单片机程序多采用汇编语言编写。用汇编语言编程,直接、简捷,可有效地访问和控制各种硬件设备,如存储器、I/O 口等,目标代码简短、占用内存少、执行速度快、语句效率高。然而,由于汇编语言是面向机器的语言,不同厂家或同厂家不同系列的单片机,其汇编语言指令系统往往互不相同,即通常所说的“不兼容”。这就出现了精通51单片机汇编语言的人不能直接编写PIC 或其他单片机的汇编语言源程序,反之亦然的现象,以及产品升级换代和不同单片机间程序移植难的问题。而且,由于汇编语言是采用助记符的低级语言,可读性较差,当源程序功能多、程序长时,即使加了注释,阅读自己编写的程序也会感到困难,更不用说修改程序和增加功能了。目前,单片机的应用越来越广,各半导体生产厂家不断推出各种高、中、低档单片机系列,以适应市场的需求。而客户对单片机系统的设计人员的基本要求,就是要选择能够满足产品性能和成本要求的单片机,并以最快的速度开发出完全满足市场需求的智能化产品。用汇编语言编程显然无法达到要求。用C 语言开发单片机系统软件的最大好处,是代码效率高、软件调试直观、维护升级方便、代码的重复利用率高、便于跨平台的代码移植等。因此,C 语言在单片机系统设计中得到越来越广泛的运用。C 语言是一种高级语言,具有低级语言的特点,原来用各种汇编语言编写
- 25 -