基于ARM和SHT11的温湿度检测报警装置设计毕业设计论文 - 图文

更新时间:2024-07-01 01:36:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

毕业设计(论文) 密级:公开

温湿度检测报警装置设计

Design of Temperature and Humidity

Detection Alarm System

学 院:信息科学与工程学院

专 业 班 级:电子信息工程0803 学 号:080402075 学 生 姓 名:杨越

指 导 教 师:王湘明(副教授)

2012年 6月

摘要

随着科技的发展,温度的检测与控制是工业生产过程中比较典型的应用之一。随着人类生产生活环境不断改善,对物质需求不断提高,出现智能温度检测器、室内净化器等一系列改善温度检测的高科技产品,很大地提高了人类的生活质量。然而这并不能满足仓库温度检测对生产生活的需求,传统的温度检测系统大多数是以传统的水银或者热电偶温度计为基础,精度有限,而且只能达到温度检测的功能,但是并不能根据温度的变化采取报警动作,采用人力监控的方法会导致工作效率低下,浪费人力资源,所以不断开发利用新型数字温度检测报警系统,本文设计了温度检测及报警系统。

此系统采用了单片机的检测电路,能够自动、准确检测环境空气的相对温度以及湿度,并将检测数据通过A/D转换后,送到处理器中,然后通过编写好的软件程序,将当前环境的相对温度值通过液晶屏幕来显示;而且,通过软件编程,再加上相应的报警电路,设计出可以自动报警的温度检测装置:当被测环境过高时,系统自动发警报,来提示附近温度超出规定标准,相关人员可以根据报警情况及时调节温度,使空气温度保持在理想的状态。提高了工作效率,同时也节省了人力资源。

关键词:温湿度;检测;报警;单片机

I

Abstract

With the advanced science and technology, the temperature of the inspection and

control is an industrial production process is the typical application, as one of the test the temperature increases, the production and living conditions have constantly improved, the temperature, the detector cleaner improve the detection a series of high technology products. however, this cannot satisfy the temperature of the inspection requirements for life, traditionally the temperature testing system can only test the temperature but can not alarm when temperature become too high,so development and utilization of the new figures have been detected, the temperature control system design the temperature of the inspection and Alarm systems.

The system of testing the circuit has a monolithic integrated circuits that automatically, accurate testing of the environment of the relative air temperature and will detect the data through a d after the conversion to processors, and then through software programming, the current environment, the relative value to a decimal number, then by which to show ; and, through software programming, plus appropriate control coupling, Design can automatically test the present environment of the room temperature : air temperature is too high, the system automatically the alarm, to prompt the temperature is not suitable for storage of products, we go through the air or other cooler, to lower the temperature of the warehouse, when the air temperature is too low, the system automatically adjust the air conditioner, and the air temperature at the ideal state. Improve the work efficiency, but also save manpower resources.

Keyword:temperature;testing;alarm;MCU

II

目录

摘要 ........................................................ I ABSTRACT ....................................................II 第1章 绪 论................................................. 1 1.1 选题意义 ...................................................... 1 1.1.1 生活环境与温湿度的关系.................................... 1 1.1.2 检测温湿度的意义.......................................... 1 1.2 国内外发展趋势 ................................................ 2 1.3 主要工作任务 .................................................. 2 1.4 本章小结 ...................................................... 2 第2章 系统方案选择和工作原理 ................................. 3 2.1系统综述 ...................................................... 3 2.2系统设计方案选择 .............................................. 3 2.3系统工作原理 .................................................. 4 2.4 系统的性能指标 ................................................ 5 2.5本章小结 ...................................................... 5 第3章 系统的硬件设计 ........................................ 6 3.1 系统所用芯片 .................................................. 6 3.1.1 LPC1700简介 .............................................. 6 3.1.2特性 ..................................................... 10 3.1.3结构概述 ................................................. 12 3.1.4 ARM Cortex-M3处理器 ..................................... 12 3.1.5片上Flash存储器系统 ..................................... 13 3.1.6片上静态RAM.............................................. 13 3.1.7看门狗定时器 ............................................. 14 3.1.8 定时器................................................... 15 3.2 温湿度传感器 ................................................. 16 3.2.1 温湿测量相关概念......................................... 17 3.2.2 温湿度传感器的选择....................................... 18 3.2.3 SHT11的工作原理 ......................................... 19 3.2.4 SHT11的传输特性 ......................................... 21 3.4.5输出转换为物理量 ......................................... 22

I

3.2.6 I2C总线简介.............................................. 23 3.3 系统硬件电路 ................................................. 24 3.3.1 稳压电源................................................. 24 3.3.2 晶振电路................................................. 25 3.3.3 SHT11传感器电路 ......................................... 26 3.4本章小结 ..................................................... 26 第4章 系统的软件设计 ........................................27 4.1程序框图 ..................................................... 27 4.2 延时程序 ..................................................... 28 4.3 SHT11检测传输 ............................................... 28 4.3.1 SHT11开始信号 ........................................... 28 4.3.2 SHT11的重连接 ........................................... 29 4.3.3 SHT11的写函数 ........................................... 29 4.3.4 SHT11的应答信号 ......................................... 30 4.3.5 SHT11数据通信结束 ....................................... 31 4.3.6 SHT11读取函数 ........................................... 31 4.3.7 SHT11寄存器设置函数 ..................................... 32 4.4 SHT11测量温湿度 ............................................. 32 4.5测量结果处理以及报警 ......................................... 33 4.6本章小结 ..................................................... 34 第5章 系统抗干扰措施 ........................................36 5.1硬件抗干扰措施 ............................................... 36 5.2 软件抗干扰措施 ............................................... 37 5.3 本章小结 ..................................................... 37 第6章 结论 .................................................38 参考文献 ....................................................39 致谢 ........................................................40 附录 ........................................................41 实物图........................................................... 41

II

沈阳工业大学本科生毕业设计(论文)

第1章 绪 论

1.1 选题意义

湿度和温度是测量领域内十分重要的被测对象。不管是人类赖以生存的居住环境,还是工农业生产,亦或者是军事、气象观测等领域都需要对温度和湿度进行测量和控制。随着电子技术、计算机技术、通信技术、传感器及传感器材技术的迅速发展,测量领域内对温度和湿度的检测也取得了跨越式的发展!可以说对温湿度的测量与控制水平直接影响到人类的所有活动。 1.1.1 生活环境与温湿度的关系

现代人类对生活环境的要求越来越高,尤其是温湿度的影响,温度高了或者

低了都直接影响着这个社会,而湿度低了或高了也同样影响着我们的生活以及其他物种的生存条件。 1.1.2 检测温湿度的意义

湿度和温度是众多领域中需要检测的重要环境参数。不仅在工业、现代农业,还是在气象卫星、仓库保管等领域,对温度和湿度的测量都是随处可见的。对温度和湿度的测量与监控也是十分有意义的。对湿度和温度进行合理有效的调控不仅可以节约能源还更有利各行业安全健康的发展。

在工业领域,各种现代化的机器设备都需要考虑其所在工作环境的温湿度。电器设备是工业领域最常使用也是使用最多的基础设备。温湿度的高低对电器设备的研发者来说是必须要考虑的重要课题。工程师在设计电器产品的时候必须要考虑设计出的产品将来工作环境中温湿度的大小,使用过程中散热通风的问题。选择合适的材料并且对电气设备外表面进行合理有效的封装可以提高电气设备的使用寿命。大型的电器设备长期处于高电压、大电流和满负荷运行,其结果是造成热量集结加剧,由电流热效应造成的危害直接影响电器设备的绝缘设施,危害机器的正常运转和操作人员的人身安全,所以就要求对电气设备的温湿度状况进行测量控制。

温湿度对植物、动物的生长都有一定的影响,当温度达到了植物和动物生长所能承受的最高值和最低值时,这些植物和动物就会慢慢的消失,或者演变成其他的一些物种,同样湿度也对动植物的生长有着不可小视的影响,所以对一定的

1

沈阳工业大学本科生毕业设计(论文)

温湿度我们必须测量。同时我们也必须要记录大气的温湿度的变化,这样我们才更能对我们的生活的环境的变化有个直观的了解。

1.2 国内外发展趋势

近年来,国内外在湿度和温度传感器研发领域取得了长足进步。温湿度传感器正从结构复杂、功能简单向集成化、智能化、多参数检测的方向迅速发展,为开发新一代温湿度测控系统创造了有利条件,也将温度、湿度测量技术提高到新的水平。国内数字温湿度仪测量温湿度采用的主要方法有:“温—阻”法和“湿—阻”法,即采用电阻型的温湿度传感器,利用其阻值随温湿度的变化测定空气的温度和相对湿度[1]。受传感器灵敏度的限制,这类温湿度仪的精度不可能很高,一般条件下还可以满足需要,但是在环境实验设备等对精度要求颇高的场合就难以满足要求了。

目前,国外对温湿度传感器技术的研究也有了较大的进展,特别是用电阻式温湿传感器发展更快,人们不仅在电阻式陶瓷温湿度传感器特性方面做了大量工作,而且在高分子电阻式湿度传感器上做出可喜的研究成果。

1.3 主要工作任务

在对各类湿度、温度传感器原理介绍的基础上,根据本毕业设计实际的任务要求,完成湿度、温度传感器芯片的选型,系统芯片的选择,并设计显示接口电路、电源电路、报警电路、部分功能电路的程序。系统开始工作后,根据初始条件读取湿度值和温度值,测量数据经处理后,将其与设定的湿温度值比较,如果发现当前的温湿度超限,则发出报警信号,未超限时,系统显示正常的湿温度度值。

1.4 本章小结

本章主要介绍了所选课题的研究意义、温湿度测量国内外的发展趋势、系统的主要性能指标、及主要任务。温湿度检测是本设计的核心,也是以后各章节着重介绍的内容。

2

沈阳工业大学本科生毕业设计(论文)

第2章 系统方案选择和工作原理

2.1系统综述

根据本设计第一章要求的性能指标,方案设计时不仅要考虑怎么样实现测量一定精度的温湿度信号值的基本功能,还要考虑温湿度超限时系统的报警功能。

根据设计要实现的功能,还要考虑系统控制芯片扩展口分配方案。 选择LPC1768单片机就能够满足设计要求。作为工业用的环境检测类仪器,系统工作的可靠性,实用性,长久性指标也是系统在设计时值得考虑的几个因素。

2.2系统设计方案选择

根据目前国内外市场上常用的各种温湿度检测仪器,结合本设计的设计任务要求,能实现本设计要求的方案基本上有以下三种。

(1)纯模式

这种方案所有的电路均采用模拟电路构成,包括湿度、温度信号的采样、放大电路、报警电压的电位调节设置,模拟比较器的选用以及驱动超限报警电路,模拟的电磁结构的指针式显示电路等,尽管这种电路也能起到温度,湿度的实时测量与报警,但是不能获得湿度、温度的历史数据,显示方式也不够直观,在抗干扰性能上由于电路没有足够的判断能力可能会增加误报警从而引起错误动作,而且在价格上也无优势可言,由上述原理构成的这类仪表被称之为第一代仪表,目前设计的仪表中极少使用这类结构。

(2)数字式

这种方案在信号的采样、放大电路、报警设置以及报警电路等环节与第一种方案区别不大,只是在放大电路后采用了A/D转换电路,它将模拟量转换成数字量,然后经过驱动电路进行数码显示,它最大的好处是显示直观,这是模拟式产品向智能式产品过渡的中间型产品,属于第二代仪表,在上个世纪80年代的设计中大都采用这种结构的方案,在日常生活中看到的大都是未被替换的产品。在目前的设计中,基本上是不采用这种方案的[2]。

(3)智能式

这是目前检测类仪器首选的方案,利用目前成熟的计算机技术,依靠计算机强大的处理能力,对数据前向通道采集到的湿度,温度数据进行判断、处理、存储,并可采用十分简单的方法通过显示驱动芯片将显示信息送出进行数码显示。

3

沈阳工业大学本科生毕业设计(论文)

对测量所得结果超限时的报警处理可以按照测量时间的不同情况分别设置不同的报警值。系统将会对测量回路巡回监测。

常规的环境参数中,湿度是最难准确测量的一个参数。用干湿球湿度计或毛发湿度计来测量湿度的方法,早已无法满足现代科技发展的需要。这是因为测量湿度要比测量温度复杂的多,温度是个独立的被测量,而湿度却受其它因素(大气压强、温度)的影响。所以湿度的测量比温度的测量要复杂的多。

目前国内外对温度和湿度测量产品有很多,但是大部分的产品都是用红外热辐射的传感器制作的。这种产品结构复杂,价格昂贵并不适用于大气的测量。本设计使用比较常见的温湿度传感器和价格便宜的电子元器件,实现检测系统的智能化。它还具有较高的安全性,可靠性,适用于一般的家庭。鉴于国外欧美等国家微电子技术的发展,在不少的测试领域,将一个系统的所有电路,包括CPU都集成在一块芯片上,构成一个集成的系统,况且这也是目前仪表发展的方向。所以本设计采用集成芯片SHT11作为温湿度传感器。鉴于以上情况,本课题考虑到国内目前的现状,构成器件的来源以及微电子技术的发展趋势,本设计决定采用智能化的设计方案设计。

从节约能源和成本及使用方便的角度考虑,每一个设计都要本着满足设计要求的前提下,尽量简单方便快捷的设计。这个原则适用各个领域。由于各种不可克服的误差和适用环境的影响,检测仪表都存在一定的误差。不过我们还要竭尽所能的降低误差,提高设计的精度。

2.3系统工作原理

根据上述的方案选择和本课题的设计目标,加上目前智能仪表的一般特点,实现本设计智能测量系统的核心是LPC1768单片机。湿度和温度信号检测可以使用传统的电阻式温湿传感器测量,也可以采用集成的智能温湿传感器芯片测量。集成传感器芯片内部自带有信号放大电路。放大电路是提高单片机对信号进行识别的有效方法,而且在复杂电路的各种设计领域中是最常用也是必须要采用的方法。由温湿度传感器检测到的温湿度信号经过芯片内部的A/D转换电路,将模拟信号转化成数字信号后通过IIC总线输入通道传送给单片机。为了提高测量的精度,提高信号的转换质量,作为模拟信号转化成数字信号的A/D转换器,对其本身的性能要求也很高,因此传感器芯片内要有性能良好的A/D转换器。作为智能化的检测仪器,由LED实现的显示器使人们直观的观看到测量到的温度和湿度的值。在本设计系统中,正常情况下,显示电路可以实时的显示室内的温度和湿度。当温度和湿度超限时,报警电路可以立即发出警报,以便实现坏境温

4

沈阳工业大学本科生毕业设计(论文)

度和湿度的调整。

2.4 系统的性能指标

根据生活环境,设计本产品的主要技术指标为:

(1)测温范围:-40—+128.3℃;湿度测量范围为0—100%Rh (2)温度测量精度:±0.1oC (3)湿度测量误差:≤4%Rh

(4)可设置报警值,当湿度温度超限时,发出报警信号 (5)电源工作范围:DC4.5~5.5V

2.5本章小结

本章介绍了设计测量仪器的三种方式。最传统的是纯模模式。随着科学技术的进步,采用这种设计方案设计出来的产品由于自身的缺陷性已满足不了当今社会的要求,所以基本上被淘汰了。数字式检测仪表目前在实际应用中也很少用到。智能式是目前检测仪表设计采用的主流方案,也是本设计选用的方式。根据设计要求,本章对系统工作的原理也做了简要说明。

5

沈阳工业大学本科生毕业设计(论文)

第3章 系统的硬件设计

3.1 系统所用芯片

3.1.1 LPC1700简介

LPC1700系列Cortex-M3微控制器用于处理要求高度集成和低功耗的嵌入式应用。ARM Cortex-M3是下一代新生内核,它可提供系统增强型特性,例如现代化调试特性和支持更高级别的块集成。

LPC1700系列Cortex-M3微控制器的操作频率可达100MHz。ARM Cortex-M3 CPU具有3级流水线和哈佛结构,带独立的本地指令和数据总线以及用于外设的稍微低性能的第三条总线[3]。ARM Cortex-M3 CPU还包含一个支持随机跳转的内部预取指单元。

LPC1700系列Cortex-M3微控制器的外设组件包含高达512KB的Flash存储器、64KB的数据存储器、以太网MAC、USB主机/从机/OTG接口、8通道的通用DMA控制器、4个UART、2条CAN通道、2个SSP控制器、SPI接口、3个I2C接口、2-输入和2-输出的I2S接口、8通道的12位ADC、10位DAC、电机控制PWM、正交编码器接口、4个通用定时器、6-输出的通用PWM、带独立电池供电的超低功耗RTC和多达70个的通用I/O管脚[1]。

6

沈阳工业大学本科生毕业设计(论文)

图3-1 LPC1768基板

7

沈阳工业大学本科生毕业设计(论文)

图3-2 LPC1768简化方框图

8

沈阳工业大学本科生毕业设计(论文)

图3-3 LPC1768方框图 CPU和总线

9

沈阳工业大学本科生毕业设计(论文)

3.1.2特性

ARM Cortex-M3处理器,可在高至100MHz的频率下运行,并包含一个支持8个区的存储器保护单元(MPU);

ARM Cortex-M3内置了嵌套的向量中断控制器(NVIC);

具有在系统编程(ISP)和在应用编程(IAP)功能的512KB片上Flash程序存储器。把增强型的Flash存储加速器和Flash存储器在CPU本地代码/数据总线上的位置进行整合,则Flash可提供高性能的代码;

64KB片内SRAM包括:

32KB SRAM可供高性能CPU通过本地代码/数据总线访问; 2个16KB SRAM模块,带独立访问路径,可进行更高吞量的操作。 这些SRAM模块可用于以太网、USB、DMA存储器,以及通用指令和数据存储;

AHB多层矩阵上具有8通道的通用DMA控制器,它可结合SSP、I2S、UART、模数和数模转换器外设、定时器匹配信号和GPIO使用,并可用于存储器到存储器的传输[2];

多层AHB矩阵内部连接,为每个AHB主机提供独立的总线。AHB主机包括CPU、通用DMA控制器、以太网MAC和USB接口。这个内部连接特性提供无仲裁延迟的通信,除非2个主机尝试同时访问同一个从机[4];

分离的APB总线允许在CPU和DMA之间提供更多的带宽,更少的延迟。CPU无须等待APB写操作完成; 串行接口

–以太网MAC带RMII接口和相关的DMA控制器;

–USB 2.0全速从机/主机/OTG控制器,带有用于从机、主机功能的片内PHY和相关的DMA控制器;

–4个UART,带小数波特率发生功能、内部FIFO、DMA支持和RS-485支持。1个UART带有modem控制I/O并支持RS-485/EIA-485,全部的UART都支持IrDA;

–CAN控制器,带2个通道;

–SPI控制器,具有同步、串行、全双工通信和可编程的数据长度; –2个SSP控制器,带有FIFO,可按多种协议进行通信。其中一个可选择用于SPI

10

沈阳工业大学本科生毕业设计(论文)

其它外设:

70个(100个管脚封装)通用I/O(GPIO)管脚,带可配置的上拉/下拉电阻。AHB总线上的所有GPIO可进行快速访问,支持新的、可配置的开漏操作模式;GPIO位于存储器中,它支持Cortex-M3位带宽并且由通用DMA控制器使用;

12位模数转换器(ADC),可在8个管脚间实现多路输入,转换速率高达1MHz,并具有多个结果寄存器。12位ADC可与GPDMA控制器一起使用; 10位数模转换器(DAC),具有专用的转换定时器,并支持DMA操作; 4个通用定时/计数器,共有8个捕获输入和10个比较输出。每个定时器模块都具有一个外部计数输入。可选择特定的定时器事件来产生DMA请求[5];

1个电机控制PWM,支持三相的电机控制; 正交编码器接口,可监控一个外部正交编码器; 1个标准的PWM/定时器模块,带外部计数输入;

实时时钟(RTC)带有独立的电源域。RTC通过专用的RTC振荡器来驱动。RTC模块包括20字节电池供电的备用寄存器,当芯片的其它部分掉电时允许系统状态存储在该寄存器中。电池电源可由标准的3V锂电池供电。当电池电压掉至2.1V的低电压时,RTC仍将会继续工作。RTC中断可将CPU从任何低功率模式中唤醒;

看门狗定时器(WDT),该定时器的时钟源可在内部RC振荡器、RTC振荡器或APB时钟三者间进行选择;

支持ARM Cortex-M3系统节拍定时器,包括外部时钟输入选项; 重复性的中断定时器提供可编程和重复定时的中断;

标准JTAG测试/调试接口以及串行线调试和串行线跟踪端口选项; ? 仿真跟踪模块支持实时跟踪; ?

4个低功率模式:睡眠、深度睡眠、掉电、深度掉电; ? 单个3.3V电源(2.4V – 3.6V)。温度范围为-40℃- 85℃;?

4个外部中断输入,可配置为边沿/电平触发。PORT0和PORT2上的所有管脚都可用作边沿触发的中断源; ? 不可屏蔽中断(NMI)输入; ?

时钟输出功能,可反映主振荡器时钟、IRC时钟、RTC时钟、CPU时钟或USB时钟的输出状态;

当处于掉电模式时,可通过中断(包括外部中断、RTC中断、USB活动中断、以太网唤醒中断、CAN总线活动中断、PORT0/2管脚中断和NMI)将处理器从掉电模式中唤醒;

11

沈阳工业大学本科生毕业设计(论文)

每个外设都自带时钟分频器,以进一步节省功耗;

带掉电检测功能,可对掉电中断和强制复位分别设置阀值; 片内有上电复位电路;

片内晶振工作频率为1MHz到24MHz;

4MHz内部RC振荡器可在±1%的精度内调整,可选择用作系统时钟 3.1.3结构概述

ARM Cortex-M3包含三条AHB-Lite总线,一条系统总线以及I-code和D-code总线,后二者的速率较快,且在TCM接口的用法类似:一条总线专用于指令取指(I-code),另一条总线用于数据访问(D-code)。这二条内核总线的用法允许同时执行操作,即使同时要对不同的设备目标进行操作[6]。

LPC1700系列Cortex-M3微控制器使用多层AHB矩阵来连接上Cortex-M3总线,并以灵活的方式将其它总线主机连接到外设,允许矩阵的不同从机端口上的外设可以同时被不同的总线主机访问,从而能获取到最优化的性能。图1.2所示为多层矩阵连接的详细情况[7]。

APB外设使用多层AHB矩阵的独立从机端口通过两条APB总线连接到CPU。这减少了CPU和DMA控制器之间的争用,可实现更好的性能。APB总线桥配置为缓冲区写操作,使得CPU或DMA控制器无需等待APB写操作结束。 3.1.4 ARM Cortex-M3处理器

ARM Cortex-M3是一个通用的32位微处理器,它具有高性能和超低功耗的特性[8]。Cortex-M3还提供许多新的特性,包括Thumb-2指令集、低中断延时、硬件除法、可中断/可持续的多次加载和存放指令、对中断的自动状态进行保存和恢复、紧密结合中断控制器与唤醒中断控制器、多条内核总线可同时用于访问

[9]

采用这样的流水处理技术,使得各个器件的处理和存储器系统可以连续进行

操作。通常,当一个指令正在执行时,第二个指令正在进行解码,而第三个指令正在存储器中被取指出来[9]。

LPC1700系列Cortex-M3微控制器使用Cortex-M3 CPU的r2p0版本,其中包含了下面所标记的众多可配置选项。 系统选项:

包含嵌套的向量中断控制器(NVIC)。NVIC包括SYSTICK定时器; 包含唤醒中断控制器(WIC)。WIC可实现更有效的选项,将CPU从低功耗

12

沈阳工业大学本科生毕业设计(论文)

模式中唤醒;

包含存储器保护单元(MPU);

包含ROM表。ROM表提供了调试部件到外部调试系统的地址; 调试相关的选项: 包含JTAG调试接口;

包含串行线调试。串行线调试允许仅使用两条线进行调试操作,简单的跟踪功能可增加第三条线;

包含嵌入式跟踪宏单元(ETM)。ETM提供指令跟踪功能;

包含数据观察点和跟踪(DWT)单元。DWT允许数据地址或数据值匹配为跟踪信息或触发其它事件。DWT包含4个比较器和计数器以用于特定的内部事件;

包含指令跟踪宏单元(ITM)。软件可写ITM以发送信息到跟踪端口; 包含跟踪端口接口单元(TPIU)。TPIU编码并向外面提供跟踪信息。这可以在串行线浏览器管脚(Serial Wire Viewer pin)或4位并行跟踪端口上实现;

包含Flash修补和断点(FPB)。FPB可产生硬件断点并且在代码空间中重新映射特定的地址到SRAM作为更改非易失性代码的暂时方法。FPB包括2个文字比较器(literal comparator)和6个指令比较器。 3.1.5片上Flash存储器系统

LPC1700系列Cortex-M3微控制器含有512KB的片上Flash存储器。一个新的2-端口Flash存储器加速器通过两条快速AHB-Lite总线将其使用性能扩至极限。该存储器可用于存放代码和数据[7]。对Flash存储器的编写有若干种方式来实现。它可通过串口来进行在系统编程。应用程序也可以在运行时对Flash进行擦除和/或编程,从而为数据存储域固件升级等操作带来了极大的灵活性。 3.1.6片上静态RAM

LPC1700系列Cortex-M3微控制器包含共计为64KB的片上静态RAM存储器。这包括主32KB SRAM(CPU和高速总线上的3个DMA控制器均可对其进行访问)以及另外两个各为16KB的、位于AHB多层矩阵独立从机端口的SRAM模块。

这种结构允许各自执行CPU和DMA访问操作,从而对总线主机的延迟变少或无延迟。

13

沈阳工业大学本科生毕业设计(论文)

3.1.7看门狗定时器 1)特性

如果没有正确地周期性喂狗,则产生片内复位; 具有调试模式;

可通过软件使能,但需要一次硬件复位或禁止看门狗产生复位/中断; 错误的或不完整的喂狗时序会令看门狗产生中断/复位(如果使能); 具有指示看门狗发生复位的标志; 带内部预分频器的可编程32位定时器;

可选择TWDCLK×4倍数的时间周期:从TWDCLK×256×4到TWDCLK×232×4;

看门狗(WDCLK)可以选择内部RC振荡器(IRC)或APB外设时钟作为时钟源。这为看门狗在不同的功率下提供了较宽的时序选择范围。为了增加可靠性,它还可以使看门狗定时器在一个与外部晶体及其相关元件无关的内部时钟源下运行;

使用IRC作为时钟源时,看门狗定时器可配置成在深度休眠模式中运行。 2) 应用

看门狗的用途是在微控制器进入错误状态后的一定时间内复位。当看门狗使能时,如果用户程序没有在溢出周期内喂狗(给看门狗定时器重装定时值),看门狗会产生一个系统复位。

有关片内看门狗和其他外设之间的相互作用的详细内容(尤其是复位和引导程序),请参考“系统控制”章节的“复位”小节。 3)描述

看门狗定时器包括一个4分频的预分频器和一个32位计数器。时钟通过预分频器输入定时器,定时器递减计数。定时器递减的最小值为0xFF。如果设置一个小于0xFF的值,系统会将0xFF装入定时器。因此看门狗定时器的最小定时间隔为v,最大定时间隔为TWDCLK×232×4,两者都是TWDCLK×4的倍数。 看门狗应当按照下面的方法来使用:

在WDTC寄存器中设置看门狗定时器的定时参数值; 在WDMOD寄存器中设置看门狗的工作模式;

通过向WDFEED寄存器依序写入0xAA和0x55启动看门狗; 在看门狗溢出前应再次喂狗以免发生复位或中断。

若看门狗设置为溢出复位模式,那么当看门狗溢出时,会引发CPU复位,

14

沈阳工业大学本科生毕业设计(论文)

并从向量表中加载栈指示器和编程计数器(与外部复位时的情况一样)。通过检查看门狗超时标志(WDTOF)可以判断系统复位是否由看门狗引发。WDTOF标志必须由软件清零。

看门狗定时器模块使用2个时钟:PCLK和WDCLK。PCLK供APB访问看门狗寄存器使用。WDCLK供看门狗定时器计数使用。

两个时钟域之间有同步逻辑。当WDMOD和WDTC通过APB操作更新时,新的值将在WDCLK时钟域逻辑的3个时钟周期后生效。当看门狗定时器在WDCLK时钟频率下运行时,同步逻辑会先锁存运行频率为WDCLK的计数器值,然后将计数器与PCLK同步,再作为WDTV寄存器的值供CPU读取。 3.1.8 定时器 1)概述

定时器用来对外设时钟(PCLK)进行计数,而计数器对外部脉冲信号进行计数,可以选择在规定的时间处产生中断或执行其它操作,这都由4个匹配寄存器的值决定[10]。它也包含4个捕获输入,用来在输入信号变化时捕捉定时器的瞬时值,也可以选择产生中断。 2) 基本配置

使用下列寄存器来配置定时器0/1/2/3:

1)功率:在寄存器PCONP中置位PCTIM0/1/2/3。

注:复位后,定时器0/1使能(PCTIM0/1=1),定时器2/3禁能(PCTIM2/3=0)。 2)外设时钟:在寄存器PCLK_SEL0中选择PCLK_TIMER0/1;在寄存器PCLK_SEL1中选择PCLK_TIMER2/3。

3)引脚:通过寄存器PINSEL来选择定时器引脚。通过寄存器PINMODE0来选择定时器引脚的模式。

4)中断:有关匹配和捕获事件的内容请参考寄存器T0/1/2/3MCR和T0/1/2/3/CCR。利用相应的中断置位使能寄存器使能NVIC中的中断。

5)DMA:在最多2种匹配情况下可产生定时的DMA请求。 3)特性

4个定时器/计数器,除了外设基址之外完全相同。4个定时器最少有2个捕获输入和2个匹配输出,并且有多个引脚可以选择。定时器2引出了全部4个匹配输出。

32位的定时器/计数器,带有一个可编程的32位预分频器; 计数器或定时器操作;

15

沈阳工业大学本科生毕业设计(论文)

每个定时器包含2个32位的捕获通道,当输入信号变化时捕捉定时器的瞬时值。也可以选择产生中断;

4个32位匹配寄存器,允许执行以下操作:

-匹配时连续工作,在匹配时可选择产生中断; -在匹配时停止定时器运行,可选择产生中断; -在匹配时复位定时器,可选择产生中断;

有4个与匹配寄存器相对应的外部输出,这些输出具有以下功能:

-匹配时设为低电平; -匹配时设为高电平; -匹配时翻转电平; -匹配时不执行任何操作。

3.2 温湿度传感器

不管是我们日常居住生活的房间,还是工农业生产、气象、环保、国防、科研、航天等领域,经常需要对所处环境的温湿度进行测量及控制。但在常规的环境参数中,湿度是最难准确测量的一个参数。一般情况下,室内室外环境中的温度都在-20—+45℃之间。所以选用智能化的集成温湿度传感器芯片SHT11,足以满足我们的设计要求。

计量法中,湿度定义为“物象状态的量”。日常生活中所指的湿度为相对湿度,用%RH表示。总而言之,湿度即气体中(通常为空气中)所含水蒸气量(水蒸气压)与相同情况下所含饱和水蒸气(饱和水蒸气压)的百分比。湿度传感器是指检测外界环境湿度的传感器,它将所测环境中的湿度信号转换为便于处理,显示,记录的电(频率)信号。湿度传感器在仓贮,工业生产,过程控制,环境监测,家用电器,气象等方面有着广泛的应用。温度传感器是指检测外界温度的传感器,它将所测环境中的温度信号转换为便于处理,显示,记录的电(频率)信号等,在很多领域都有普遍的应用。

湿度、温度传感器是本设计中核心的器件,其感湿感温特性直接决定了本设计的性能指标。湿度传感器的种类有很多,大致可以分为物性型,结构型,其他形式三大类。物性型包括电解质系,半导体及陶瓷系,聚合物系;结构型包括毛发型,肠膜型;其他形式包括干湿球式,石英振子式,种子法式等等。温度传感器从使用的角度大致可分为接触式和非接触式两大类。前者是让温度传感器直接与待测物体接触,来检测被测物体温度的变化,而后者是使温度传感器与待测物体离开一定的距离。检测从待测物体放射出的红外线,从而达到测温的目的。在

16

沈阳工业大学本科生毕业设计(论文)

接触式和非接触式两大类温度传感器中,相比之下运用较多的是接触式传感器,非接触式传感器一般在比较特殊的场合才使用。目前在工业生产和科学研究工作中得到广泛使用的接触式温度传感器主要是热电传感器。它是利用转换元件电磁参数随温度变化的特性,对温度和与温度有关的参量进行检测的装置,其中将温度变化转换为电阻变化的称热电阻传感器,金属热电阻式传感器简称热电阻,半导体热电阻式传感器简称热敏电阻,将温度变化转换为电动势变化的称为热电偶传感器。

近年来,国内外在温湿传感器研发领域取得了长足进步。温湿敏传感器正从简单的湿敏元件向集成化、智能化、多参数检测的方向迅速发展,为开发新一代湿度/温度测控系统创造了有利条件,也将湿度温度测量技术提高到新的水平。智能温湿度传感器(亦称数字温湿度传感器)是在20世纪90年代中期问世的。智能温湿度度传感器是微电子技术、计算机技术和自动化测试技术的结晶,它也是集成温湿度传感器领域中最具活力和发展前途的一种新产品。智能温湿度度传感器内部都包含温湿度传感器、A/D转换器、存储器(或寄存器)和接口电路。智能温湿传感器芯片具有三个显著特点:第一;能输出温湿度数据及相关的温湿度控制量,适配各种微控制器;第二;能以最简方式构成高性能、多功能的智能化温湿度测控系统;第三;它是在硬件的基础上通过软件来实现测试功能的。用干湿球湿度计或毛发湿度计来测量湿度的方法,早已无法满足现代科技发展的需要。这是因为测量湿度要比测量温度复杂的多,温度是个独立的被测量,而湿度却受其他因素(大气压强、温度)的影响。因此本设计选用智能温湿度传感器芯片,实现温湿度测量系统的智能化设计。 3.2.1 温湿测量相关概念

湿度和温度很久以前就与人类生活存在着密切的关系,但用数量来进行表示较为困难。湿度计测的历史可以追溯到中国的天秤型(公元前179年),这是最早的湿度计测。温度计测可追溯到记载的希腊时代的温度计。现代科学对温湿度做明确的定义和测量表示方法[12]。

绝对湿度:

单位体积(1m3)的气体中含有水蒸气的质量(g)。

但是,即使水蒸气量相同,由于温度和压力的变化气体体积也要发生变化,即绝对湿度D发生变化。D为容积基准。

相对湿度:

气体中所含的水蒸气(e)与气体饱和时所含的水蒸气(es)的比,用百分

17

沈阳工业大学本科生毕业设计(论文)

比表示。

但是,温度和压力的变化导致饱和水蒸气气压也将随之而变化。通常在工作和生活中我们使用的湿度即为相对湿度。

饱和水蒸气压(Saturation Vapor Pressure)

气体中所含水蒸气的量是有限度的,达到限度的状态即可称之为饱和,此时的水蒸气压即称为饱和水蒸气压。此物理量亦随着温度,压力的变化而变化,并且,0℃以下即使同一湿度,与水共存的饱和水蒸气压(esw)和与冰共存的饱和水蒸气压(esi)的值不同,通常所采用的是与水共存的饱和水蒸气压。各温度对应的饱和水蒸气压表在JIS-Z-8806卷中有记载。

露点:

温度较高的气体其所含水蒸气也较多,将此气体冷却后,其所含水蒸气的量即使不发生变化,但相对湿度也会增加。当达到一定温度、相对湿度达到100%饱和,此时,继续进行冷却的话,其中一部分的水蒸气将凝聚成露。此时的温度即为露点温度。露点在0℃以下结冰时即为霜点。 3.2.2 温湿度传感器的选择

湿度传感器的精度应达到±2%—±5%Rh,达不到这个水平很难作为计量器具使用,湿度传感器要达到±2%—±3%Rh的精度是比较困难的,通常产品资料中给出的特性是在常温(10℃—20℃)和洁净的气体中测量的。在实际使用中,由于尘土、油污及有害气体的影响,温湿度传感器使用时间一长,容易产生老化,精度下降。所以选择温湿度传感器就要考虑温湿度传感器的精度、长期稳定性,以及互换性。

湿度传感器的精度水平要结合其长期稳定性去判断。一般说来,长期稳定性和使用寿命是影响湿度传感器质量的头等问题。温湿度传感器在使用过程中,由于受到环境的影响都会产生年漂移。一般情况下年漂移量控制在1%Rh水平的产品很少,一般都在±2%Rh左右,甚至更高。

目前,湿度传感器普遍存在着互换性差的现象,同一型号的传感器不能互换,严重影响了使用效果,给维修、调试增加了困难,有些厂家在这方面作出了种种努力,(但互换性仍很差)取得的效果并不明显。

然而温湿度传感器的选择是本设计的核心问题。传统的模拟式的温湿度传感器一般都要设计信号调理电路并需要经过负复杂的校准和标定过程,因此测量精度难以保证,且在线性度、重复性、互换性、一致性等方面往往不尽人意。目前国际上新型传感器正从模拟式向数字式、集成化向智能化和网络化的方向发展。

18

沈阳工业大学本科生毕业设计(论文)

鉴于上述原因,本系统采用SHT11芯片测量温湿度值。SHT11是瑞士Scnsirion公司推出的基于CMOSensTM技术的新型温湿度传感器。该传感器将CMOS芯片技术与传感器技术完美的结合起来,从而发挥出它们强大的优势互补作用。

SHT11是一款新型的数字式温湿度传感器芯片。SHT11的外形尺寸仅为7.6(mm)×5(mm)×2.5(mm),体积与火柴头相近。出厂前,每只传感器都在温室中做过精密标准测试。标准系数被编成相应的程序存入校准存储器中,在测量工程中可以对相对湿度进行自动校准。它不仅能准确测量相对湿度,还能测量湿度和露点。测量相对的范围是0—100%,分辨率0.3%Rh。测量温度的范围-40℃—+123.8℃,分辨率为0.1℃。测量露点的精度<±1℃。在测量湿度、温度时A/D转换器的位数分别可达12位、14位。利用降低分辨力的方法可以提高测量速率,减小芯片的功耗。该芯片广泛应用于冷暖空调、汽车、消费电子、自动控制等领域。采用SHT11进行温湿度实时监测的系统具有精度高、成本低、体积小、接口简单等优点;另外SHT11芯片内部集成了12、14位A/D转换器,且采用数字信号输出,因此抗干扰能力也比同类芯片高。该芯片在温湿度监测、自动控制等领域均已得到广泛应用。SHT11的主要特性如下:

●将温湿度传感器、信号放大调理、A/D转换、I2C总线接口全部集成于一芯片(COMensTM技术);

●可给出全校准相对湿度及温度值输出; ●带有工业标准的I2C总线数字输出接口; ●具有露点值计算输出功能; ●具有卓越的长期稳定性;

●是只读输出分辨率为14位,温度值输出分辨率为12位; ●小体积(7.65×5.08×23.5mm),可表面贴装; ●具有可靠的CRC数据传输校验功能; ●片内装载的校准系数可保证100%互换性; ●电源电压范围为2.4—5.5V;

●电流消耗,测量时为550μA,休眠时为3μA; 3.2.3 SHT11的工作原理

SHT11的DATA引脚在SCK时钟的下降沿之后改变状态,并仅在SCK时钟上升沿后有效,所以,单片机可以在SCK高电平时读出数据,而当其向SHT11发送数据时,则必须保证DATA上的电平状态在SCK高电平段稳定。在需要输出高电平时,单片机将置为高阻状态,由外部的上拉电阻将信号拉至高电平,从

19

沈阳工业大学本科生毕业设计(论文)

而实现高电平输出。SHT11首先由两个传感器分别测量相对湿度和温度信号,经过放大电路放大后分别送到14位的ADC进行A/D转换、标准和纠错,最后通过二线制的串行接口,将相对湿度和温度的数据送至单片机。最后利用单片机完成非线性补偿和温度补偿。SHT11的引脚图如图3-4所示。

图3-4 SHT11的引脚图

SHT11各引脚功能如下: GED:接地端

DATA:串行数据输出/输入端 SCK :串行口时钟输入端 VDD :接电源端 NC:不连接

SHT11的湿度检测运用电容式结构,并采用具有不同保护的“微型结构”检测电极系统与聚合物覆盖层来组成传感器芯片的电容,除保持电容式的原有特性外,还可以抵御来自外界的影响。由于它将温度传感器与湿度传感器结合在一起而构成了一个单一的个体,因而测量精度较高且可得出露点,同时不产生由于温度与湿度传感器之间随温度梯度变化引起的误差。CMOSensTM技术不仅将温湿度传感器结合在一起,而且还将信号放大电路、模/数转换器、校准数据存储器、标准I2C总线等电路集成在一个芯片内。SHT11传感器的校准系数预先存在OTP内存中。经校准的相对湿度和温度传感器与A/D转换器相连,可以将转换后的数字温湿度值送给二线I2C总线器件,从而将数字信号转换为符合IIC总线协议的串行数字信号。

传输开始:初始化传输时,应首先发出“传输开始”命令,该命令可在SCK为高电平时使DATA由高电平变为低电平,并在下一个SCK为高时将DATA升

20

沈阳工业大学本科生毕业设计(论文)

高。接下来的命令顺序包含三个地址(目前只支持“000”)和5个命令位,当DATA脚的SCK位处于低电平时,表示SHT11正确接收到命令。

连接复位顺序:如果与SHT11传感器的通讯中断,下列信号顺序会使串口复位:即当DATA线处于高电平时,触发SCK9次以上(含九次),此后接着发一个“传输开始”命令。

温湿度测量时序:当发出了温湿度测量命令后,控制器就要等到测量完成。使用8/12/14位的分辨率测量分别需要大约11/55/210毫秒的时间。为表明测量完成,SHT11会使数据线为低,此时单片机必须重新启动SCK,然后传送两字节的测量数据与1字节的校验码。控制器必须通过使DATA为低来确认每一个字节。通讯在确认CRC数据位后停止。如果没有用校验,则单片机就会在测量数据后保持SCK为高来停止通讯,SHT11在测量和通讯完成后会自动返回睡眠模式。需要注意的是,为了使SHT11的温升低于0.1℃,此时的工作频率不能大于标定的15%(如:12位精度时,每秒最多进行三次测量)。

低电压检测,SHT11工作时可以自行检测VDD电压是否低于2.45V,准确度为±0.1V。

下载校准系数:为了节省能量并提高速度,在每次测量前都要重新下载校准系数,从而使每一次测量节省8.2ms的时间。

测量分辨率设定:将测量分辨率从14位(温度)和12位(湿度)分别减到12位和8位可应用于高速或低功耗场合。

由于将传感器与其它功能电路部分结合在一起,因此,该传感器具有比其它类型的湿度传感器优越得多的性能。首先是传感器信号强度的增加增强了传感器芯片的抗干扰性能,保证了传感器的长期稳定性。而A/D转换同时完成,则降低了传感器对干扰噪声的敏感程度。其次在传感器芯片内部装载的校准数据保证了每一只湿度传感器具有相同的功能,具有100%的互换性。最后,传感器可直接通过IIC总线与任何类型的单片机。 3.2.4 SHT11的传输特性 (1)湿度值输出

SHT11可通过I2C总线直接输出数字量湿度值,其相对湿度数字输出特性曲线如图3-4所示。

21

沈阳工业大学本科生毕业设计(论文)

图3-5 SHT11传感器相对湿度数字输出特性曲线

由图可以看出,SHT11的输出特性呈一定的非线性,为了补偿湿度传感器的非线性,可以按如下公式修正湿度值:

RHIinera=C1SORH+C2SORH+C3SORH2 (3-1) 式中,SORH为传感器相对湿度测量值, 系数取值如下:

12位:SORH:C1=-4,C2=0.0405,C3=-2.8×10-6 8位:SORH:C1=-4,C2=0.648,C3=-7.2×10-4 (2)温度值输出

由于SHT11温度传感器的线性度非常好,故可以用下列公式将温度数字输出转换成实际温度值:T=d1+d2SOT。当电源电压位5V,且温度传感器的分辨率为14位时,d1=-4,d2=0.01,当温度传感器的分辨率为12位时,d1=-40,d2=0.04。

(3)露点计算

空气的露点值可根据相对湿度和温度值得来,具体的计算公式如下:LogEW=0.66077+7.5/(273.3+T)+[log(RH)-2] (3-2) Dp=[(0.66077-LogEW)×273.3]/(LogEW-8.16077) (3-3) 3.4.5输出转换为物理量 1)相对湿度

为了补偿传感器的非线性以获取精确数据,建议使用下列公式来转换输出: RHlinear=c1+c2*SORH+c3*SORH2

22

沈阳工业大学本科生毕业设计(论文)

SORH 12bir 8bit

2)湿度传感器相对湿度的温度补偿

实际的温度与25℃(~77°F)相差较大时,湿度传感器的温度系数需要修正: RHtrue=(T℃-25)(t1+t2*SORH)+RHlinear SORH 12bir 8bit

3.2.6 I2C总线简介

对于较复杂的单片机应用系统,元件与芯片之间短距离通信的物理线路往往比较多,这样不仅增加了硬件应用系统设计的难度,而且也不利于系统稳定性,成了系统设计中的一个瓶颈。针对这一问题,Philips公司提出了I2C总线协议,I2C总线协议有效地解决了这一问题。I2C(Inter-Integrated Circuit)总线是Philips公司开发的两线式串行总线,用于连接单片机及其外围设备。由于I2C总线仅用于两根信号线,并支持多主控工作方式,所以I2C总线在电子产品设备中应用非常普遍。

I2C总线是由数据线SDA和时钟线SCL构成的串行总线,可发送和接收数据。在CPU与被控I2C之间、进行双向传送,最高传送速度100 kbit/s。I2C总线在传送数据的过程中共有4种基本类型信号,分别是:开始信号、数据传输信号、应答信号和结束信号。

(a)开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。所有的命令都必须在开始条件以后进行。

(b)结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。所有的操作都必须在停止条件以前结束。I2C总线开始和停止数据传送的时序图如图3-6所示。

23

C1 -4 -4

C2 0.0405 0.648

C3 -2.8*10-6 -7.2*10-4

t1 0.01 0.01

t2 0.00008 0.00128

相当于 0.12 %RH/℃ @ 50% RH

沈阳工业大学本科生毕业设计(论文)

开始 停止

图3-6 I2C总线开始和停止数据传输时序图

(c)数据传输信号:在开始条件以后,时钟信号SCL的高电平周期期间,当数据线稳定时,数据线SDA的状态表示数据有效,即数据可以被读走,开始进行读操作。在时钟信号SCL的低电平周期期间,数据线上数据才允许改变。每位数据需要一个时钟脉冲。

图3-7 I2C总线有效数据传输时序图

(d)应答信号:接收数据的SHT11收到8bit数据后,向发送数据的单片机发出特定的低电平脉冲,表示已收到数据。这要求单片机必须产生一个与确认位相应的额外时钟脉冲(第9个脉冲)。若单片机确认失败,单片机必须发送一个数据结束信号给从器件。这时SHT11必须使SDA线保持高电平,使单片机能产生停止条件。I2C数据传输和信号应答时序图如图所示。

3.3 系统硬件电路

3.3.1 稳压电源

单片机需要3.3V电压供电,此电压由5V直流转换而来,如下图所示。

各电容均起滤波作用,U7为3.3V 三端稳压器。

24

沈阳工业大学本科生毕业设计(论文)

图3-8 稳压电源

3.3.2 晶振电路

选用无源12MHZ晶振,为LPC1768提供震荡信号。 时钟电路配备固定的32.768KHZ无源晶振。

图3-9 晶振电路

25

沈阳工业大学本科生毕业设计(论文)

3.3.3 SHT11传感器电路

图3-10 SHT11传感器电路

3.4本章小结

本章主要介绍了系统单片机和传感器的选型以及硬件电路部分。单片机选择LPC1768,传感器选择了SHT11型温湿度传感器。同时对芯片和传感器的性能指标和读取时序等做了介绍。

26

沈阳工业大学本科生毕业设计(论文)

第4章 系统的软件设计

4.1程序框图

开始 初始化 启动温/湿度测量 判断显示温度/湿度 判断显示通道 读温度/湿度值 显示温度/湿度值 判断是否超出 设定范围 N Y 报警 图4-1 程序框图

27

沈阳工业大学本科生毕业设计(论文)

4.2 延时程序

void delay_us(unsigned int nus) {

unsigned int i; unsigned char j; for(i=0;i

for(j=0;j<6;j++){} } }

void delay_ms(unsigned int nms) {

unsigned int i; for(i=0;i

4.3 SHT11检测传输

4.3.1 SHT11开始信号

用一组“启动传输”时序,来初始化传输。它包括:当SCK时钟处于高电平时DATA跳转为低电平,紧接着SCK变为低电平,随后是SCK处于高电平时DATA跳转为高电平。 void START_SHT11() {

SETCLK(); SETDATA(); delay_us(5); CLRDATA(); delay_us(5); CLRCLK(); delay_us(5);

28

沈阳工业大学本科生毕业设计(论文)

}

SETCLK(); delay_us(5); SETDATA();

4.3.2 SHT11的重连接

如果SHTxx的通讯中断,可以使用下列信号时序复位串口:

当DATA处于高电平时,触发SCK时钟9次或者更多次数。在传输下一次指令之前,必须发送一个“启动传输”时序。这些时序只能复位串口,状态寄存器内容仍然保留。 void reconnect() }

4.3.3 SHT11的写函数

void write_sht11(unsigned char cmd) /* sht11的写函数 */ {

unsigned char i; for(i=0;i<8;i++) {

CLRCLK(); if(cmd&0x80) { }

29

unsigned char k; { }

START_SHT11();

SETCLK(); delay_us(5); CLRCLK(); SETDATA(); for(k=0;k<9;k++)

SETDATA();

沈阳工业大学本科生毕业设计(论文)

else { CLRDATA();

}

delay_us(5); SETCLK(); cmd=cmd<<1; delay_us(5); // CLRCLK();

}

SETDATA();//释放总线

}

4.3.4 SHT11的应答信号 void SHT11_answer() /* sht11应答信号{ CLRCLK(); delay_us(5); SETCLK(); delay_us(5);

LPC_GPIO3->FIODIR&=input;

// LPC_GPIO3->FIOPIN=LPC_GPIO3->FIOPIN|0x02000000;

while(LPC_GPIO3->FIOPIN&0x02000000); CLRCLK(); delay_us(5); SETDATA();

}

void SHT11_DATA_READY() { LPC_GPIO3->FIODIR&=input; //select as intput

// LPC_GPIO3->FIOPIN=LPC_GPIO3->FIOPIN|0x02000000;

while(LPC_GPIO3->FIOPIN&0x02000000);

}

30

*/

沈阳工业大学本科生毕业设计(论文)

4.3.5 SHT11数据通信结束 void SHT11_end() { }

4.3.6 SHT11读取函数

DATA的三态门引脚用于数据的读取。DATA在SCK时钟的下降沿状态改变,并且仅在SCK时钟的上升沿有效。在数据传输期间,在SCK时钟处于高电平时,DATA必须保持稳定。避免信号冲突,微处理器应该讲DATA拉低。需要一个外接的上拉电阻(例如 10k?)把信号拉至高电平。上拉电阻通常包含在微处理器的I/O电路中。

unsigned char read_sht11(void) {

unsigned char j,temp=0,data=0; SETDATA(); for(j=0;j<8;j++) {

SETCLK(); data=data<<1;

delay_us(5);

LPC_GPIO3->FIODIR&=input;

SETDATA();

delay_us(5); delay_us(5); SETCLK(); CLRCLK(); delay_us(5);

//////////

/* sht11数据通信结束 */

LPC_GPIO3->FIOPIN=LPC_GPIO3->FIOPIN|0x02000000; temp=((LPC_GPIO3->FIOPIN&0x02000000)>>24); if(temp)

data=data|0x01; else

data=data&0xFE;

31

沈阳工业大学本科生毕业设计(论文)

}

}

CLRCLK(); delay_us(5);

SETDATA();

return(data);

4.3.7 SHT11寄存器设置函数 void SHT11_Write_Register() { }

START_SHT11(); write_sht11(0x06); SHT11_answer();

write_sht11(0x00); //12 and 14 bit temperrature SHT11_answer();

/* sht11寄存器设置函数 */

4.4 SHT11测量温湿度

在发布一组测量命令(0000 0101表示测湿度,0000 0011表示测温)后,控制器要等待测量结束。这个大致需要11/55/210ms分别对应8/12/14位测量。准确的时间随内部晶振的速度有±15%的变化。SHTxx通过拉DATA至低电平并进入空闲模式,来表示测量结束。控制器再次触发SCK之前必须等待“数据备妥”信号来读出数据。测量数据在读出前先被存储,这样控制器可以继续执行其他任务在需要时再读出数据。

接着传输出2个字节的测量数据和1个字节的CRC和校验。uC必须通过下拉DATA为低电平来确认每个字节。每个数据从最高有效位(MSB)开始,右值合法(例如:对于12位数据第5个SCK是最高有效位,而对于8位数据第一个字节是无意义的)。

用CRC数据的应答位表明通讯结束。如果不用CEC-8校验,控制器可能在测量数据LSB结束后通过保持应答位sck为高,来终止通讯。 在测量和通讯结束之后,设备自动进入休眠模式。 unsigned short SHT11_Measure(unsigned char command) {

32

沈阳工业大学本科生毕业设计(论文)

}

unsigned short dat_1=0;

unsigned char data_high,data_low,CRC; unsigned char val,tt,i; START_SHT11(); write_sht11(command); SHT11_answer(); SHT11_DATA_READY(); data_high=read_sht11(); MCU_answer(); data_low=read_sht11(); MCU_answer(); CRC=read_sht11(); SHT11_end();

dat_1=(dat_1|data_high); dat_1=(dat_1<<8)|data_low; val=CRC_Table[(command^0x00)]; val=CRC_Table[(val^data_high)]; val=CRC_Table[(val^data_low)]; for(i=0;i<8;i++) { } val=tt; if(val==CRC)

return(dat_1); else

return(2); tt=tt<<1; tt|=val&0x01; val=val>>1;

4.5测量结果处理以及报警

取10次平均值

33

沈阳工业大学本科生毕业设计(论文)

if(i==10) {

i=0; j=0;

//10次平均值

dis_flag=1; Temperature=0; Humidity=0;

for(temp=0;temp<10;temp++) { }

Temperature=Temperature/10; T[0] = ((int)(Temperature*100))/100;

//温度整数

Temperature+=TE[temp];

T[1] = ((int)(Temperature*100))0; //温度小数

if(T[0]>29) //达到或超过30度报警 { } else { }

for(temp=0;temp<10;temp++) { }

Humidity=Humidity/10;

H[0] = ((int)(Humidity*100))/100;

//湿度整数

Humidity+=HU[temp];

LPC_GPIO0->FIOSET |=0x03800000; LPC_GPIO0->FIOCLR |= 0x03800000;

H[1] = ((int)(Humidity*100))0; //湿度整数 }

4.6本章小结

系统的软件编写是本次设计中的一个很重要的组成部分。软件的编写同时也

34

本文来源:https://www.bwwdw.com/article/jfy.html

Top