1、本科毕业设计(20届)无线温湿度检测系统设计所在学院专业班级电气工程及其自动化学生姓名学号指导教师职称完成日期年月I摘要【摘要】本文介绍了一种基于单片机的无线温湿度检测系统,该系统由数据采集端、数据接收端和上位机组成,以实现对分散节点的温度和湿度测量。数据采集端以C8051F330单片机为核心,控制HU10S温湿度传感器模块采集温度和湿度数据,将数据处理后通过NRF24L01无线收发模块发送到数据接收端。数据接收端的C8051F330单片机的控制无线接受模块接收数据并向上位机传输数据,由上位机的软件实时的显示温度和湿度。经试验,本系统有测量精度高、传输可靠、运行稳定的优点。【关键词】无线传输;
2、温湿度检测;串行通信。ABSTRACT【ABSTRACT】THETHESISINTRODUCESAWIRELESSTEMPERATUREANDHUMIDITYMONITORINGSYSTEMBASEDONSINGLECHIP,CONSISTSOFDATACOLLECTIONTERMINAL,DATARECEIVINGTERMINALANDPC,WHICHCANSUPPORTDATATRANSMISSIONOFMULTIPOINTDISTRIBUTIONASTHECOREOFTHEDATACOLLECTIONTERMINAL,THESINGLECHIPC8051F330,CONTROLSTHEH
3、U10SSENSORMODULETOCOLLECTTHETEMPERATUREANDHUMIDITYDATATHEDATAPROCESSEDBYTHENRF24L01WIRELESSTRANSCEIVERMODULEISSENTTOTHEDATARECEIVINGTERMINALTHESINGLECHIPC8051F330OFDATARECEIVINGTERMINALCONTROLSTHEWIRELESSRECEIVINGMODULERECEIVESANDTRANSFERSTHEDATATOPC,WHEREDISPLAYSTHEREALTIMETEMPERATUREANDHUMIDITYTHE
4、CHARACTERISTICSOFTHESYSTEMARESTRONGSTABLEANDHIGHPRECISEMEASUREMENTOFTEMPERATUREANDHUMIDITY【KEYWORDS】WIRELESSDATATRANSMISSION;TEMPERATUREANDHUMIDITYMONITORING;SERIALCOMMUNICATIONII目录第一章引言111研究背景112研究内容2第二章系统硬件设计421总体设计422硬件设计5221数据采集模块设计5211C8051F330单片机最小系统设计8212NRF24L01无线收发模块10213串行通信模块12第三章系统软件设计13
5、31软件简介13311KEIL软件简介13311LABVIEW软件简介1332数据采集端程序设计16321数据AD转换程序设计16322数据优化处理程序设计17323数据发送程序设计2033数据接收端程序设计22331数据接收程序设计22332串行传输程序设计2334上位机程序设计24第四章系统调试与结果2841系统调试2842系统测试结果28第五章小结30附录321第一章引言11研究背景中国是农业大国,也是世界上设施栽培面积最大的国家,农业生产作物的质量和产量对我国的经济、政治和外交都十分重要,而温度和湿度两个环境因子是农作物的栽培和储存的重要指标,对温度和湿度的实时精确检测,对中国农业的促
6、进和发展具有很大的意义。但是时下,我国很多农业环境的温湿度检测很多仍是由测温仪器和人工抄录相结合的传统方法来完成,不仅效率低,测量精度差,还阻碍了农业水平的发展,更可能因为判断失误和管理不力造成损失。温度与农业生产是密不可分的,它会直接影响农作物对水分和养料的吸收和输送,并通过农作物的光合作用、呼吸作用及蒸腾作用等过程,影响农作物的产量和质量。农作物的每个生长过程,都有三个温度基本点与植物生长速度和质量紧密相关,即最低温度、最适温度和最高温度,农作物在最适温度下能生长得最好。其次,适当的气温日变化对植物有机物质的积累具有重要意义,在农作物培育的过程中,在植物所能忍受的温度范围的情况下,白天温度
7、稍微提高,夜间温度稍微降低,有利于植物白天通过增强光合作用以积累有机物,和减弱夜晚植物的呼吸作用,从而来减少有机物消耗,对产量的形成和产品的品质的形成都有很大的帮助1。温度对地方的作物种类的选择,耕作方法和季节安排都有决定性的作用。湿度是用来表示大气干燥湿润程度的物理量,在农业种植和花卉种植中是个非常关键的环境因子。湿度可以用绝对湿度、相对湿度、露点的来表示。现在用的较多的是相对湿度,相对湿度是指空气中水汽压与饱与同温度下的饱和水汽压的百分比,用来反映空气的潮湿程度,即RHDDHS100(式11)其中,H相对湿度;D大气中的绝对湿度(PA);SD当时温度下的饱和水汽压(PA)。相对湿度与农业生
8、产有着很密切的生产关系,相对湿度如果长时间的处在较高的情况下,植物的生长会受到负面的影响。相反如果相对湿度太小,又会造成干旱等灾害。因此湿度的实时检测保证农作物在其适合的湿度环境下生长,对农业温室中农作物的良好生长有很大的帮助。数据的传输方式有有线传输和无线传输构成,目前的温湿度检测系统大多采用有线布网的方式来传输数据,这种方式提高了成本和维护的工作量,在前期增加了布线困难,并且不利于后期布局的更改。2无线传输的方式是由控制单元、无线传感器和无线传输模块等几个部分组成的,控制单元是基础部分,传感器被放置在所需的地方并将数据通过无线模块定时传送给控制单元2。无线传输是现在最新型的传输方式,由大量
9、传感器节点组成,以无线通信的方式形成一个网络系统,其作用是协作的感知、采集和处理其所覆盖的区域中感知对象信息,并将数据和信息发送给用户3。由于无线传感器网的节点能在较恶劣的环境下工作,并且不受时间制约的获取数据,因此具有广泛的应用领域,如军事技术,智能家居,医疗卫生,环境监测等。例如在农业环境领域,它能检测农作物的生长环境以控制灌溉施肥,监测森林以及时发现火灾泥石流等灾害,利用分布式的节点为农业科学和气候气象等研究等采集必须的参数和信息。无线传感器网络因其广泛的应用前景,一经出现就引起了很多不同地区不同领域人的关注,并且发展十分迅速。20世纪90年代早期形成了无线传感器网络这个概念,在1992
10、年,无线传感器网络以“微尘”或“智能尘埃”(SMARTDUST)的名称为大众接受,第一个“微尘”是应用在光学通信上4。随着无线传感器网络的发展,与其相关的项目和研究在美国能源部、美国国家航空航天局和美国交通部陆续开始展开。几所美国著名的学校,如麻省理工学院、加州大学等在无线传感器网络领域有非常杰出的研究成果3。我国也在积极开展这一领域的相关研究工作,同时,我国也有越来越多的企业和科技工作者开始关注无线传感器网络。构建一个无线检测系统,能对于有线系统难以涉及的受控对象的场合,还有在狂风暴雨等恶劣环境下的作业,实现计算机对传感器系统的检测、控制,完成计算器与传感器系统的数据传输,还在后期更改检测位
11、置,并且能实现检测数据传输的高效性、实时性的要求5。12研究内容中国是一个拥有十三多亿人口的农业大国,农业是我国的国民经济的基础,是社会和谐的基础,更是国家自强的基础,因此保证农业生产的高效性具有很大的意义。指引温室农田户主根据作物对环境的需求而检测和控制环境以提高农作物的产量和质量,是本系统的目标所在。无线温湿度检测系统能实现对温室、大棚或农田里的多个位置实现分散式的温度和湿度的实时检测,通过无线传输传送到终端接收器上,并使用上位机上的软件显示数据并汇总储存,如图11所示。实时的检测各个节点的温湿度,保证农作物处在最适宜的环境中,用户可以自定某一个农作物生长的温度和湿度范围,一旦环境中的温度
12、或湿度超出范围,上位机软件上的报警灯便会亮起。无线传输不需传输线布网,安装简单,降低经济成本,并可以根据检测点更改的需要改变无线测量节点的位置。无线温湿度检测系统减轻劳动强度,提高农业劳动生产效率,促进农机化的发展。此外,上位机所存储的数据可以为今后的农作物相关习性研究提供资料和农业生产提供参考。3图11无线温湿度检测系统示意图4第二章系统硬件设计21总体设计无线温湿度检测系统通过单片机来控制温湿度传感器来采集温湿度数据、数据优化和数据的无线发送。数据接收端单片机读取无线接受模块接受到的数据后,再通过串口将数据传送到上位机。系统硬件结构分为数据采集端和数据接收端两部分,数据采集端结构图如图21
13、所示,数据接收端结构图如图22所示。单片机最小系统温湿度传感器无线发送模块图21数据采集端结构图单片机最小系统无线接收模块上位机图22数据接收端结构图数据采集端主要由温湿度传感器构成,温湿度传感器的选择好坏对于无线温湿度检测系统整体的质量优劣、性能强弱、精准度好坏有很大影响。常见的湿度传感器的类型有高分子电阻式传感器、碳膜电阻式的湿度传感器、陶瓷电阻式湿度传感器、氯化锂湿度传感器和结露传感器等,挑选温度传感器的主要参考的参数有响应时间、灵敏度、湿度量程和相对湿度特性曲线等6。目前市场上的湿度传感器模块较多的是AM2001湿度传感器模块、DHT21湿度传感器模块和HU10S温湿度传感器模块。温度
14、传感器在众多的传感器中是应用最广、种类最多也是最普及的传感器器件,温度传感器的种类有热电偶型、热敏电阻和PN结型的温度传感器等,目前市场上用的较多的温度传感器以DS18B20、PT100等为主。其中AM2001湿度传感器模块对湿度的测量精度较高,并且能保证长时间的测量稳定性,但价格偏高。而DHT21温湿度传感器是由电容式湿度传感器构成,容易受到环境中的化学物质干扰而测量不准,对恶劣环境的适应性较差。虽然C8051F330单片机中已内置温度传感器,但由于长期工作可能会使C8051F330单片机芯片发热,导致温度测试不准。从各个传感器静态特性如线性度、灵敏度等特性,和传感器对随时间变化而输入量的响
15、应特性等动态特性要求分析,HU10S温湿度模块在满足要求的情况下,电路构建简单,测量范围大,成本低廉,测量范围广,工作可靠。单片机是集成在一块芯片上的微型计算机系统,它包含了中央处理器、程序存储器、数据存储器、IO接口、中断逻辑和定时器/计数器等7。常用的有STC、PIC、EMC和ATMEL等公司生产的单片机。从性价比和熟悉程度考虑,本系统采用的是适合于低功耗应用的高速的C8051F330单片机作为控制芯片,其自带10位模/数转换器,17个可以被配置为模拟或数字的I/O端口,增强型SPI接口,其芯片5错误未找到引用源。引脚能通过外部电路使单片机进入复位状态,内部还带有的UART0是一个标准的异
16、步、全双工通信串口。此外,其采用高速、流水线结构的CIP51内核,能使执行速度提高。以C8051F330单片机芯片为主构成的C8051F330单片机最小系统是无线温湿度检测系统的控制部分。CC1000是极低功耗的无线数据接收发送芯片,它的特点是需要极少的外围元件因而免去了复杂的电路连接,而且电流的损耗极低,目前在无线报警安全和家庭智能化自动化领域有广泛的应用领域。ZIGBEE也是一种目前比较新兴的无线技术,与其它的无线技术相比,ZIGBEE具有低功耗、短时延、高容量和高安全等优势,此外,与蓝牙技术相比,ZIGBEE的性价比较高,并且通信效率高,因此在工业参数监测、烟雾报警灯无线传感器网络,医疗
17、和家庭中具有很广阔的应有前景。NRF24L01芯片是挪威一家名为NORDIC公司制造出的用于无线传输的芯片,它工作在2425GHZ的全球通用频段,具有功耗低、速度快、性价比高,使用简单的特点,可以为无线设备、智能设备和安全系统提供支持,NRF24L01无线传输芯片能接受6路不同地址的数据,可以在分布式的网络中得到较好的应用8。此外无线收发芯片还有NRF401、NRF905、NRF2401等,通过对NRF24L01芯片寄存器的配置,可以实现NRF24L01与NRF24XX系列的兼容。通过对CC1000芯片、ZIGBEE芯片和NRF24L01芯片的性能和价格的比较,确认使用NRF24L01芯片作为
18、本系统无线传输用的芯片。22硬件设计硬件设计主要包括数据采集模块、C8051F330单片机最小系统、NRF24L01无线收发模块和串行通信模块,对于数据采集端和数据接收端的各个模块都是由低功由于对于耗器件组成,可以使用5V电源供电,此外也可以使用太阳能电池或则普通干电池供电以适应室外环境。221数据采集模块设计数据采集模块主要由温湿度传感器HU10S构成,HU10S的作用是将湿度传感器和温度传感器的非线性电阻信号转换为线性电压信号输出。可以广泛的应用在空气调节器、湿度记录仪和其他与湿度相关的检测等领域,随着工业发展、温湿度传感器在纺织、食品、电子和仪器仪表的应用变得更加广泛。湿度传感器的工作原
19、理是其内的湿敏材料能因为周围湿度的变化而发生有关的化学反应或物理变化,例如电阻阻值的变化、电容大小的变化、又如体积胀缩、长度改变,也有因为湿度的变化而改变器件电参数的,例如电流放大系数、MOS器件的沟道电阻阻值变化等等6。HU10S温湿度传感器模块的工作电压范围是直流电压5001V,温度的测量精度为01,在25、60RH的情况下的湿度测试误差小于5RH。HU10S温湿度模块是利用HA31W湿度传感器来检测湿度,其主要是利用湿敏电阻内的湿敏材料吸收空气中的水分而改变自身电阻的特性,当湿度较低时湿敏电阻值较低,当温度较高时湿敏电阻值较高。HA31W有使用寿命长,对待恶劣环境的适6应性强,响时间较短
20、,测量精度高的优势9。表21是HU10S温湿度模块在25时各湿度时的输出电压,图23是其在该温度下的典型响应曲线。表21HU10S温湿度传感器模块在25时各湿度时的输出电压RH2025303540455055输出电压V130143156168180190200210RH6065707580859095输出电压V220230240248256263270276图23HU10S温湿度传感器模块在25时各湿度时的输出电压曲线由表21和图23观察出湿度和输出电压的关系可以用一次函数联系,经计算可得其两者关系为61346741输出UH(式21)其中H相对湿度;输出U输出电压(V)。若无线温湿度检测的场所
21、对检测的湿度的精确度要求较高,可以对图23的曲线进行分段进行换算,可以提高系统精确度。在本系统的设计中,由于HU10S湿度测量的线性度比较好,就不需对它进行分段处理。HU10S温湿度模块是利用热电阻传感器内热敏电阻的阻值随温度显著变化的特性来实现对温度的测量,热敏电阻通常可以分为正温度系数热敏电阻和负温度系数热敏电阻。HU10S内的热敏电阻是负温度系数热敏电阻,即在温度范围内,随着温度的升高热敏电阻的阻值将会变小。其热敏电阻的阻值与温度的关系可近似的用下式表示0110TTBTTERR式227式中TR、0TR温度分别为T、T0时的电阻值;B负温度热敏电阻的材料常数。错误未找到引用源。使用热敏电阻
22、制成的温度传感器电路简单并且坚固,在温度测量、火灾报警、过负荷保护等领域得到广泛的应用9。表22是HU10S温湿度模块在各个温度下的热敏电阻阻值,图24是其在各个温度下的输出电压。表22HU10S温湿度模块在各个温度下的热敏电阻阻值温度5051015202530阻值K3457276622281807147412111000831温度3540455055606570阻值K694583491416354302260223图24HU10S温湿度模块在各个温度下的输出电压的曲线由图24可以用几段一次性线性关系将输出电压和温度的数值联系起来,由于在570的范围内HU10S温湿度传感器模块的线性度较差,可
23、以用分段的线性曲线来表征其对应关系。在510的范围内即20307522输出UT(式23)在1035的范围内即41283621输出UT(式24)在3550的范围内即75418925输出UT(式25)在5070的范围内即884778935输出UT(式26)其中T温度();输出U输出电压(V)。由于C8051F330单片机自带A/D模数转换器,因此温湿度传感器的温度输出和湿度输出之间和单片机IO口相连即可。HU10S温湿度模块的连接如图25所示,其中HU10S温湿度模块1口输出的是温度电压信号,2口是接地信号,3口输出的是湿度电压信号,4口连接的是5V电源电压,其中1口和2口与单片机的IO口相连。V
24、DDHU10S10K温度输出湿度输出GNDTEMHUM图25HU10S温湿度模块电路211C8051F330单片机最小系统设计C8051F330单片机最小系统作为温湿度检测系统的控制部分,包括C8051F330单片机、复位电路、电源电路和JTAG调试接口电路,能支持在线调试、程序下载和复位等功能。单片机的复位方法较多,有上电复位、外部复位、时钟丢失检测器复位、比较器0复位和FLASH错误复位。其中使用较多的是上电复位和外部复位。上电复位是在接通电源到电源达到额定值期间单片机处在复位状态,等到电源上升到某个阈值后,再经过一个延时,单片机退出复位状态。外部复位又称手动复位,通过按键来控制单片机的R
25、ST错误未找到引用源。引脚电平的高低。时钟丢失检测器复位是指系统时钟在某个时间段里连续处在高电平或低电平,单片机便产生复位。外部复位是使用外部电路在C8051F330单片机的错误未找到引用源。引脚上加一个有效的低电平信号使单片机进入复位状态。本系统采用上电复位和外部复位相结合的方法,因为在平时实际使用中单片机不仅能在上电时实现寄存器初始化,更需要根据实际操作而随时复位。本系统中复位电路的电路图如图26所示。复位电路的设计,将直接影响整个系统的稳定性,并在后期调试中能处理单片机死机。进入复位状态时,CIP51将停止执行程序,中断和定时器也将被停止,所有特殊功能寄存器被初始化为预定值,所有I/O9
26、端口被写为0XFF。C1C2R2R101UF10K1UF1K33V图26单片机复位电路电源电路的作用是为各个模块供电,C8051F330单片机控制系统和NRF24L01无线收发模块需要稳定的33V的供给电压,其中C8051F330单片机控制系统的供给电压的稳定性最为重要,若供给电压有所浮动或有不精准,会直接导致测量温湿度数据的偏移。稳压电源的方法可以使用稳压管稳压电路、串联型稳压电路、开关型稳压电路。其中虽然稳压管稳压电路结构简单,但是其输出电流小并且输出电压不能满足很多场合下的应用。本系统中33V的稳压电路如图27所示,输出端的电容是为了确保芯片的稳定性10。其中稳压芯片的外部电源可以是51
27、5V左右的任何电源类型,LED灯用于指示工作状态,其输出的是稳定的33V电压。C4C5R3C3SPX1117VOUTVIN输出33V电压10UF01UF10UF470图27单片机稳压电路电路中的SPX1117作为稳压芯片,SPX1117是一个低功耗正向电压调节器芯片,提供15V、18V、25V、285V、30V、33V和5V等各个不同电压的稳定输出,普遍应用在电池充电器、笔记本电脑电源等需要稳定电源的领域中。C8051F330器件具有片内SILICONLABS2线接口调试电路,支持使用安装在最终应用系统中的产品器件,通过JTAG接口与开发工具进行全速的调试和编程。使用JTAG调试便能观察和设置
28、和修改存储器、寄存器、断点和观察点,并能执行单步、运行、停止等命令。JTAG调试接口电路较简单,主要只需将其第4引脚与C8051F330单片机的P20引脚相连,第7引脚与单片机的RST引脚相连便可,其连接电路如图28所示。10JTAG接口VCC数据传输时钟信号图28单片机JTAG调试接口212NRF24L01无线收发模块NRF24L01供电电压的范围为1933V,工作温度在4085,电流消耗低。NRF24L01芯片的主要工作模式有待机模式、掉电模式和收发模式。待机模式分为待机模式和待机模式,待机模式下,芯片寄存器中的内容保持不变。在掉电模式下NRF24L01芯片的保持最小的电流消耗,并且NRF
29、24L01芯片各功能停止,即停止工作,与待机模式类似,寄存器的内容不会丢失或改变。NRF24L01收发模式可分为三种,分别是直接发送接收模式、增强型的SCHOCKBURSTTM模式和SCHOCKBURSTTM模式11。增强型的SCHOCKBURSTTM模式与SCHOCKBURSTTM模式相比使得双向链接协议执行起来更为容易有效和可靠,其数据发送方要求数据接收方在接收到数据后向数据发送方发送应答信号,以让数据发送方确定数据接收方已收到数据,如若数据接收方没有发送应答信号或数据发送方未收到应答信号,则数据发送方通过重发功能将数据接收方未收到的数据重新发送一遍。在增强型的SCHOCKBURSTTM模
30、式下实行CRC校验和数据包识别。CRC校验是数据通信中一种常用的差错校验码,CRC检验的原理是当发送方要发送N位二进制码序列数据时,根据一定的运算方法产生一个校验用的R位CRC码,与原来的N位二进制码序列数据相连,即NR位新的二进制码数据发送给数据接收方,数据接收方根据收到的数据将N位二进制序列码和CRC校验码分离,并根据CRC码来检验前面N位的二进制码数据。在增强型的SCHOCKBURSTTM模式下,CRC校验和数据包识别主要的作用是帮助接收方区分接收到的数据是新数据还是重发的数据,在该模式下发送方的NRF24L01发送的每一包数据都包含两位PID,即数据包识别。接收方可以根据接收到的数据包
31、中的PID来识别接受到的数据包是否重复,即将新接收到的PID值与上次接收到数据包内的PID值进行比较,若不同,则确定接收到的数据包是新的数据包,如果相同,则将接收到数据包的CRC值与上次接收到的数据包内的CRC值进行比较,相同则认为是同一数据包并将其丢弃。发送方的工作就是在发送新的数据包便将它的PID值加1。NRF24L01芯片作为接收端的时候最多可以接受6路地址不同的数据通道发送方发送来的数据,不同的数据通道即地址不同的数据发送方,一般情况下,在同一个网络内每块NRF24L01芯片的地址都必须不同,地址可以通过芯片内的寄存器来配置。其中数据通道0的RX_ADDR_PX寄存器有40位11可配置
32、地址,而数据通道15的地址的配置规则为32位公用地址8位各自地址,6个数据通道的地址配置举例如图29所示,NRF24L01的网络结构图如图210所示。字节4字节2字节3字节1字节0数据通道0数据通道5数据通道4数据通道3数据通道2数据通道10XA30XC90XE30X650XD20XC30XC30XC30XC30X060XC30XC30XC30XC30X050XC30XC30XC30XC30X040XC30XC30XC30XC30X030XC30XC30XC30XC30X02图29NRF24L01芯片6通道地址配置举例接收节点发送节点1发送节点2发送节点3图210NRF24L01网络结构图在N
33、RF24L01中所有对寄存器的配置都是通过SPI口进行的,在对寄存器进行操作之前NRF24L01必须进入待机模式或者掉电模式,每一条指令的执行都经过一次CSN由高电平到低电平的变化。当状态寄存器中TX_DS、RX_DR或MAX_RT为高时,即NRF24L01已发送数据、或者接收数据准备就绪时或重发次数达到最大次数时,触发NRF24L01的中断引脚IRQ,以便通知单片机进行下一步处理。此外,只需将NRF24L01的寄存器配置更改,NRF24L01便能与NRF24XX系列兼容,如NRF2401/NRF2402/NRF24E1/NRF24E2等。NRF24L01无线收发模块与单片机相连的电路如图21
34、1所示。P03P02P01P17P06P07GNDCESCKMISONRF24L01VCCCSNMOSIIRQC8051F330图211NRF24L01模块与单片机连接电路图12213串行通信模块串行口通信模块的主要功能就是将单片机内的数据通过串行通行传送给上位机。串行通信是指通过一条数据线来传输数据,尤其适用于计算机与外界的信息传输。RS232接口标准是EIA(ELECTRONICINDUSTRYASSOCIATION)广泛采用的标准,随着科技的发展,电器变得越来越小,RS232C由标准的25针接头简化成9针的D型接头。RS232C标准的电器特性定义了逻辑“1”的标准电平是从3V到25V,逻
35、辑“0”的标准电平是从3V到25V在一般情况下,通常情况下逻辑“1”维持在12V左右,逻辑“0”维持在12V左右12。端口匮乏的问题随着串行设备数量的日益增加慢慢的出现,从USB规范面世依赖,RS232接口受到了强烈的冲击13。USB的具体优势体现在数据传输速度多样化对于数据传输实时性要求不高的外设,提供了低速15MBIT/S的低速模式,USB11规范的数据传输速率为12MBIT/S,而USB20所允许的最大传输速率甚至到达了480MBIT/S。支持热插拔和即插即用USB设备可以随时与USB主机相连,方便了设备与主机的连接,并且USB主机能动态的识别设备,即插即用与其他数据传输的方式相比省去接
36、线或接口配置的麻烦。此外,USB还易于扩展,其能通过HUB和中继器能使传输距离延长并且增多数据的接受设备。USB还提供自供电和总线供电的供电方式,并且能同时支持多个外设工作12。目前,笔记本电脑上普遍没有串口接口,因此本系统为了增加其普及型,采用串口与USB转换模块来使其能与笔记本电脑传输数据,除此之外对单片机软件程序和上位机软件程序不必做任何改动,直接使用USB接口的方式与上位机进行数据传输。13第三章系统软件设计系统软件的设计可以分为C8051F330单片机的片上程序和上位机的显示程序,单片机的片上程序又分数据采集端程序和数据接收端程序。数据采集端的程序主要作用是数据采集、数据优化处理和数
37、据无线发送;数据接收端的程序主要作用是无线数据接收和数据串行通信。上位机的程序主要作用是接收数据接收端通过串行通信传输过来的数据,显示数据并将数据存储在指定的文件中。31软件简介本系统中C8051F330单片机上的程序是在KEIL环境下编程,上位机的软件是在LABVIEW85编程环境下编写的。311KEIL软件简介目前有4种语言能对8051系列单片机进行编程,即汇编、C、PL/M和BASIC。目前一般流行以C语言对单片机程序进行编译,与汇编等语言相比,C语言有以下优势由编译器来管理数据类型、分配寄存器等细节;编程者没有必要去理解单片机的指令系统,只要对8051的结构有一定的认识;为了提高程序效
38、率使编程时间明显减少;提供具有强大数据管理能力的子程序库7。单片机的C语言编译器有很多种,有IAR、KEIL、MIRCOCOMPUTERCONTROL和AVOCET等,KEIL因其简单的使用方法较为普及。KEILSOFTWARE公司为8051及其兼容产品提供的专门开发工具,用户可以用它们来编译C源码或汇编代码,连接和重定位目标文件和库文件。使用KEIL软件编程需要首先需要创建一个项目,并配置芯片类型和其他设置,使用C语言编程后,编译程序并纠正程序中的错误,确认无误后便可构建项目进行调试并且可以将程序下载到C8051F330单片机上。311LABVIEW软件简介LABVIEW是LABORATOR
39、YVIRTUALINSTRUMENTENGINEERINGWORKBENCH(实验室虚拟仪器集成环境)的缩写,与传统的编程语言不同,它是一个使用图形来编写程序的编程环境。LABVIEW其人机界面与真实物理仪器的外观和操作都很像,该软件有一整套工具可以用于采集数据、分析数据并且显示数据。LABVIEW功能众多,包含数据采集、串行口仪器控制、数据分析、数据显示、数据存储等应用库,并包括函数信号产生、信号处理、统计、矩阵运算等功能,且使用图形编程语言使得编程更加简单快捷,使得LABVIEW备受青睐。在汽车、电子、半导体、化学和制药行业工作的科学家和工程师长期使用LABVIEW来继续他们研究,LABV
40、IEW在数据分析、试验测量和工业自动化等领域有着不可替代的位置14。14每个由LABVIEW软件编程的程序,也可称作VI,可以由一个或者若干个LABVIEW程序构成,前面板、程序框图和图标三部分组成了每个LABVIEW程序15。前面板模拟了物理仪器的前面板,用于和用户进行信息和数据交互,如图31所示,其直观的编辑方式包含了各种输入输出的控件和指示器。图31LABVIEW的前面板程序框图是由LABVIEW图形化编程语言组成,框图中包含的数据输入端和数据输出端相当于前面板上的指示器和控件,框图主要是由结构、常量、子VI、函数和数据传输连线组成,如图32所示,即程序框图是LABVIEW的源代码,在程
41、序框图中可以看到程序框图中的节点、连线和端子。15图32LABVIEW的程序框图连接器主要是向VI提供了输入和输出口,其作用是使LABVIEW的一个程序可以调用另一个程序,即如果一个LABVIEW程序需要调用另个程序,便需要连接器。结构是LABVIEW程序的控制元素,LABVIEW主要有以下几个结构WHILE循环、FOR循环、CASE结构和顺序结构,程序的顺序、流程便是由这几个结构实现的。WHILE循环和FOR循环是LABVIEW提供的两种循环结构,用于重复执行,与C语言类似的是,WHILE循环结构执行直到某个条件为真(普遍如此,也可以为假,取决于WHILE循环的设置);FOR循环结构往往是按
42、照指定的循环次数来执行。CASE结构是一种判断结构,类似于C语言中的SWITCHCASE语句,用于解决多分支选择判断的问题,即对某一个变量的不同的值对应不同的操作。顺序结构是将一系列帧按照顺序执行,直到最后一帧执行完毕,才退出结构。LABVIEW与上位机进行通信的方法有GPIB总线通信和串行口通信,LABVIEW能够执行RS232,RS422或RS485标准串行通信,串行通信使用发送设备发送数据,数据经过传输线达到接受设备,虽然与GPIB相比串行通信速度较慢,但实现起来却不需要在计算机中安装接口板,免去了硬件带来的困扰14。在串行通信中需要配置传送波特率、停止位、可选择校验位取值和数据位数。L
43、ABVIEW可以将数据以图表的形式显示数据,通过图表的形式更能形象的描绘数据变化的趋势。此外,LABVIEW还有专用的强度图表图形、3D图形以及数字波形图。本系统使用其波形图作为前面板上的显示,波形图的更新方式有三种,即条形图模式、示波器模式和扫描图模式,图表可以显示单曲线和多曲线,并且可以对图表中的坐标轴显示、图表中曲线的颜色、图表历史长度等进行设置。16在LABVIEW中可以使用WRITETOSPREADSHEETFILE(写入电子表格文件)直接将数据写入电子表格文件,如EXCEL等,它将一维或者二维单精度数组转换为文本字符串,然后将字符写入到指定的文件中,文件的路径需要先设置,若没有设置
44、,在运行的时候会有对话框弹出提醒输入文件路径。32数据采集端程序设计数据采集端程序的主要任务是采集外界温湿度数据,通过数据处理后,将其通过NRF24L01无线模块发送给数据接收端。其程序流程图如图33所示。主要由寄存器初始化程序、数据AD转换程序、数据优化处理程序和数据发送程序这几部分组成,而数据AD转换程序、数据优化处理程序和数据发送程序这三个部分的程序为整个程序的核心。开始寄存器初始化NRF24L01芯片寄存器初始化数据AD转换数据优化处理将数据发送至接收方采集数据图33数据采集端程序流程图321数据AD转换程序设计C8051F330单片机自带10位AD转换器,可以将模拟量转化为数字量,C
45、8051F330单片机集成了两个16通道模拟多路选择器AMUX0和一个200KSPS的10位逐次逼近寄存器ADC。逐次逼近型ADC的原理是将输入电压与一个个产生的比较电压进行比较,继而确定与输入电压最接近的数字量16。AMUX0和AD数据转换方式都可以通过配置特殊功能寄存器来设定。在模拟多路选择器中配置ADC的正输入和负输入,GND被选择为负输入时,AD转换器工作在单端方式,其测量的范围为0VREF1023/1024,其转化码为10位无符号整数。启动AD转换的方式主要有以下几种写1到ADC0CN寄存器的AD0BUSY位;17定时器0、定时器1、定时器2、定时器3溢出;CNVSTR输入信号(P0
46、6)的上升沿。本系统直接使用C8051F330单片机自带10位AD转换器,将HU10S温湿度传感器的引脚与单片机的引脚直接相连,AD转换程序如下ADC0CN0X80/控制寄存器初始化,使能AD转换,设置转换启动方式AMX0P0X05/模拟量的输入通道为P05AMX0N0X11/AD转换器工作在单端方式AD0BUSY1/启动AD转换WHILEAD0INT/当AD0INT位为逻辑“1”时,AD转换结束,结果存入ADC0H、ADC0LAD0INT0VTEMP1ADC0HWENDUIWENDUI1WENDUI1ADEIFSHIDUISHIDUI1ADE1SHIDUISHIDUISHIDUI1SHIDU
47、I1ADE1VTEMP10VTEMP20FORJ1J178133VTEMP1VTEMP1/10WENDUJVTEMP1AMX0P0X04AD0BUSY1WHILEAD0INTAD0INT0TX_BUF3ADC0HTX_BUF4ADC0LVTEMP2ADC0HWENDUIWENDUI1WENDUI1ADEIFSHIDUISHIDUI1ADE1SHIDUISHIDUISHIDUI1SHIDUI1ADE1VTEMP10VTEMP20FORJ1J9JVTEMP1VTEMP1WENDUJVTEMP2VTEMP2SHIDUJVTEMP1VTEMP1/10IVTEMP110VTEMP1VTEMP1/1034
48、VTEMP2VTEMP2/8TX_BUF1VTEMP1100TX_BUF2I200TX_BUF3VTEMP2TX_MODETX_BUFDELAYUS200035附录二、数据接收端主程序INCLUDE“MAINH“UINT8TX_BUFTX_PLOAD_WIDTH0X5A,0X06,0X06,0X00,0X00UINT8RX_BUFTX_PLOAD_WIDTHEXTERNUINT8FLAGVOIDMAINVOIDUINT8UART_NUMSYSTEM_INITPORT_INITINT_INITTIMER_INITDELAYUS3000NRF24L01_INITRX_MODEWHILE1IFFLAGUART_NUMRX_BUF1SBUF0UART_NUMDELAYUS200SBUF0RX_BUF2DELAYUS200SBUF0RX_BUF3DELAYUS200FLAG036附表三、数据采集端电路图37附录四、数据接收端电路图38附录五、实物图数据采集端数据接收端