NRF24L01的工作模式由TRX_CE、TX_EN、PWR_UP三个引脚决定。三个引脚决定其工作方式的具体方式见下表。
表2 nRF905的工作模式
PWR_UP 0 1 1 1 TRX_CE X 0 1 1 TX_EN X X 0 1 工作模式 掉电和SPI编程 Standby和SPI编程 ShockBurstEX ShockBurst TX 与射频数据包有关的高速信号处理都在NRF24L01片内进行,微控制器配置的SPI接口决定数据速率。数据在NRF24L01中高速传送,在微控制器中低速处理。因此中间有很长时间的空闲,这很有利于节能。
由于NRF24L01工作于ShockBurstTM模式,因此使用低速的微控制器也能得到很高的射频数据发射速率。在ShockBurstTM接收模式下,当一个包含正确地址和数据的数据包被接收到后,地址匹配(AM)和数据准备好(DR)两引脚通知微控制器。
2.3 单片机的选择
STC89S52是一种低功耗,高性能CMOS 8位微控制器,具有8K在系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造。与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89S52在众多嵌入式控制应用系统中得到广泛应用。STC89S52具有以下标准功能:8k字节Flash,256字节RAM,看门狗定时器,三个16位定时器/计数器,32 位I/O口线,一个6向量2级中断结构,2个数据指针,全双工串行口,片内晶振及时钟电路。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机工作停止,直到下一个中断或硬件复位为止。
STC89S52是片内有ROM/EPROM的单片机,当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。用AT单片机构成最小系统时,只要将单片机接上时钟电路和复位电路即可,如图 STC89S52单片机最小系统所示。由于集成度的限制,单片机最小应用系统只能作一些小型的控制单元。其应用特点:?有可供用户使用的大量I/O口线; ?内部存储器容量有限;?应用系统开发具有特殊性。
5
无线温度湿度采集系统的设计
STC89S52的复位是由外部的复位电路实现的。复位引脚RST通过一个斯密特触发器来抑制噪声,在每个机器周期的S5P2,斯密特触发器的输出电平由复位电路采样一次,然后才能得到内部复位操作所需要的信号。
STC89S52虽然有内部振荡电路,但要形成时钟,必须外部附加电路。AT89S52单片机的时钟产生方法有两种,一种是内部方式,利用时钟内部的振荡电路产生;另
一种是外部方式,时钟信号由外部引入。
本设计采用内部时钟方式,利用芯片内部的振荡电路,在XTAL1、XTAL2引脚上外接定时元件,内部的振荡电路便产生自激振荡。本设计采用最常用的内部时钟方式,即用外接晶体和电容组成的并联谐振电路。振荡晶体可以在1.2MHZ到24MHZ之间选择,常用的晶振频率有6MHZ、12MHZ和11.0592MHZ。电容CX1和CX2主要是帮助起振,称为谐振电容,电容值无严格要求,但电容的取值对振荡频率输出的稳定性、大小、振荡电路起振速度有少许影响,CX1、CX2可在20pF到100pF之间取值,当时钟频率为12MHZ时典型值为22pF。所以本设计中振荡晶体采用12MHZ,电容选择22pF。
图2 单片机最
小系统
2.4显示模块的选择
显示器可以选择数码管显示或者液晶显示。数码管按段数分为七段数码管和八段数码管,起驱动方式分别为静态驱动和动态驱动,静态驱动编程简单,显示亮度高但是占用I/O端口多,增加了硬件电路的复杂性。动态电路是最广泛
6
的显示方式之一,其能够节省大量的I/O端口,功耗低。但是,针对数码管,其显示单调不具备数据的直观性。
LCD1602液晶显示,具有字符发生器ROM可以显示192种字符。具有64个字节的自定义字符RAM,可自定义8个5′8点阵字符或四个5′11点阵字符。具有80个字节的RAM,标准的接口特性,适配M6800系列MPU的操作时序。模块结构紧凑、轻巧、装配容易,像素尺寸小,分辨率高。
考虑到以上情况,显示终端选择LCD1602,它能把温湿度直观的显示出来,设计起来简洁明了,大大降低了系统的复杂性。
LCD1602各个引脚的说明及作用为 第一脚:VSS为接地电源。 第二脚:VDD接5V正电源。
第三脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“幻影”,使用时可以通过一个可调电位器调整对比度。
第四脚:RS为寄存器选择,高电平时为数据寄存器、低电平时为指令寄存器。 第五脚:R/W为读写操作信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。
第六脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令 第七~十四脚:D0~D7为8位双向数据线。 第十五脚:背光源正极。 第十六脚:背光源负极。
表3 LCD1602各个引脚的说明
编号 1 2 3 4 5 6 7 8 符号 VSS VDD VL RS R/W E D0 D1 引脚说明 电源地 电源正极 液晶显示偏压 数据/命令选择 读/写选择 使能信号 数据 数据 编号 9 10 11 12 13 14 15 16 符号 D2 D3 D4 D5 D6 D7 BLA BLK 引脚说明 数据 数据 数据 数据 数据 数据 背光源正极 背光源负极 7
无线温度湿度采集系统的设计
3 硬件电路设计
该采集系统是以STC89S52芯片为主要,利用数字式温湿度传感器DHT10进行收集,将收集数据传给单片机STC89S52,经过处理从无线发送模块NRF24L01发射出去,单片机通过模拟SPI口实现与NRF24L01之间的通信,因为NRF24L01兼具发射和接收功能,经过一定距离的通信,接受模块通过NRF24L01将数据传给STC89S52,单片机经处理后,将数据传给显示屏LCD1602.完成无线数据采集与发送。本设计的重点在于数据如何在各个模块之间传输。
3.1 温湿度采集模块的设计
DHT11温湿度检测模块采用单总线数据传输,DATA引脚与单片机相连,用于MCU与DHTI1之间的数据传输。DATA的状态在串行始终DATA的下降沿之后发生改变,在DATA的上升沿有效。在数据传输期间,当DATA为高电平时,DATA数据线上必须保持稳定状态。为避免数据发生冲突,MCU应该驱动DATA使其处于低电平状态,而外部接一个上拉电阻,将信号拉至高电平。
“000 00101”为相对湿度(RH)测量,“000 00011”为温度(T)测量。发送一组测量命令后控制器要等待测量结束,这个过程大约需要20/80/320 ms,对应其8/12/14位的测量。测量时间随内部晶振的速度而变化,最多能够缩短30 %。
DHT11下拉DATA至低电平而使其进入空闲模式。重新启动SCK时钟读出数据之前,控制器必须等待这个“数据准备好”信号。
接下来传输2个字节的测量数据和1个字节的CRC校验。MCU必须通过拉低DATA来确认每个字节。所有的数据都从MSB开始,至LSB有效。例如对于12位数据,第5个SCK时钟时的数值作为MSB位;而对于8位数据,第1个字节(高8位)数据无意义。
确认CRC数据位之后,通信结束。如果不使用CRC一8校验,控制器可以在测量数据LSB位之后,通过保持ACK位为高电平来结束本次通信。
测量和通信结束后,DHT11自动进入休眠状态模式。
3.2 无线发射接收模块设计
本系统通过数字温湿度传感器DHT11实现温湿度的采集,由单片机STC89S52控制,通过射频芯片NRF24L01进行无线传输和接收NRF24L01提供给应用的微控制器一个SPI接口,速率由微控制器自己设定的接口速度决定。
8
3.2.1 温湿度数据的控制发送
NRF24L01数据的发送过程为
A. 当微控制器有数据要发送时,通过SPI接口,按时序把接收机的地址和要发送的数据送传给NRF24L01,SPI接口的速率在通信协议和器件配置时确定;
B.微控制器通过置高TRX_CE和TX_EN,激发NRF24L01的ShockBurstTM的发送模式;
C.NRF24L01的ShockBurstTM发送数据; 自动开启射频寄存器;
打包数据(加字头和CRC校验码); 发送数据包;
当数据发送完成后,数据准备好引脚被置高;
D.当AUTO_RETRAN被置高,NRF24L01不断重发,直到TRX_CE被置低; E.当TRX_CE被置低,NRF24L01发送过程完成,自动进入空闲模式。
ShockBurstTM工作模式,一旦开始发送数据,无论TRX_EN和TX_EN引脚是高或低,发送过程都会被处理完。只有发送完前一个数据包的数据,NRF24L01才能接受下一个发送数据包。 3.2.2 温湿度数据的接收
A.当TRX_CE为高电平、TX_EN为低电平时NRF24L01进入ShockBurstTM接收模式;
B. NRF24L01不断监测,等待接收数据,当检测到同一频段的载波时,载波检测引脚被置高;
C.当接收到一个相匹配的地址时,地址匹配引脚被置高;
D.当接收完一个正确的数据包后,NRF24L01自动移去字头、地址和CRC校验位,然后把数据准备好引脚置高;
E.微控制器将TRX_CE置低,NRF24L01进入空闲模式;
F.微控制器通过SPI口,以一定的速率把数据传送到微控制器内;
G.当所有的数据接收完毕,NRF24L01把数据准备好引脚和地址匹配引脚置低。此时NRF24L01此时可以进入ShockBurstTM接收模式、ShockBurstTM发送模式或关机模式。
当NRF24L01正在接收一个数据包时,TRX_CE或TX_EN任意一引脚的状态发生改变,NRF24L01随之改变其工作模式,接收的数据包丢失。当微处理器接到地址匹配引脚的信息之后,其就知道NRF24L01正在接收数据包,其可以决定是让NRF24L01继续接收该数据包还是进入另一个工作模式。
由于接收模块单片机与NRF24L01的连接电路相同,只是程序不同,这里,不在
9