无线温度湿度采集系统及设计.doc_第1页
无线温度湿度采集系统及设计.doc_第2页
无线温度湿度采集系统及设计.doc_第3页
无线温度湿度采集系统及设计.doc_第4页
无线温度湿度采集系统及设计.doc_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

毕 业 设 计 (论 文)题 目:无线温度湿度采集系统的设计院 系:专 业:班 级:姓 名:学 号:指导教师:I无线温度湿度采集系统的设计【摘要】随着工业农业等相关产业的不断发展,温度和湿度的测量在实际生活中的应用越来越广泛。如现代温室大棚,酿造酒类,微生物发酵,药物制造等方面均对温度湿度的要求严格。本设计为一个无线温湿度采集系统。以STC89S52为主要芯片,利用数字式温湿度传感器DHT11采集温湿度,把收集到的数据传给单片机STC89S52,再用无线发射模块Nrf24l01将经过处理的数据发射出去。单片机通过模拟SPI口跟NRF24L01之间传送数据。同时,NRF24L01具有接收功能,接收模块的NRF24L01将接收到的数据传给STC89S52,最后用数字显示屏LCD1602将经过单片机处理后的数据显示出来。【关键词】STC89S52 数据处理 温度 湿度Design of wireless temperature humidity acquisition system【Abstract】With the continuous development of industry and agriculture and related industries, the temperature and humidity measurement used more and more widely in the practical life. Such as modern greenhouses, brewing wine, microbial fermentation, so on drugs manufacture of temperature humidity requirements strictly. Therefore, to design a wireless temperature and humidity acquisition system. STC89S52 as the main chip, using digital temperature and humidity sensor DHT11 to collect temperature and humidity. Pass the collected data to MCU STC89S52, reoccupy NRF24L01 wireless transmitting module data will be processed. Single chip microcomputer simulation SPI mouth to transmit data between NRF24L01, meanwhile, has the function of receiving, receiving modules NRF24L01 will receives the data to STC89S52 devices, with digital display LCD1602 will finally after dealing with the single chip microcomputer of data displayed.【Key word】STC89S52 data processing Temperature humidity目 录1 绪论11.1 引言11.2 选题背景及意义11.3 国内外现状及发展趋势11.4 研究内容22 系统总体设计方案32.1 温湿度传感器的选择32.2 无线发射模块的元器件选择32.2.2 NRF24L01的工作模式42.3 单片机的选择52.4显示模块的选择63 硬件电路设计73.1 温湿度采集模块的设计83.2 无线发射接收模块设计93.2.1 温湿度数据的控制发送93.2.2 温湿度数据的接收103.2.3 模拟SPI口的实现103.3 LCD1602液晶显示模块设计113.4 电源模块设计124 软件设计124.1 采集模块软件设计124.2 发送接收模块软件设计134.3显示模块软件设计174.4 调试17结论18附录A 系统总体电路图20附录B 部分程序22231 绪论1.1 引言温度湿度在工农业生产中占有很重要的地位,是工农业生产的重要组成数据。温湿度过高会造成粮食发霉长芽,还会引起大棚蔬菜一系列的病害。因此,对其适时准确的测量就显得尤为重要。而一般的测量过程较为复杂繁琐,误差还大。比如现在所使用的水银,酒精温度计进行温度检测和用传统的物理模拟量的方法进行的湿度检测,这些温湿度检测计的刻度间隔通常都很密,不容易准确分辨,读数困难,而且他们的热容量还比较大,达到热平衡所需的时间较长,因此很难读准,并且使用非常不方便。本设计以STC89S52为主要芯片,利用数字式温湿度传感器DHT10采集温湿度,把收集到的数据传给单片机AT89S52,再用无线发射模块NRF24L01将经过处理的数据发射出去。单片机通过模拟SPI口跟NRF24L01之间传送数据。同时,NRF24L01具有接收功能,接收模块的NRF24L01将接收到的数据传给STC89S52,最后用数字显示屏LCD1602将经过单片机处理后的数据显示出来。单片机体积小,价格低,且稳定性较强,操作灵活简单,误差较小,具有很高的应用价值。1.2 选题背景及意义温湿度的测量控制在农业生产,工业制造,仓库管理,科学研究等方面都有广泛的应用。然而,温度和湿度却是最不易保障的指标。由于温湿度控制不当,可能会导致无法估计的损失。传统的测量方法是有线测控法,实施起来不仅难度大,成本比较高,系统灵活性较差,而且维护起来也比较困难。针对这一情况,研制可靠且实用的温度和湿度检测与控制系统就显得非常重要。如今,随着科技的进步,无线通信技术日趋成熟,如果将无线通信技术应用到温湿度的测量系统中,通过无线传输将传感器收集到的温湿度信息传送到控制显示终端,这样设计系统具有结构简单,采样点可灵活设置,系统适应性强等特点。符合向智能化,小型化方向的发展。另外此系统不需要A/D转换器将电信号转换成数字信号,而使用DHT10直接得到数字量,减去了不必要的麻烦。由此为出发点,根据自己所学的专业知识,用新型智能温度传感器DHT10,无线发射模块NRF24L01,单片机STC89S52,数字液晶显示器件LCD1602等主要元件设计这套无线温度湿度采集系统。1.3 国内外现状及发展趋势随着科技的飞速发展和普及,高性能设备也越来越多,各行各业对温湿度的要求也越来越高。 传统的温湿度监测模式是以人为基础,依靠人工轮流值班,人工巡回查看等方式来测量和记录环境状况信息。在这种模式下,不仅效率低下,还浪费大量人才资源及财力资源,而且缺乏科学性,许多重大事故都是因为人为因素造成的,人工维护缺乏完整的管理系统。而无线监控系统就可以解决这样人才资源浪费,管理不及时的问题,这是由于它的智能化设计所决定的。它的工作步骤如下:感应环境温湿度;单片机判断感应到的温湿度是否异常;若感应到的温湿度异常,实行措施进行调节;判断异常是否超过预设时间,若超过预设时间,则输出异常信号报警;判断异常是否处理完毕,若处理完毕,解除报警。这样就可以利用控制器对机房温湿度进行监控,从而实现环境温湿度管理的实时性和有效性。故本次设计对于类似项目还具有普遍意义智能温度传感器(亦称数字温度传感器)在20世纪90年代中期问世。它是微电子技术、计算机技术和自动测试技术(ATE_)的结晶。目前,国际上已开发出多种智能温度传感器系列产品。智能温度传感器内部包含温度传感器、A/D传感器、信号处理器、存储器(或寄存器)和接口电路。有的产品还带多路选择器、中央控制器(CPU)、随机存取存储器(RAM)和只读存储器(ROM)。智能温度传感器能输出温度数据及相关的温度控制量,适配各种微控制器(MCU),并且可通过软件来实现测试功能,温度计也越来越智能化。跟电子温度计一样湿度计随着湿度传感器的发展趋于成熟。现在常用的温度传感器AD590,DS18B20湿度传感器HMxx系列,HS1xx系列,DHT系列随着温湿度计的发展温室监控系统也越来越成熟,更好的为人们服务。对于国内外对温湿度检测的研究,从复杂模拟量检测到现在的数字智能化检测越发的成熟,现在的对于温湿度研究,检测系统向着智能化、小型化、低功耗的方向发展。在发展过程中,以单片机为核心的温湿度控制系统发展为体积小、操作简单、量程宽、性能稳定、测量精度高,等诸多优点在生产生活的各个方面实现着至关重要的作用。1.4 研究内容设计以STC89S52基本系统为核心的一套检测系统。由温湿度采集、数据分析、数据处理三个部分。包括单片机系统,复位电路,温度检测,湿度检测,显示部分等模块。该系统包括了硬件组成和软件的设计,该系统在硬件设计上主要是通过温湿度传感器对温湿度进行采集,通过A/D转换器,将模拟信号转化为对应的数字温度信号电压。其硬件设计中最为核心的器件是单片机STC89S52,它一方面控制A/D转换器实现模拟信号到数字信号的转换,另一方面,将采集到的数字温湿度电压值经计算机处理得到相应的温度值和相对湿度值,送到LCD显示器,以数字形式显示测量的温度和湿度。可以直观的看到测量点的温湿度。整个系统的软件编程就是通过c语言程序对单片机STC89S52实现控制功能。再通过NRF24L01整个发射出去。系统结构紧凑,简单可靠,操作灵活,功能强大,性能价格比高,较好的满足了现代生产和科研的需要。2 系统总体设计方案无线温度湿度采集系统是基于一种射频技术的无线温湿度检测的装置。图1 系统通讯方式及总体框图2.1 温湿度传感器的选择温度检测采用最基本的热电偶,热电偶应用广泛,虽然其价格便宜而且耐用。种类多,能够覆盖非常宽的温度范围,但是其非线性、响应速度慢、精度中等、灵敏度低、稳定性低、高温下容易老化和有线性漂移,并且测量需要参考量。湿度检测采用湿敏元件,其主要分为电阻式和电容式。湿敏电阻的种类多,灵敏度高,但是起线性度和产品的互换性差。湿敏电容灵敏度高,响应速度快,偏于实现产品小型化和集成化,但精度一般比湿敏电阻要低一些。综合湿敏元件,其线性度可抗污染性差,在湿度的检测环境中湿敏元件需要时刻在检测环境中,很容易受到环境污染从而影响其测量精度和持续的稳定性。数字式传感器DHT10是sensiron公司生产的智能化温湿度传感器。体积与火柴头大小相似。不仅能够测量温度,还能同时测量相对湿度。所以能把SHT10作为温湿度检测的一个整体。DHT10作为典型的温湿度传感器,在测量过程中可对相对温湿度进行自动校准,准确的测量温湿度。产品互换性好,相应速度快,抗干扰性强。 由上可知,DHT10与温湿敏元件的温湿度测量相比,数字温湿度传感器低成本,内部集成复杂,在测量过程中可对相对温湿度进行自动校准,准确的测量温湿度。而且能够提供数字输出,简化外部测量电路,精度高,适用广泛的测量范围,并且本设计的温湿度检测系统相适合。因此,选择温度湿度传感器SHT10作为此次设计中的测量元件。2.2 无线发射模块的元器件选择本设计发射模块采用单片射频收发芯片NRF24L01,该芯片工作于433MHz的ISM频段,由一个完全集成的频率调制器,一个带解调器的接收器,一个功率放大器,一个晶体震荡器和一个调节器组成。输出功率和通信频道可通过程序进行配置。芯片能耗非常低,以10dBm 的功率发射时工作电流仅有 30mA,接收时工作电流只有 12.5mA,多种低功率工作模式,待机模式下电流仅为12.5A,节能设计更方便。其ShockBurst技术可在通讯时自动生成前导码和CRC校验位。nRF905适用于多种无线通信的场合,如无线数据传输系统、报警及安全系统、家庭自动化、遥感监测。2.2.1 NRF24L01主要包括三种接口(1)模式控制接口该接口由PWR、TX_EN、TRX_CE组成控制由NRF24L01组成的高频头的四种工作模式:掉电和SPI编程模式;待机SPI编程模式 ;发射模式;接收模式。(2)SPI接口SPI 接口由 CSN、SCK、MOSI以及MISO组成。在配置模式下单片机通过SPI接口配置高频头的工作参数;在发射/接收模式下单片机SPI接口发送和接收数据。(3)状态输出接口提供载波检测输出CD,地址匹配输出AM,数据就绪输出DR。表1 NRF24L01各个引脚的功能及说明管脚名称管脚功能说明1VCC电源电源+3.33.6V DC2TX_EN数字输入TX_EN=1 TX模式 TX_EN=0 RX模式3TRX_CE数字输入使能芯片发射或接收4PWR_UP数字输入芯片上电5uCLK时钟输出本模块该引脚废弃不用,向后兼容6CD数字输出载波检测7AM数字输出地址匹配8DR数字输出接收或发射数据完成9MISOSPI接口SPI输出10MOSISPI接口SPI输入11SCKSPI时钟SPI时钟12CSNSPI使能SPI使能13GND地接地14GND地接地2.2.2 NRF24L01的工作模式NRF24L01有两种节能模式和两种工作模式。两种节能模式分别是关机模式和空闲模式。两种工作模式分别是ShockBurstTM接收模式和ShockBurstTM发送模式。NRF24L01的工作模式由TRX_CE、TX_EN、PWR_UP三个引脚决定。三个引脚决定其工作方式的具体方式见下表。表2 nRF905的工作模式PWR_UPTRX_CETX_EN工作模式0XX掉电和SPI编程10XStandby和SPI编程110ShockBurstEX 111ShockBurst 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口线; 内部存储器容量有限;应用系统开发具有特殊性。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端口多,增加了硬件电路的复杂性。动态电路是最广泛的显示方式之一,其能够节省大量的I/O端口,功耗低。但是,针对数码管,其显示单调不具备数据的直观性。LCD1602液晶显示,具有字符发生器ROM可以显示192种字符。具有64个字节的自定义字符RAM,可自定义8个58点阵字符或四个511点阵字符。具有80个字节的RAM,标准的接口特性,适配M6800系列MPU的操作时序。模块结构紧凑、轻巧、装配容易,像素尺寸小,分辨率高。考虑到以上情况,显示终端选择LCD1602,它能把温湿度直观的显示出来,设计起来简洁明了,大大降低了系统的复杂性。LCD1602各个引脚的说明及作用为第一脚:VSS为接地电源。第二脚:VDD接5V正电源。第三脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“幻影”,使用时可以通过一个可调电位器调整对比度。第四脚:RS为寄存器选择,高电平时为数据寄存器、低电平时为指令寄存器。第五脚:R/W为读写操作信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。第六脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令第七十四脚:D0D7为8位双向数据线。第十五脚:背光源正极。第十六脚:背光源负极。表3 LCD1602各个引脚的说明编号符号引脚说明编号符号引脚说明1VSS电源地9D2数据2VDD电源正极10D3数据3VL液晶显示偏压11D4数据4RS数据/命令选择12D5数据5R/W读/写选择13D6数据6E使能信号14D7数据7D0数据15BLA背光源正极8D1数据16BLK背光源负极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)测量。发送一组测量命令后控制器要等待测量结束,这个过程大约需要2080320 ms,对应其81214位的测量。测量时间随内部晶振的速度而变化,最多能够缩短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接口,速率由微控制器自己设定的接口速度决定。3.2.1 温湿度数据的控制发送NRF24L01数据的发送过程为A. 当微控制器有数据要发送时,通过SPI接口,按时序把接收机的地址和要发送的数据送传给NRF24L01,SPI接口的速率在通信协议和器件配置时确定;B微控制器通过置高TRX_CE和TX_EN,激发NRF24L01的ShockBurstTM的发送模式;CNRF24L01的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的连接电路相同,只是程序不同,这里,不在给出接收模块单片机与NRF24L01连接图。详细连接电路图见附录A3.2.3 模拟SPI口的实现由于单片机不存在SPI口,为了实现单片机与NRF24L01的通讯,需要进行模拟SPI口,SPI口的工作方式可以通过SPI指令进行设置。首先必须设置器件的发送/接收模式才能保证有效的数据发送接收。SPI口外围串行接口包括:MOSI(主机写操作)、MISO(主机读操作)、SCK(串行时钟信号,由主机控制)、CSN(片选信号,低电平有效)。SPI口的读写操作如如图5和图6所示。图5 SPI读操作时序图6 SPI写操作时序3.3 LCD1602液晶显示模块设计本次设计可以采用的显示芯片很多,考虑到显示效果的精确度和成本等方面的因素,本设计采用LCD1602显示,经过无线传输后,温、湿度数据信息将在1602液晶显示芯片上进行显示,1602液晶显示芯片采用标准的16脚接口。将以上的传感器电路,无线传输和接收电路,单片机最小系统等各单元电路进行接口连接.用LCD显示一个字符时比较复杂,因为一个字符由68或88点阵组成,既要找到和显示屏幕上某几个位置对应的显示RAM区的8字节,还要使每字节的不同位为“1”,其它的为“0”,为“1”的点亮,为“0”的不亮。这样一来就组成某个字符。但LCD1602内带字符发生器,显示字符就比较简单了,根据在LCD上开始显示的行列号及每行的列数找出显示RAM对应的地址,设立光标,在此送上该字符对应的代码即可。通过单片机发送不同的指令即可控制LCD使其显示相应的温湿度信息。各个引脚的连接图如下图7 LCD1602模块电路图3.4 电源模块设计本设计电路采用+5V直流电源供电图8 电源模块电路图4 软件设计本设计的数据采集系统是由采集模块和显示模块构成,程序设计主要有单片微处理器数据采集程序,NRF24L01发送和接收程序,液晶显示程序构成4.1 采集模块软件设计首先,将DHT11初始化,将采集到的温度湿度信息传送到单片机,通过单片机的P1.7脚控制DHT11的数据线DATA。主机通过SPI接口向NRF24L01配置寄存器写入信息并通过天线发送。表4 DHT11命令集命令代码预留0000x温度测量00011湿度测量00101读状态寄存器00111写状态寄存器00110接口复位11110图9 采集模块主程序4.2 发送接收模块软件设计在进行采集模块软件设计时,要将NRF24L01设置为发送状态,TX_EN=1,TRX_CE=0如下图9所示。在ShockBurstTM发送模式,NRF24L01自动产生字头和CRC校验码,当发送过程完成后,数据准备好引脚通知微处理器数据发射完毕。由以上可知,NRF24L01的ShockBurstTM收发模式有利于节约存储器和微控制器资源,同时也减小了编写程序的时间。接收模块主要包括nRF24L01接收程序和液晶显示程序。与发送模块相同,在接收模块软件设计中,同样要先将NRF24L01设置为接收状态,TRX_CE=1,TX_EN=0,这样主机才能NRF24L01读取数据。图10 发送模块流程图当微控制器有数据要发送时,先把PWR_UP引脚置为电平、TRX_CE引脚置为低电平。从而使NRF24L01置于待机模式;然后按时序通过SPI总线把发送地址和待发送的数据都写入NRF24L01相应寄存器中。SPI接口的速率在通信协议和器件配置时确定。微控制器将PWR_UP、TRX_CE和,TX_EN全置高电平,激发NRF24L01的ShockBurstTM发送模式NRF24L01的ShockBurstTM发送包括以下步骤:射频寄存器自动开启;数据打包;发送数据包;当数据发送完成,数据准备好,引脚被置高。当TRX_CE被置时,NRF24L01发送过程完成,自动进入空闲模式。Sho ckBurstTM工作模式保证一旦发送数据的过程开始,无论TRX_EN和TX_EN引脚是高或低,发送过程都会被处理完,并且只有在前一个数据包被发送完毕,NRF24L01才能接受下一个发送数据包。图11 接收模块主程序当NRF24L01正在接收一个数据包时,TRX_CE或TX_EN任意一引脚的状态发生改变,NRF24L01随之改变其工作模式,接收的数据包丢失。当微处理器接到地址匹配引脚的信息之后,其就知道NRF24L01正在接收数据包,其可以决定是让NRF24L01继续接收该数据包还是进入另一个工作模式。当微控制器有数据要接收时,先把TRX_CE置为高电平、TX_EN置为低电平,此时NRF24L01进入ShockBurstTM接收模式;650 s后,NRF24L01不断监测,等待接收数据;当NRF24L01检测到同一频段的载波时,载波检测引脚被置高;当接收到一个相匹配的地址,地址匹配引脚被置高。当一个正确的数据包接收完毕,NRF24L01自动移去字头、地址和CRC校验位,然后把数据备好引脚置高。准备接收下一组数据或者进入空闲模式。接收流程图如下所示图12 NRF24L01接收流程图4.3显示模块软件设计图13 LCD1602显示数据流程图显示模块软件设计过程为,先将LCD1602初始化,初始化程序见附录。单片机通过数据传输端口P0.0P0.6向显示器传送温湿度数据信息。若LCD1602正确接收到数据信息,显示收到温湿度信息。延时0.8S后,重新开始读取下一个时间段温湿度数据,进入循环。若LCD1602读取数据错误,则直接返回,重新读取。4.4 调试软件调试主要使用Proteus软件和Keil C51软件。在软件调试中,首先在Proteusz中绘制电路图,并设置各元器件的参数。然后在Keil C51软件编写程序。在元器件的布局方面,把相互有关的元件放得比较近,例如:晶振、单片机的时钟输入端都容易产生噪音,在放置元件时的时候把它们放的靠近些。地线应构成闭环形式,提高电路的抗干扰能力,电路提供的电源是具有稳压作用的+5V电源。单片机选用12MHZ的晶振,因为这样有利于得到没有误差的波特率。特别是当与单片机进行通信的话,选用这种晶振比较好。由于单线数字温度传感器DHT11,测温相当准确,我们主要时间要花在单片机软件程序的编辑和调试以及电路模块的制作方面。结论本系统能较好地完成一个半双工无线数据传输工作,在空旷地带数据传输平均有效距离为200m;在复杂环境下,由于发射接收模块属于微功率器件,一般数据传输有效距离在20m-50m 之间。基于单片机89S52、温湿度传感器DHT11和射频模块NRF24L01构成的无线温湿度数据采集系统,具有数据采集和运算处理方便简单的优点。另外由于本次设计的程序使用C语言编程,由于许多模块本身自带语言,大大减小了编程的难度。本方案的可扩展性比较强,整个程序的程序框架已经搭建好,可以继续编写程序完成其他功能。例如:添加语音播报功能;添加超高温报警功能等。通过这次设计,使我们更加深入的了解了温度传感器,无线传输模块,以及单片机的结构功能和具体应用,也使我们对电路PCB板有了更深的认识。在老师和同学们的帮助下,我完成了本次设计,本设计可以实现温度的无线采集和实时显示,并且相当精确。我们的电路板虽然简单,没有运放等元件,但可以基本上完成此系统的任务,在电源的稳定等方面,我也相应的补充改进了我的设计方案。附录A:总体原理图附录B:部分程序#includereg52.h#includeAllhead.hsbit CE = P10;sbit CSN= P11;sbit SCLK= P12;sbit MOSI= P13;sbit MISO= P14;sbit IRQ = P15;unchar RevTempDate5;/最后一位用来存放结束标志#includereg52.h#includeAllhead.h#define uint unsigned int #define uchar unsigned char#define DBPort P0sbit rs = P25 ; sbit rw = P26 ;sbit ep = P27 ;typedef bit BOOL ; uchar data_byte;void delay(uchar ms) / 延时子程序 uchar i ; while(ms-) for(i = 0 ; i250;i+) ; void delay1()/延时10usuchar i;i-;i-;i-;i-;i-;i-;void longdelay(uchar s) /长延时 while(s-) delay(10) ; /*LCD模块*/BOOL lcd_bz()/测试LCD忙碌状态 BOOL result ; rs = 0 ; rw = 1 ; ep = 1 ; result = (BOOL)(P0 & 0x80) ; ep = 0 ; return result ; void write_cmd(uchar cmd)/ 写指令 while(lcd_bz() ;rs = 0 ;rw = 0 ;ep = 0 ;P0 = cmd ;ep = 1 ;ep = 0 ; void write_addr(uchar addr)/写地址 write_cmd(addr|0x80) ;void write_byte(uchar dat)/写字节 while(lcd_bz() ; rs = 1 ; rw = 0 ; ep = 0 ; P0 = dat ; ep = 1 ; ep = 0 ; void lcd_init()/ 初始化 write_cmd(0x38) ; delay(1); write_cmd(0x08) ; delay(1); write_cmd(0x01) ; delay(1); write_cmd(0x06) ; delay(1); write_cmd(0x0c) ; delay(1); display(uchar addr, uchar q)/在某一地址上显示一字节 delay(1) ; write_addr(addr) ; write_byte(q) ; longdelay(1) ; void show1() lcd_init();/ 初始化 / Welcome display(0x03,W); display(0x04,e); display(0x05,l); display(0x06,c); display(0x07,o); display(0x08,m); display(0x09,e); NRFDelay(1000);/短暂延时 /* display(0x42,G); display(0x43,u); display(0x44,a); display(0x45,n); display(0x46,g); display(0x48,M); display(0x49,i); display(0x4a,n); display(0x4b,g); NRFDelay(800);/短暂延时*/ lcd_init();/ 初始化/The Humi: %RH; display(0x00,T); display(0x01,h); display(0x02,e); display(0x04,H); display(0x05,u); display(0x06,m); display(0x07,i); display(0x08,:); display(0x0c,%); display(0x0d,R); display(0x0e,H);/The Temp: C; display(0x40,T); display(0x41,h); display(0x42,e); display(0x44,T); display(0x45,e); display(0x46,m); display(0x47,P); display(0x48,:); display(0x4c,0xdf); display(0x4d,C); unchar code TxAddr=0x34,0x43,0x10,0x10,0x01;/发送地址/*状态标志*/unchar bdata sta; /状态标志sbit RX_DR=sta6;sbit TX_DS=sta5;sbit MAX_RT=sta4;/*SPI时序函数*/unchar NRFSPI(unchar date) unchar i; for(i=0;i8;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()NRFDelay(2);/让系统什么都不干CE=0;CSN=1; SCLK=0;IRQ=1; /*SPI读寄存器一字节函数*/unchar NRFReadReg(unchar RegAddr) unchar BackDate; CSN=0;/启动时序 NRFSPI(RegAddr);/写寄存器地址 BackDate=NRFSPI(0x00);/写入读寄存器指令 CSN=1; return(BackDate); /返回状态/*SPI写寄存器一字节函数*/unchar NRFWriteReg(unchar RegAddr,unchar date) unchar BackDate; CSN=0;/启动时序 Back

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论