温度测量及湿度检测
温湿度计原理

温湿度计原理温湿度计是一种用于测量环境温度和相对湿度的仪器。
它可以帮助我们了解周围环境的状态,从而更好地控制室内温湿度,提高生活和工作的舒适度。
本文将介绍温湿度计的原理及其主要内容。
一、温湿度计的原理1. 温度测量原理温湿度计中常用的温度传感器有热电偶、热敏电阻、半导体传感器等。
其中,半导体传感器是目前应用最广泛的一种。
它利用半导体材料在不同温度下电阻值变化的特性来测量温度。
当半导体材料受到热量影响时,其内部电子会发生运动,导致电阻值发生变化。
通过测量这种变化,就可以得到当前环境的温度值。
2. 湿度测量原理湿度是指空气中水蒸气的含量,通常以相对湿度表示。
相对湿度越高,表示空气中含有越多的水蒸气。
常见的湿度传感器有电容式、电阻式、表面张力式等。
其中,电容式湿度传感器是应用最广泛的一种。
它利用两个电极之间的介质(通常是聚合物)的介电常数与空气中水蒸气含量之间的关系来测量相对湿度。
当空气中含有水蒸气时,介质会吸收水分,导致介电常数发生变化。
通过测量这种变化,就可以得到当前环境的相对湿度值。
二、温湿度计的主要内容1. 测量范围温湿度计的测量范围通常为-20℃~50℃和0%RH~100%RH。
不同型号的温湿度计具体测量范围可能会有所不同,需要根据实际需求进行选择。
2. 精确度温湿度计的精确度通常为±1℃和±5%RH。
精确度越高,表示测量结果越准确。
3. 显示方式温湿度计的显示方式通常有数字显示和液晶显示两种。
数字显示简单明了,适合于室内使用;液晶显示可以显示更多信息,适合于实验室等专业场合使用。
4. 功能特点现代化的温湿度计通常具备多种功能特点,如数据记录、报警功能、自动关机等。
这些功能可以提高温湿度计的使用效率和便捷性。
5. 电源方式温湿度计的电源方式通常有电池和充电式两种。
电池式温湿度计使用方便,但需要定期更换电池;充电式温湿度计可以通过USB接口或充电器进行充电,使用更加便捷。
三、总结温湿度计是一种常用的环境监测仪器,能够帮助我们了解周围环境的状态,从而更好地控制室内温湿度。
温度与湿度的测量

温度与湿度的测量引言:温度和湿度是我们日常生活中常常遇到的两个重要的气象参数。
无论是家庭生活还是工业生产,都需要对温度和湿度进行准确测量和控制。
本文将介绍温度和湿度的测量方法,包括传统的温度计和湿度计,以及现代的电子测量仪器。
一、温度的测量1. 传统温度计最常见的传统温度计是水银温度计。
它利用水银在温度变化时的膨胀和收缩来测量温度。
水银温度计具有精度高、响应速度快等特点,但也存在易破损、对环境污染等问题。
随着环境保护意识的提高,传统水银温度计的使用逐渐减少。
2. 现代电子温度计现代电子温度计通过利用温度与电阻之间的关系或温度与电压之间的关系来测量温度。
最常见的电子温度计是PT100电阻温度计和热电偶温度计。
PT100电阻温度计是根据铂电阻随温度变化而改变电阻值来测量温度的。
热电偶温度计则是利用两种不同材料的接触产生的热电效应来测量温度。
电子温度计具有精度高、抗干扰能力强等优点,广泛应用于工业自动化控制、医疗环境监测等领域。
二、湿度的测量1. 传统湿度计最常见的传统湿度计是湿度表。
湿度表通过测量空气中的水蒸气在一定温度下的饱和量来去测量湿度。
它包括干湿度计和毛发湿度计两种形式。
干湿度计通过测量湿度与干湿度计间的冷凝传热来测量湿度。
毛发湿度计则是利用纤维毛发的伸缩变化来测量空气的湿度。
传统湿度计具有结构简单、造价低等优点,但也存在响应慢、精度有限等局限。
2. 现代电子湿度计现代电子湿度计通过测量湿度对介质电容或电阻的影响来测量湿度。
最常见的是电容式湿度计。
电容式湿度计通过测量介质相对湿度对电容的影响来测量湿度。
另外,还有电阻式湿度计、电导式湿度计等。
电子湿度计具有响应快、精度高等优点,广泛应用于室内环境监测、农业生产等领域。
三、温湿度传感器为了更方便、更准确地测量温度和湿度,现代工程上常采用温湿度传感器。
温湿度传感器集温度和湿度测量于一体,输出数字信号,便于与计算机、仪器等设备连接。
常用的温湿度传感器有数字式温湿度传感器和模拟式温湿度传感器。
混凝土中温度和湿度检测方法

混凝土中温度和湿度检测方法一、引言混凝土在建筑和土木工程中广泛应用。
为确保混凝土结构的质量和可靠性,需要对混凝土的温度和湿度进行检测。
本篇文章将介绍混凝土中温度和湿度检测的方法。
二、混凝土中温度检测方法1. 探针式温度计法探针式温度计法是一种常用的混凝土中温度检测方法。
该方法需要在混凝土中插入一根温度计探针,通过读取探针上的温度值来确定混凝土的温度。
探针式温度计的使用步骤如下:1)在混凝土浇筑前,将探针插入到混凝土模具中,并固定好。
2)待混凝土浇筑完成后,将温度计接入数据采集系统,并记录温度值。
探针式温度计的优点是测量精度高,测量结果准确可靠。
但是,该方法需要在混凝土浇筑前就插入温度计探针,因此需要提前规划和安排。
2. 红外线温度计法红外线温度计法是一种非接触式的混凝土中温度检测方法。
该方法通过使用红外线温度计来测量混凝土表面的温度。
红外线温度计的使用步骤如下:1)将红外线温度计对准混凝土表面。
2)按下测量按钮,等待温度计显示温度值。
红外线温度计的优点是操作简单方便,不需要在混凝土中插入任何探针。
但是,该方法只能测量混凝土表面的温度,无法测量混凝土内部的温度。
三、混凝土中湿度检测方法1. 湿度计法湿度计法是一种常用的混凝土中湿度检测方法。
该方法通过使用湿度计来测量混凝土中的湿度。
湿度计的使用步骤如下:1)将湿度计放置在混凝土表面。
2)等待一段时间后,读取湿度计上的湿度值。
湿度计法的优点是操作简单方便,可以在混凝土表面快速测量湿度值。
但是,该方法无法测量混凝土内部的湿度值。
2. 电阻率计法电阻率计法是一种基于混凝土电阻率变化来测量混凝土中湿度的方法。
该方法需要在混凝土中插入一根电极,并通过电阻率计来测量混凝土的电阻率。
电阻率计法的使用步骤如下:1)在混凝土中插入电极,并固定好。
2)将电阻率计接入电极,并读取电阻率值。
电阻率计法的优点是可以测量混凝土内部的湿度值,测量结果较为准确。
但是,该方法需要在混凝土中插入电极,因此需要提前规划和安排。
温湿度检测报告

温湿度检测报告1. 引言本报告旨在介绍温湿度检测的原理、设备以及相关应用。
温湿度检测在各个领域都具有重要意义,尤其是在气象、农业、建筑以及工业生产等领域。
通过精确测量和监控环境的温湿度,我们能够更好地了解和改善所处环境的条件。
2. 检测原理温湿度检测是通过测量和记录环境中的温度和湿度来实现的。
温度是物体分子热运动的表现,常用单位为摄氏度(℃)或华氏度(℉)。
湿度是空气中水蒸汽含量的度量,通常以相对湿度(RH)百分比表示。
传统的温湿度检测仪器使用温湿度传感器,这些传感器可以根据物理或化学效应来测量温度和湿度。
常见的温度传感器有热电偶和电阻温度计,而湿度传感器则可使用电容、电阻或电化学方法来测量相对湿度。
3. 设备和仪器温湿度检测仪器通常包括以下部分:3.1 温度传感器温度传感器是测量和记录环境温度的关键组件。
常见的温度传感器包括:•热电偶:基于两种不同金属之间的热电效应,将温度转换为电压信号。
•热敏电阻:基于电阻与温度之间的关系,通过测量电阻值来计算温度。
•红外线传感器:利用物体发出的红外辐射来测量温度。
3.2 湿度传感器湿度传感器用于测量环境中的相对湿度。
常见的湿度传感器包括:•电容传感器:测量空气中水分含量对电容值的影响。
•电阻传感器:基于湿度对材料电阻的影响,将湿度转换为电阻值。
3.3 数据记录器数据记录器用于记录温湿度检测仪器所测得的数据。
记录器可采用内置储存器或外部存储介质,如SD卡或电脑连接接口。
记录仪通常具备时间戳和数据分析功能,方便用户对数据进行分析和处理。
4. 应用领域温湿度检测在各个领域都有广泛的应用,以下是其中一些常见的应用领域:4.1 气象学气象学需要准确测量和记录大气的温度和湿度。
这些数据对于预测天气趋势、气候研究以及天气预报至关重要。
4.2 农业农业生产对环境温湿度有严格的要求。
适宜的温湿度条件有助于作物生长和动物饲养。
温湿度检测可用于农田、温室和畜牧场等环境中,帮助农民监控和调节环境条件。
温湿度计的测量原理及使用方法 温湿度计是如何工作的

温湿度计的测量原理及使用方法温湿度计是如何工作的温湿度计的测量原理及使用方法一、温湿度计湿度定义在计量法中规定,湿度定义为"物象状态的量"。
日常生活中所指的湿度为相对湿度,用RH%表示。
总言之,即气体中(通常为空气中)所含水蒸气量(水蒸气压)与其空气相怜悯况下饱和水蒸气量(饱和水蒸气压)的百分比。
湿度很久以前就与生活存在着紧密的关系,但用数量来进行表示较为困难。
对湿度的表示方法有确定湿度、相对湿度、露点、湿气与干气的比值(重量或体积)等等。
二、湿度测量方法温湿度计湿度测量从原理上划分有二、三十种之多。
但湿度测量始终是世界计量领域中知名的难题之一、一个看似简单的量值,深究起来,涉及相当多而杂的物理—化学理论分析和计算,初涉者可能会疏忽在湿度测量中必需注意的很多因素,因而影响传感器的合理使用。
常见的湿度测量方法有:动态法(双压法、双温法、分流法),静态法(饱和盐法、硫酸法),露点法,干湿球法和电子式传感器法。
① 双压法、双温法是基于热力学P、V、T平衡原理,平衡时间较长,分流法是基于确定湿气和确定干空气的精准明确混合。
由于接受了现代测控手段,这些设备可以做得相当精密,却因设备多而杂,昂贵,运作费时费工,紧要作为标准计量之用,其测量精度可达±2%RH以上。
② 静态法中的饱和盐法,是湿度测量中较为常见的方法,简单易行。
但饱和盐法对液、气两相的平衡要求很严,对环境温度的稳定要求较高。
用起来要求等很长时间去平衡,低湿点要求更长。
特别在室内湿度和瓶内湿度差值较大时,每次开启都需要平衡6~8小时。
③ 露点法是测量湿空气达到饱和时的温度,是热力学的直接结果,精准度高,测量范围宽。
计量用的精密露点仪精准度可达±0.2℃甚至更高。
但用现代光—电原理的冷镜式露点仪价格昂贵,常和标准湿度发生器配套使用。
④ 干湿球法,这是18世纪就制造的测湿方法。
历史悠久,使用较为普遍。
干湿球法是一种间接方法,它用干湿球方程换算出湿度值,而此方程是有条件的:即在湿球相近的风速必需达到 2.5m/s 以上。
温湿度检测标准操作规程

温湿度检测标准操作规程温湿度检测标准操作规程一、目的与应用范围:1. 目的:为了确保温湿度检测的准确性和可靠性,保证测量结果符合相关标准和要求,制定本操作规程。
2. 应用范围:适用于所有需要进行温湿度检测的场所和设备。
二、术语和缩写:1. 温湿度:温度和湿度的简称。
2. 校准:通过与国家或行业标准设备进行比较,确定温湿度检测设备的准确性。
3. 检测:对温湿度进行测量的过程。
三、仪器设备:1. 温湿度计:应选择经过校准且精确可靠的仪器设备。
2. 温湿度标准样品:用于校准温湿度计的具备特定温湿度值的参照样品。
四、操作流程:1. 确认温湿度计状态良好,检查电量是否足够,并确保温湿度计的显示屏清晰可读。
2. 将温湿度标准样品放置在待测区域,确保样品没有受到其他外界因素的干扰,如直射阳光等。
3. 打开温湿度计的电源开关,等待一段时间,直到仪器稳定。
4. 将温湿度计的探测头放置在待测区域中,确保探测头与样品接触良好。
5. 静等温湿度计显示出稳定的温湿度数值,并进行记录。
记录格式应包括:测量时间、测量地点、温湿度数值和检测人员签名。
6. 将温湿度计的探测头移开待测区域,并关闭电源开关。
7. 温湿度计应及时进行校准,校准周期视使用频率和要求而定。
校准的具体操作应按照温湿度计的说明书进行。
8. 校准记录应详细记录校准时间、校准人员和校准结果,并保存至少两年。
五、注意事项:1. 温湿度计在使用前应仔细检查外观,如有损坏或异常现象,应立即停止使用并进行维修。
2. 温湿度计的使用应避免靠近热源或湿源,以免影响测量结果的准确性。
3. 对于数字式温湿度计,应定期更换电池,并检查显示屏是否清晰可读。
4. 温湿度计的校准应委托有资质的实验室进行,校准周期应根据具体情况和要求确定。
5. 在日常使用过程中,应注意保护温湿度计,避免碰撞损坏。
六、附录:1. 校准记录表格:根据实际情况设计,录入温湿度计的校准时间、校准结果等相关信息,确保记录的准确性和可追溯性。
(完整版)空调系统检测内容及取样办法

(完整版)空调系统检测内容及取样办法空调系统检测内容及取样办法
简介
该文档旨在介绍空调系统的检测内容和取样办法。
空调系统检测是为了确保空调系统正常运作并预防潜在问题的发生。
检测内容
以下是空调系统检测的主要内容:
1. 温度和湿度检测:测量空调系统的温度和湿度以确保其在合适的范围内运行。
2. 空气流量检测:检测空调系统中的空气流量,确保其达到设计要求。
3. 制冷剂检测:检查空调系统中的制冷剂,确保其质量和浓度符合标准。
4. 能效检测:评估空调系统的能效,包括能源消耗和效果。
5. 电气检测:检查空调系统的电气元件,确保其正常工作和安全性。
6. 噪音检测:测量空调系统的噪音水平,确保其在可接受范围内。
取样办法
在进行空调系统检测时,需要采取适当的取样办法来获取准确的数据。
以下是常用的取样办法:
1. 温度和湿度取样:使用温度计和湿度计在空调系统内外不同位置取样。
2. 空气流量取样:使用风速计在不同出风口和回风口处进行取样。
3. 制冷剂取样:使用制冷剂采样器在制冷循环中取样,注意遵守相关安全规定。
4. 能效取样:记录空调系统的能源消耗和性能数据,包括电力使用量和制冷效果。
5. 电气取样:使用多用途电表测量空调系统的电气参数,并检查电气元件的连接情况。
6. 噪音取样:使用噪音测量仪器在不同位置进行取样,记录噪音水平。
以上是空调系统检测内容及取样办法的简要介绍,这些检测和取样办法对于确保空调系统的正常运行和维护至关重要。
室内温湿度计工作原理

室内温湿度计工作原理
室内温湿度计是一种常见的仪器,用于测量室内的温度和湿度。
它的工作原理大致可分为以下几个步骤:
1. 温度测量:室内温湿度计通常采用热电偶、热敏电阻或红外线传感器等原理来测量温度。
其中,热电偶是基于两种不同金属(通常是铜和常量材料)的热电效应来测量温度的。
当温度不同时,两种金属产生的电动势也不同,通过测量这个电动势的差值,就可以确定室内的温度。
2. 湿度测量:室内温湿度计通常采用电容式传感器、电阻式传感器或透湿膜传感器等原理来测量湿度。
其中,电容式传感器测量湿度的原理是利用水分对电容器的影响,当空气中的湿度发生变化时,会改变电容器两个电极之间的电容值,从而达到测量湿度的目的。
电阻式传感器则利用水蒸气对导电材料电阻的影响来测量湿度。
3. 数据传输与显示:温湿度计可通过有线或无线方式将测量到的数据传输给数据采集设备或显示屏。
有线传输一般采用以太网、USB或串口等接口,无线传输则通常采用Wi-Fi或蓝牙等技术。
传输后的数据可以通过外部设备或在温湿度计本身的显示屏上以数字或图形的形式展示。
总的来说,室内温湿度计通过温度和湿度传感器测量室内环境的温度和湿度,然后将这些数据传输给数据采集设备或显示屏,以供用户监测和分析。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
智能测控系统课程大作业作业题目:环境温度测量及湿度检测学院名称:电气工程学院专业班级:测控1303班****:***学号: 0320完成时间:2016-6 ****:**目录1 课程大作业内容课题设计背景随着科技的发展对对检测技术要求的不断增高,迫使新材料的开发及寻找检测能力的不断提升;传感器的种类与测量精度以及测量稳定性也发生了巨大的变化,从最初的接触式测温到非接触式测温,膨胀式、热电阻式以及热电偶式测温,使温度检测领域得到了快速发展;再加上单片机技术的不断发展,测量检测变得更加方便;温湿度传感器除电阻式、电容式湿敏元件之外,还有电解质离子型湿敏元件、重量型湿敏元件利用感湿膜重量的变化来改变振荡频率、光强型湿敏元件、声表面波湿敏元件等;湿敏元件的线性度及抗污染性差,在检测环境湿度时,湿敏元件要长期暴露在待测环境中,很容易被污染而影响其测量精度及长期稳定性;在公共工作场所为了达到让人感到舒适的环境温度及湿度,往往需要对温度、湿度进行检测已达到最佳的效果;本课题以ds18b20温度传感器为温度检测器件,设计了一个对单点温度实时检测的单片机温度检测系统;以bsp_dht11湿度传感器为湿度检测器件;课题设计的意义1、该设计具有以下优点:制作简单,便于使用,价格便宜,稳定可靠,功耗低省电;2通过设计与制作可以达到这些目的:熟悉MSP430单片机技术的应用范围;掌握MSP430单片机编程的特点,提高实践操作能力能够在制作过程中发现并改正错误;达到一定的解决问题的能力;提高了动手的能力;设计目标使用ds18b20温度传感器测量环境温度并完成A/D转换;bsp_dht11湿度传感器测量湿度,把数据发送到MSP430中进行转换用LCD进行显示;2 系统设计方案系统设计方案的选择是决定设计作品完整度与精度的重要前提,一个好的作品的完成需要选择比较多种方案,从多种方案中选择最优方案,才能使设计作品精度更高;本次设计主要从实用性,稳定性,精度等级,可靠性,经济性等方面进行考虑;在完成本次课程设计要求、目的的情况下尽可能的准确和经济的条件下进行选择;温湿度传感器选型与论证本设计采用测量精度高,性能稳定可靠的ds18b20温度传感器作为温度检测器件和bsp_dht11温湿度传感器作为湿度监测器件;尽管bsp_dht11也能够检测出环境温度,但该传感器的测温范围窄,精度不够,和要求测量的环境较为苛刻;因此选用较为精确的ds18b20来测量温度;该传感器具有适应性强检测迅速,受环境影响较小;且对温度可以接触和非接触测量均可;而其他传感器价格和测量条件较为苛刻因此不建议选取;显示屏的选择与论证方案一:采用LCD1602显示;LCD1602是一种专门用于显示字母、数字、符号等点阵式LCD,能够同时显示16x02即32个字符;它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用;由于它不能显示汉字,而温度湿度的显示需要显示汉字,所以此方案不可行;方案二:采用LCD5110显示;LCD5110采用串行接口与主处理器进行通信,接口信号线数量大幅度减少,支持多种串行通信协议,传输速率高达4Mbps,可全速写入显示数据,无等待时间;它由84x48的点阵LCD组成,可显示汉字和字符;LCD5110工作电压,正常显示时工作电流200uA以下,而且接口简单,体积小便于安装携带,速度快,价格便宜;所以采用此方案,显示模块选择用LCD 5110;但屏幕色彩较暗,在光线较强的地方无法清晰的辨别;方案三:采用TFT彩屏显示;TFT-LCD采用低压应用,低驱动电压,固体化使用安全性和可靠性提高;平板化,又轻薄,节省了大量原材料和使用空间;低功耗,它的功耗约为CRT显示器的十分之一,反射式TFT-LCD甚至只有CRT的百分之一左右,节省了大量的能源;高亮度,高对比度,高响应速度;无辐射、无闪烁,对使用者的健康无损害;适用范围宽,从-20℃到+50℃的温度范围内都可以正常使用,寿命超过3万小时,且价格便宜因此本次设计采用TFT-LCD作为显示屏;信号采集电路ds18b20是一种64 位只读存储器储存器件的唯一片序列号;高速暂存器含有两个字节的温度寄存器,这两个寄存器用来存储温度传感器输出的数据;除此之外,高速暂存器提供一个直接的温度报警值寄存器TH和TL,和一个字节的配置寄存器;配置寄存器允许用户将温度的精度设定为9,10,11 或12位;TH,TL 和配置寄存器是非易失性的可擦除程序寄存器EEPROM,所以存储的数据在器件掉电时不会消失;ds18b20通过达拉斯公司独有的单总线协议依靠一个单线端口通讯;当全部器件经由一个3态端口或者漏极开路端口DQ引脚在ds18b20上的情况下与总线连接的时候,控制线需要连接一个上拉电阻;在这个总线系统中,微控制器主器件依靠每个器件独有的64位片序列号辨认总线上的器件和记录总线上的器件地址;由于每个装置有一个独特的片序列码,总线可以连接的器件数目事实上是无限的;ds18b20的另一个功能是可以在没有外部电源供电的情况下工作;当总线处于高电平状态,DQ与上拉电阻连接通过单总线对器件供电;同时处于高电平状态的总线信号对内部电容Cpp充电,在总线处于低电平状态时,该电容提供能量给器件;这种提供能量的形式被称为“寄生电源”;作为替代选择,ds18b20同样可以通过VDD引脚连接外部电源供电;如下图s18b20的工作原理图用户单片机发送一次开始信号后,DHT11 从低功耗模式转换到高速模式,待主机开始信号结束后,DHT11 发送响应信号,送出 40bit 的数据,并触发一次信采集;信号发送如图所示;数据时序图bsp_dht11时序原理图供电电源的选择本设计采用标准USB数据线5V为该设计供电;3 硬件设计硬件电路的设计是该系统重要的部分,是系统运行的前提,如果硬件设计的科学合理就能大大增加该系统功能的稳定性,可靠性;系统软件的设计是以硬件设计为前提,硬件设计是单片机高效工作的前提与重要保障,但是只有软件和硬件都正确,并且软件与硬件能够相互兼容、协调工作才能使系统工作达到我们想要的效果;本系统的硬件设计部分主要包括传感器电桥电路设计、运算放大电路的设计、单片机最小系统设计下面进行详细介绍;结构框图本设计采用均采用电源供电,温度传感器和温湿度传感器采集到数据后发送到单片机,单片机根据接收到的数据进行处理后再LCD屏幕上显示;如图位系统结构框图;图系统结构框图温度信号采集电路温度信号的获取关系到后续电路设计的难度,因此温度信号是获取是本设计的关键;ds18b20的简介:独特的单线接口仅需一个端口引脚进行通讯每个器件有唯一的64 位的序列号存储在内部存储器中简单的多点分布式测温应用无需外部器件可通过数据线供电;供电范围为到测温范围为-55~+125℃-67~+257℉在-10~+85℃范围内精确度为±5℃温度计分辨率可以被使用者选择为9~12位最多在750ms 内将温度转换为12 位数字用户可定义的非易失性温度报警设置报警搜索命令识别并标志超过程序限定温度温度报警条件的器件与ds1822兼容的软件应用包括温度控制、工业系统、消费品、温度计或任何热感测系统bsp_dht11的简介:DATA 用于微处理器与 DHT11之间的通讯和同步,采用单总线数据格式,一次通讯时间4ms左右,数据分小数部分和整数部分,当前小数部分用于以后扩展,现读出为零.操作流程如下:一次完整的数据传输为40bit,高位先出;数据格式:8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据+8bit校验和数据传送正确时校验和数据等于“8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据”所得结果的末8位;实际使用时发现小数位都是0,这一步忽略对结果也不造成影响;单片机的最小电路图MSP430g2553简介:MSP430G2553性能参数DIP-20 工作电压范围:~;5种低功耗模式;16位的RISC 结构,指令周期;超低功耗运行模式-230μA;待机模式μA;关闭模式μA;可以在不到1μs的时间里超快速地从待机模式唤醒;基本时钟模块配置:具有四种校准频率并高达16MHz的内部频率;内部超低功耗LF振荡器;晶体;外部数字时钟源;两个16 位Timer_A,分别具有三个捕获比较寄存器;用于模拟信号比较功能或者斜率模数A/D转换的片载比较器;带内部基准、采样与保持以及自动扫描功能的10位200-ksps 模数A/D转换器;16KB闪存,512B的RAM;16个I/O口;这里给出了本次实验的最小电路图最小电路图4 软件设计程序模块本装置主要用到MSP430g2553单片机的IO功能程序设计中主要包括:1.单片机对温度传感器的数据接收模块;2.单片机对温湿度传感器的数据接收模块;3.对LCD屏的显示模块;软件设计流程图图软件流程图5调试本次设计最主要的工作之一就是对系统的调试部分,因为一个测量显示软件的主要功能就是显示正确的结果;开始显示的数据会因为采集的不准确和其他方面的误差导致接收到的数据不能正确表示想要的得到的数据,也可能会因为采集过程出现频繁的错误等问题;因此调试的工作极其重要,在温度传感器的采集过程中经过和标准的温度值的校准,测出了误差的范围和误差的大致规律最后在现实过程中消除了这种误差让温度测量更加准确稳定;在湿度传感器的调试过程中的工作更是复杂,湿度传感器可以返回温度和湿度值,但经过检测返回的温度值与实际的温度值偏差较大,而湿度的计算方法是在该温度条件下的空气中水含量的多少,这就使得测得的温度不准导致湿度不准确,最后查阅资料找到了湿度的测量计算方法;将返回的湿度值加权后再显示出来;这些工作很复杂湿度传感器的工作要求的时序很高就导致在时序配置上要花很大功夫一点不对就不能返回正确的结果屡屡出错;总之调试工作发杂多变;6总结本次设计的东西看起来很简单,好像没有什么技术含量;但当实际操作时想要完美的运行却遇到了重重的困难;因为MSP430是开始接触的单片机,之前也一直没有做过关于它的太多试验;修改驱动显示屏程序也花费了很长时间才将原来51单片机的程序移植过来,结果刷屏与显示与想要显示的位置不符,后来请教同学计算了LCD的显示位置才更改过来;接下来的湿度调试,因为开始找不到bsp_dht11温湿度传感器的原理图就在网上找了关于它的程序结果发现不能用不管怎么更改总是无法返回正确的数值,最后终于找到了关于该传感器的详细资料;发现该传感器的工作要求对时序的要求特别严格,最后精确计算了延时时间并且进行了延时时间的修改才能返回结果;但得到的湿度值与正常的湿度值存在较大的偏差,但没有标准湿度值可以进行比较于是选取了天气预报软件上面公布的湿度值进行校准;因为这次作业选用的是模块化的传感器且传感器对电压的要求不太严格~均可以,为了降低设计设计的复杂度就选取了给单片机供电的电压作为传感器和显示屏的供电电压;本次对单片机的实际制作成东西才感到动手的重要性,和一些看起来简单的东西也许不那么简单;在以后的学习中要增加动手的能力;参考文献1 杨家成.单片机原理与应用及C51程序设计.北京:清华大学出版社,20072 夏路易石宗义.Protel 99se电路原理图与电路板设计教程.北京:北京希望电子出版社,20043 李林功.单片机原理与应用——基于实例驱动和Proteus仿真.北京:科学出版社,20114 皮大能等. 单片机课程设计指导书. 北京:北京理工大学出版社,20105 MSP430单片机C语言应用程序设计实例精讲电子工业出版社附件程序主程序include<>include""include""include""include""include""void CLK_Init void ,0;LCD_ShowString70,68,""; //湿度显示}int main void{WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer unsigned int temp=0,temp1,temp2,temp3;//ucharRH_data_H = 0;P2DIR |= 0x1f;//设置P2为输出方式输出方式P2OUT |= 0X1f;BACK_COLOR=YELLOW;POINT_COLOR=BLUE; //背景色,画笔色CLK_Init;Lcd_Init;LCD_ClearYELLOW;DHT11_IO_Init;showjiemian;while1{temp=Read_Temp;temp1=temp/100;temp2=temp%100/10;temp3=temp%10;LCD_ShowNum56,42,temp1,2;//显示数字LCD_ShowNum80,42,temp2,1;//显示数字LCD_ShowNum88,42,temp3,1;//显示数字DHT11;LCD_ShowNum88,68, ucharRH_data_H,3;delay_ms1000;}}温度采集include<>include""include""void DS18B20_Init void//DS18B20初始化函数{DQ_OUT;DQ_L; //拉低总线delay_us480; //精确延时大于 480usDQ_H; //释放总线delay_us48;DQ_IN;DQ_OUT;DQ_H;delay_us360;}void DS18B20_WriteData u8 dat //写一个字节{u8 i;for i=0;i<8;i++//位计数值{DQ_L; //拉低总线产生写信号delay_us5;if dat&0x01 DQ_H;//此位数据是否为高,是高则将单总线拉高else DQ_L;//是低则将单总线拉低dat>>=1; //准备下一位数据的传送delay_us50;DQ_H; //释放总线,等待总线恢复delay_us8;}}u8 DS18B20_ReadData void//读一个字节{u8 i;u8 dat=0;for i=0;i<8;i++//位计数值{dat>>=1;//右移,准备接受新的数据位DQ_L; //拉低总线产生读信号delay_us5;DQ_H; //释放总线准备读数据delay_us5;//等待5微秒DQ_IN;//配置为输入,开始读取数据位_NOP;if READ_DQ//该位是否为高{dat|=0x80;//是就将此位置高}delay_us50;//等待50微秒DQ_OUT;DQ_H;delay_us5;}return dat;//将读到的一个字节返回}u16 Read_Temp void//读取温度{u16 temp_low,temp_high,d;float c;DS18B20_Init;//初始化,每次写命令都从初始化开始DS18B20_WriteData0xcc; //跳过ROM命令DS18B20_WriteData0x44; //温度转换命令DS18B20_Init;//初始化,每次写命令都从初始化开始DS18B20_WriteData0xcc; //跳过ROM命令DS18B20_WriteData0xbe; //temp_low=DS18B20_ReadData;//读温度低字节temp_high=DS18B20_ReadData; //读温度高字节temp_high<<=8;d=temp_high|temp_low;c=d;d=u16c100;return d; //返回16位变量}湿度采集include""include""include<>unsigned int uchartemp;unsigned charucharT_data_H,ucharT_data_L,ucharRH_data_H,ucharRH_data_L,ucharcheckda ta;unsigned charucharT_data_H_temp,ucharT_data_L_temp,ucharRH_data_H_temp,ucharRH_data _L_temp,ucharcheckdata_temp;void DHT11_IO_Init{P1SEL &= ~BIT0;}void COM void{unsigned char i;unsigned char ucharFLAG;uchartemp=0;P1DIR &= ~BIT0;for i=0;i<8;i++{ucharFLAG=2;while P1IN&0x01&&ucharFLAG++; delay_us30;uchartemp=uchartemp<<1;if P1IN&0x01{uchartemp |= 1;}ucharFLAG=1;while P1IN&0x01&&ucharFLAG++; }}void DHT11void{unsigned char ucharFLAG;P1DIR |= BIT0;//设置为输出口DATA_L;delay_ms20; //>18MSDATA_H;delay_us30;P1DIR &= ~BIT0;if P1IN&0x01{ucharFLAG=1;while P1IN&0x01&&ucharFLAG++;ucharFLAG=1;while P1IN&0x01&&ucharFLAG++;COM;ucharRH_data_H_temp=uchartemp;COM;ucharRH_data_L_temp=uchartemp;COM;ucharT_data_H_temp=uchartemp;COM;ucharT_data_L_temp=uchartemp;COM;ucharcheckdata_temp=uchartemp;uchartemp=ucharT_data_H_temp+ucharT_data_L_temp+ucharRH_data_H_temp+uc harRH_data_L_temp;if uchartemp==ucharcheckdata_temp{ucharRH_data_H=ucharRH_data_H_temp; ucharRH_data_L=ucharRH_data_L_temp; ucharT_data_H=ucharT_data_H_temp; ucharT_data_L=ucharT_data_L_temp; ucharcheckdata=ucharcheckdata_temp; }}else{ucharRH_data_H=12;ucharT_data_H=23;}//P2DIR |= BIT0;}显示include<>include""include""include""u16 BACK_COLOR, POINT_COLOR; //背景色,画笔色void LCD_Writ_Bus char da //串行数据写入{u8 i;for i=0; i<8; i++{if da & 0x80{SDA_H;}else{SDA_L;}SCK_L;da <<= 1;SCK_H;}}void LCD_WR_DATA8char da //发送数据-8位参数{AO_H;LCD_Writ_Busda;}void LCD_WR_DATA int da{AO_H;LCD_Writ_Busda>>8;LCD_Writ_Busda;}void LCD_WR_REG char da{AO_L;LCD_Writ_Busda;}void LCD_WR_REG_DATA int reg,int da{LCD_WR_REGreg;LCD_WR_DATAda;}void Address_set unsigned int x1,unsigned int y1,unsigned int x2,unsigned int y2{LCD_WR_REG0x2a;LCD_WR_DATA8x1>>8;LCD_WR_DATA8x1;LCD_WR_DATA8x2>>8;LCD_WR_DATA8x2;LCD_WR_REG0x2b;LCD_WR_DATA8y1>>8;LCD_WR_DATA8y1+32;LCD_WR_DATA8y2>>8;LCD_WR_DATA8y2+32;LCD_WR_REG0x2C;}void Lcd_Init void{//调用一次这些函数,免得编译的时候提示警告CS_H;/ifLCD_CS==0{LCD_WR_REG_DATA0,0;LCD_ShowString0,0," ";LCD_ShowNum0,0,0,0;LCD_Show2Num0,0,0,0;LCD_DrawPoint_big0,0;LCD_DrawRectangle0,0,0,0;Draw_Circle0,0,0;}/REST_H;delayms5;REST_L;delayms5;REST_H;CS_H;delayms5;CS_L; //打开片选使能LCD_WR_REG0x11; //Sleep outdelayms120; //Delay 120ms//------------------------------------ST7735S Frame Rate-----------------------------------------// LCD_WR_REG0xB1;LCD_WR_DATA80x05;LCD_WR_REG0x11;//Sleep exitdelayms 120;//ST7735R Frame RateLCD_WR_REG0xB1;LCD_WR_DATA80x01;LCD_WR_DATA80x2C; LCD_WR_DATA80x2D;LCD_WR_DATA80x01; LCD_WR_DATA80x2C; LCD_WR_DATA80x2D; LCD_WR_REG0xB3;LCD_WR_DATA80x01; LCD_WR_DATA80x2C; LCD_WR_DATA80x2D; LCD_WR_DATA80x01; LCD_WR_DATA80x2C; LCD_WR_DATA80x2D; LCD_WR_REG0xB4; //Column inversionLCD_WR_DATA80x07;//ST7735R Power SequenceLCD_WR_REG0xC0;LCD_WR_DATA80xA2; LCD_WR_DATA80x02; LCD_WR_DATA80x84; LCD_WR_REG0xC1; LCD_WR_DATA80xC5;LCD_WR_REG0xC2;LCD_WR_DATA80x0A; LCD_WR_DATA80x00;LCD_WR_REG0xC3;LCD_WR_DATA80x8A; LCD_WR_DATA80x2A;LCD_WR_REG0xC4;LCD_WR_DATA80x8A; LCD_WR_DATA80xEE;LCD_WR_REG0xC5; //VCOMLCD_WR_DATA80x0E;LCD_WR_REG0x36; //MX, MY, RGB modeLCD_WR_DATA80xC8;//ST7735R Gamma SequenceLCD_WR_DATA80x0f; LCD_WR_DATA80x1a;LCD_WR_DATA80x0f; LCD_WR_DATA80x18;LCD_WR_DATA80x2f; LCD_WR_DATA80x28;LCD_WR_DATA80x20; LCD_WR_DATA80x22;LCD_WR_DATA80x1f; LCD_WR_DATA80x1b;LCD_WR_DATA80x23; LCD_WR_DATA80x37; LCD_WR_DATA80x00; LCD_WR_DATA80x07;LCD_WR_DATA80x02; LCD_WR_DATA80x10;LCD_WR_REG0xe1;LCD_WR_DATA80x0f; LCD_WR_DATA80x1b;LCD_WR_DATA80x0f; LCD_WR_DATA80x17;LCD_WR_DATA80x33; LCD_WR_DATA80x2c;LCD_WR_DATA80x29; LCD_WR_DATA80x2e;LCD_WR_DATA80x30; LCD_WR_DATA80x30;LCD_WR_DATA80x39; LCD_WR_DATA80x3f;LCD_WR_DATA80x00; LCD_WR_DATA80x07;LCD_WR_DATA80x03; LCD_WR_DATA80x10;LCD_WR_REG0x2a;LCD_WR_DATA80x00;LCD_WR_DATA80x00;LCD_WR_DATA80x00;LCD_WR_DATA80x7f;LCD_WR_REG0x2b;LCD_WR_DATA80x00;LCD_WR_DATA80x00;LCD_WR_DATA80x00;LCD_WR_DATA80x7f;LCD_WR_REG0xF0; //Enable test commandLCD_WR_DATA80x01;LCD_WR_REG0xF6; //Disable ram power save mode LCD_WR_DATA80x00;LCD_WR_REG0x3A; //65k modeLCD_WR_DATA80x05;LCD_WR_REG0x29; //Display onLCD_WR_REG0x2C;}//清屏函数//Color:要清屏的填充色void LCD_Clear u16 Color{u8 VH,VL;u16 i,j;VH=Color>>8;VL=Color;Address_set0,0,LCD_W-1,160;for i=0;i<LCD_W;i++{for j=0;j<LCD_H;j++{LCD_WR_DATA8VH;LCD_WR_DATA8VL;}}}//在指定位置显示一个汉字3233大小//dcolor为内容颜色,gbcolor为背静颜色void showhanzi unsigned int x,unsigned int y,unsigned char index {unsigned char i,j;const unsigned char temp=hanzi;Address_setx,y,x+31,y+31; //设置区域temp+=index128;for j=0;j<128;j++{for i=0;i<8;i++{if temp&1<<i=0{LCD_WR_DATAPOINT_COLOR;}else{LCD_WR_DATABACK_COLOR;}}temp++;}}//在指定位置显示一个汉字1616大小//dcolor为内容颜色,gbcolor为背静颜色void showhanzi1unsigned int x,unsigned int y,unsigned char index,u16 p_color,u16 b_color{unsigned char i,j;const unsigned char temp=hanzi1;BACK_COLOR = b_color;POINT_COLOR = p_color;Address_setx,y,x+15,y+15; //设置区域temp+=index32;for j=0;j<32;j++{for i=0;i<8;i++{if temp&1<<i=0{LCD_WR_DATAPOINT_COLOR;}else{LCD_WR_DATABACK_COLOR;}}temp++;}}//画点//POINT_COLOR:此点的颜色void LCD_DrawPoint u16 x,u16 y{Address_setx,y,x,y;//设置光标位置LCD_WR_DATAPOINT_COLOR;}//画一个大点//POINT_COLOR:此点的颜色void LCD_DrawPoint_big u16 x,u16 y{LCD_Fillx-4,y-4,x+4,y+4,POINT_COLOR;}//在指定区域内填充指定颜色//区域大小:// xend-xstayend-ystavoid LCD_Fill u16 xsta,u16 ysta,u16 xend,u16 yend,u16 color {u16 i,j;Address_setxsta,ysta,xend,yend; //设置光标位置for i=ysta;i<=yend;i++{for j=xsta;j<=xend;j++LCD_WR_DATAcolor;//设置光标位置}}//画线//x1,y1:起点坐标//x2,y2:终点坐标void LCD_DrawLine u16 x1, u16 y1, u16 x2, u16 y2{u16 t;int xerr=0,yerr=0,delta_x,delta_y,distance;int incx,incy,uRow,uCol;delta_x=x2-x1; //计算坐标增量delta_y=y2-y1;uRow=x1;uCol=y1;if delta_x>0incx=1; //设置单步方向else if delta_x==0incx=0;//垂直线else {incx=-1;delta_x=-delta_x;}if delta_y>0incy=1;else if delta_y==0incy=0;//水平线else{incy=-1;delta_y=-delta_y;}if delta_x>delta_ydistance=delta_x; //选取基本增量坐标轴else distance=delta_y;for t=0;t<=distance+1;t++ //画线输出{LCD_DrawPointuRow,uCol;//画点xerr+=delta_x ;yerr+=delta_y ;if xerr>distance{xerr-=distance;uRow+=incx;}if yerr>distance{yerr-=distance;uCol+=incy;}}}//画矩形void LCD_DrawRectangle u16 x1, u16 y1, u16 x2, u16 y2 {LCD_DrawLinex1,y1,x2,y1;LCD_DrawLinex1,y1,x1,y2;LCD_DrawLinex1,y2,x2,y2;LCD_DrawLinex2,y1,x2,y2;}//在指定位置画一个指定大小的圆//x,y:中心点//r :半径void Draw_Circle u16 x0,u16 y0,u8 r{int a,b;int di;a=0;b=r;di=3-r<<1; //判断下个点位置的标志while a<=b{LCD_DrawPointx0-b,y0-a; //3LCD_DrawPointx0+b,y0-a; //0LCD_DrawPointx0-a,y0+b; //1LCD_DrawPointx0-b,y0-a; //7LCD_DrawPointx0-a,y0-b; //2LCD_DrawPointx0+b,y0+a; //4LCD_DrawPointx0+a,y0-b; //5LCD_DrawPointx0+a,y0+b; //6LCD_DrawPointx0-b,y0+a;a++;//使用Bresenham算法画圆if di<0di +=4a+6;else{di+=10+4a-b;b--;}LCD_DrawPointx0+a,y0+b;}}//在指定位置显示一个字符//num:要显示的字符:" "--->"~"//mode:叠加方式1还是非叠加方式0//在指定位置显示一个字符//num:要显示的字符:" "--->"~"//mode:叠加方式1还是非叠加方式0void LCD_ShowChar u16 x,u16 y,u8 num,u8 mode{u8 temp;u8 pos,t;u16 x0=x;u16 colortemp=POINT_COLOR;if x>LCD_W-16||y>LCD_H-16return;//设置窗口num=num-' ';//得到偏移后的值Address_setx,y,x+8-1,y+16-1; //设置光标位置if mode //非叠加方式{for pos=0;pos<16;pos++{temp=asc2_1608u16num16+pos; //调用1608字体for t=0;t<8;t++{if temp&0x01POINT_COLOR=colortemp;else POINT_COLOR=BACK_COLOR;LCD_WR_DATAPOINT_COLOR;temp>>=1;x++;}x=x0;y++;}}else//叠加方式{for pos=0;pos<16;pos++{temp=asc2_1608u16num16+pos; //调用1608字体for t=0;t<8;t++{if temp&0x01LCD_DrawPointx+t,y+pos;//画一个点 temp>>=1;}}}POINT_COLOR=colortemp;}//m^n函数u32 mypow u8 m,u8 n{u32 result=1;while n--result=m;return result;}//显示2个数字//x,y :起点坐标//len :数字的位数//color:颜色//num:数值void LCD_ShowNum u16 x,u16 y,u32 num,u8 len{u8 t,temp;u8 enshow=0;num=u16num;for t=0;t<len;t++{temp=num/mypow10,len-t-1%10;if enshow==0&&t<len-1{if temp==0{LCD_ShowCharx+8t,y,' ',0;continue;}else enshow=1;}LCD_ShowCharx+8t,y,temp+48,0;}}//显示2个数字//x,y:起点坐标//num:数值0~99;void LCD_Show2Num u16 x,u16 y,u16 num,u8 len {u8 t,temp;for t=0;t<len;t++{temp=num/mypow10,len-t-1%10;LCD_ShowCharx+8t,y,temp+'0',0;}}//显示字符串//x,y:起点坐标//p:字符串起始地址//用16字体void LCD_ShowString u16 x,u16 y,const u8 p {while p='\0'{if x>LCD_W-16{x=0;y+=16;}if y>LCD_H-16{y=x=0;}LCD_ShowCharx,y,p,0;x+=8;p++;}}void showimage//显示4040图片{int i,j,k;for k=2;k<3;k++{for j=0;j<3;j++{Address_set40j,40k,40j+39,40k+39; //坐标设置for i=0;i<1600;i++{LCD_WR_DATA8imagei2+1; //发送颜色数据LCD_WR_DATA8imagei2;}}。