湿度测量仪设计_第1页
湿度测量仪设计_第2页
湿度测量仪设计_第3页
湿度测量仪设计_第4页
湿度测量仪设计_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

1、郑州轻工业学院课程设计说明书题目: 智能仪器仪表设计与实践 姓 名: 徐萍 院 (系): 电气信息工程学院 专业班级: 自动化 01班 学 号: 541101010144 指导教师: 李银华 齐汝宾 成 绩: 时间:2015年01月05日至 2015年01月23日郑州轻工业学院课 程 设 计 任 务 书题目 湿度测量仪设计 专业、班级:自动化11-01 学号 :541101010144姓名 徐萍 主要内容、基本要求、主要参考资料等:主要内容l 实现单片机和湿度传感器完成湿度测量功能。l 相对湿度(探头)范围: 5 95%。l 具有数字显示功能l 参数设置功能和数据通信功能基本要求l 明确课程设

2、计任务,复习和查阅相关资料。l 按照要求对设计进行说明,给出总体设计方案,设计原理。l 软件编程必须有流程图,程序必须加注释,各程序段的开始要注明该段功能和作用。l 写出体会和总结要求使用B5打印稿或16开纸手写,不少于5000字。格式遵照学校规定。主要参考资料孙环,滕召胜基于SHT10单片集成传感器温湿度检测模块设计J国外电子测量技术,2006,25(6)樊建明,陈渊睿基于SHT10的温室多点测量系统设计J国外电子测量技术,2006,25(11)陈钊,郭永彩,高潮,等微环境温湿度智能化测量仪研究J仪器仪表学报,2004,25(5)完 成 期 限: 2015年1月23日 指导教师签名: 课程负

3、责人签名: 2015年 1 月 5 日摘要温湿度测量仪是对环境温湿度进行现场检测的常用仪表,讨论了一种基于SHT10的数字温湿度测量仪的设计方法。该温湿度测量仪的控制系统采用AT89S51单片机,温湿度传感器采用SHT11为主要硬件,实现简易数字式温湿度测量仪的硬件电路与软件程序的设计。实践证明该温湿度测量仪具有测量精度高等特点,具有一定的实用价值。采用单片机和温湿度传感器构成的数字温湿度测量仪显得非常重要,数字温湿度测量仪已被广泛应用于电子测量、仪表自动化、温室大棚、自动控制等多个智能化领域中。在过去某些场合经常采用热敏电阻和湿度电容来分别测量环境的温湿度,这种测量系统普遍精度不高,而且在多

4、点测量时系统设计较为复杂。而采用SHT10这种集温湿度传感器于一体的数字集成式传感器,则会使得系统大大降低成本,简化设计。关键词:SHT10;AT89S51;湿度传感器目 录1绪论11.1数字式湿度测量仪设计的意义11.2国内外研究现状11.3设计主要任务32总体设计方案32.1系统综述32.2方案选择42.3总体设计方案设计53系统的硬件设计63.1系统的硬件电路63.2单片机与SHT10连接电路图83.3 LED显示电路的设计93.4报警电路103.5键盘模块114系统的软件设计114.1主程序框图114.2数据显示程序框图12总结14参考文献15附录116附录2241绪论 在日常生活或者

5、工农业生产中,经常会需要检测环境的温湿度,因此采用单片机和温湿度传感器构成的数字温湿度测量仪显得非常重要,数字温湿度测量仪已被广泛应用于电子测量、仪表自动化、温室大棚、自动控制等多个智能化领域中。在过去某些场合经常采用热敏电阻和湿度电容来分别测量环境的温湿度,这种测量系统普遍精度不高,而且在多点测量时系统设计较为复杂。而采用SHT10这种集温湿度传感器于一体的数字集成式传感器,则会使得系统大大降低成本,简化设计。1.1数字式湿度测量仪设计的意义随着工业自动化的愈趋完善,各种各样的传感器被用在了各式各样的场合。而湿度这个重要的参数成为了实现过程控制自动化必不可少的过程。换言之,问题具体化为了选择

6、怎样的传感器及如何去检测湿度的变化,并根据检测结果调整系统以使之保持在最佳工作状态。此外,单片机技术的不断发展完善使单片机已经成为科技领域的重要工具,广泛应用于各种仪表中,由于单片机具有体积小、耗能小、功能强的特点,引入单片机可使仪表数字化、智能化、微型化,提高测试的自动化程度和精度。将单片机和SHT10结合的数字式湿度测量仪,大大提高了观测精度,数值显示清晰度,将会取得很好的应用效果。总之,环境湿度的检测与调节仪器的设计和开发具有非常大的市场前景和实用价值。1.2国内外研究现状湿度由于受到温度、大气压强的影响,其标准是个难题。从早期的毛发湿度计到后来发展起来的电阻式、电容式温度计,由于他们存

7、在着热敏元件的长期稳定性差,需要常常进行表面的清洗及校准,造成使用不方便,而且精度较差的缺陷,因此,最常采用的方法依然是干湿球间接测湿法,但是干湿球温度与湿度的关系比较复杂,模拟仪表难以实现这种转换,通常是借助人工计算或查表求出相对湿度,随着单片机的发展,使一些繁重而复杂的人工计算自动完成。后来发展到利用湿空气光学特性的红外、紫外吸收湿度计乃至光纤湿度计,但是到目前为止,全世界还没有一种完全理想的测湿材料,原因在于湿敏元件的线性化一直是困扰人们的一个难题,测量仪表数字化后,要求相对湿度与显示值线性化的对应关系才能保证湿度的测量精确度。目前,国外生产集成湿度传感器的主要厂家及典型产品分别为Hon

8、eywell公司(HIH-3602、HIH-3605、HIH-3610型),Humirel公司(HM1500、HM1520、HF3223、HTF3223型),Sensiron公司(SHT11、SHT15型)。这些产品可分成以下三种类型: (1)线性电压输出式集成湿度传感器;典型产品有HIH3605/3610、HM1500/1520。其主要特点是采用恒压供电,内置放大电路,能输出与相对湿度呈比例关系的伏特级电压信号,响应速度快,重复性好,抗污染能力强。 (2)线性频率输出集成湿度传感器;典型产品为HF3223型。它采用模块式结构,属于频率输出式集成湿度传感器,在55%RH时的

9、输出频率为8750Hz(型值),当上对湿度从10%变化到95%时,输出频率就从9560Hz减小到8030Hz。这种传感器具有线性度好、抗干扰能力强、便于配数字电路或单片机、价格低等优点。 (3)频率/温度输出式集成湿度传感器;典型产品为HTF3223型。它除具有HF3223的功能以外,还增加了温度信号输出端,利用负温度系数(NTC)热敏电阻作为温度传感器。当环境温度变化时,其电阻值也相应改变并且从NTC端引出,配上二次仪表即可测量出温度值。  2002年Sensiron公司在世界上率先研制成功SHT11、 SHT15型智能化温度/温度传感器,其外形尺寸仅为7.6(

10、mm)×5(mm)×2.5(mm),体积与火柴头相近。出厂前,每只传感器都在温度室中做过精密标准,标准系数被编成相应的程序存入校准存储器中,在测量过程中可对相对湿度进行自动校准。它们不仅能准确测量相对温度,还能测量温度和露点。测量相对温度的范围是0100%,分辨力达0.03%RH,最高精度为±2%RH。测量温度的范围是-40123.8,分辨力为0.01。1.3设计主要任务1.设计的主要内容:(1) 实现单片机和湿度传感器完成湿度测量功能。(2) 相对湿度(探头)范围: 5 95%。(3) 具有数字显示功能。(4) 参数设置功能和数据通信功能。 2.系统硬件电路设计

11、,给出总体设计框图,而且详细描述各组成电路的设计原理及方法。3.系统软件设计与实现,介绍数据采集程序、参数存储及校正程序、数码管显示程序、键盘程序等设计,给出了系统主程序框图及数据显示程序框图。2总体设计方案2.1系统综述 根据本设计内容要求的性能指标,方案设计时不仅要考虑怎么样实现测量一定精度的温湿度信号值的基本功能,还要考虑温湿度超限时系统的报警功能。  根据设计要实现的功能,还要考虑系统控制芯片扩展口分配方案。  选择AT89S51单片机就能够满足设计要求。作为工业用的环境检测类仪器,系统工作的可靠性,实用性,长久性指标也是系统在设计时值得考虑的几个因素。2

12、.2方案选择 (1)数字式 这种方案在信号的采样、放大电路、报警设置以及报警电路等环节与第一种方案区别不大,只是在放大电路后采用了A/D转换电路,它将模拟量转换成数字量,然后经过驱动电路进行数码显示,它最大的好处是显示直观,这是模拟式产品向智能式产品过渡的中间型产品,属于第二代仪表,在上个世纪80年代的设计中大都采用这种结构的方案,在日常生活中看到的大都是未被替换的产品。在目前的设计中,基本上是不采用这种方案。 (2)智能式 这是目前检测类仪器首选的方案,利用目前成熟的计算机技术,依靠计算机强大的处理能力,对数据前向通道采集到的湿度,温度数据进行判断、处理、存储,

13、并可采用十分简单的方法通过显示驱动芯片将显示信息送出进行数码显示。对测量所得结果超限时的报警处理可以按照测量时间的不同情况分别设置不同的报警值。系统将会对测量回路巡回监测。目前国内外对温度和湿度测量产品有很多,但是大部分的产品都是用红外热辐射的传感器制作的。这种产品结构复杂,价格昂贵并不适用于大气的测量。本设计使用比较常见的温湿度传感器和价格便宜的电子元器件,实现检测系统的智能化。它还具有较高的安全性,可靠性,适用于一般的家庭。鉴于国外欧美等国家微电子技术的发展,在不少的测试领域,将一个系统的所有电路,包括CPU都集成在一块芯片上,构成一个集成的系统,况且这也是目前仪表发展的方向。所以本设计采

14、用集成芯片SHT10作为温湿度传感器。鉴于以上情况,本课题考虑到国内目前的现状,构成器件的来源以及微电子技术的发展趋势,本设计决定采用智能化的设计方案设计。2.3总体设计方案设计该系统主要由AT89S51单片机系统,电源电路,复位及振荡电路,LED显示电路,通信模块,键盘模块和报警电路等部分组成。如图2.1所示为总体方案设计框图。本方案采用单片数字温湿度集成传感器将湿度转换成数字信号,然后通过总线将信号传递给CPU。SHT10采用CMOS 过程微加工专利技术,确保产品具有极高的可靠性。SHT10将检测的湿度通过内部的AD转换器转换成数字信号,然后将信号输入单片机进入显示电路显示,期间可以按下按

15、键定点显示此时刻湿度值,若此环境的湿度值低于或者超过设限范围并进入报警电路,蜂鸣器能响起。图2-1 总体设计方案图3系统的硬件设计本设计的原理是一个基于单片机AT89S51与湿度传感器SHT10等技术相结合主体,利用模拟湿度传感器SHT10对某一环境的湿度进行检测,实现对此环境湿度的测控,并将它的输出由单片机的软件对其进行校正处理,所得到的结果最终送给四位数码管显示,切带有湿度上下限的报警。该系统主要由AT89S51单片机系统,电源电路,复位及振荡电路,LED显示电路,通信模块,键盘模块和报警电路等部分组成。3.1系统的硬件电路AT89S51单片机的最小系统由时钟电路、复位电路、电源电路及单片

16、机构成。单片机的时钟信号用来提供单片机片内各种操作的时间基准,复位操作则使单片机的片内电路初始化,使单片机从一种确定的初态开始运行。3.1.1单片机的电源模块直流电源的输入为220V的电网电压,所需直流电压的数值和电网电压的有效值相差较大,因而需要通过电源变压器降压。再通过整流电路将正弦波电压转换为单一方向的脉动电压。为了减小电压的脉动,需通过低通滤波电路滤波,使输出电压平滑。理想情况下是可以将交流分量全部滤掉,但是因为受负载影响,加之滤波电路并不能达到理想效果。还需要加入稳压电路,使输出直流电压基本不受电网电压波动和负载电阻变化的影响。如图3.1电源电路所示。3.1.2晶振及复位电路单片机的

17、时钟信号通常用两种电路形式得到:内部振荡方式和外部振荡方式。在引脚XTAL1和XTAL2外接晶体振荡器(简称晶振)或陶瓷谐振器,就构成了内部振荡方式。由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器并产生振荡时钟脉冲。当5l系列单片机的复位引脚RST(全称RESET)出现2个机器周期以上的高电平时,单片机就执行复位操作。如果RST持续为高电平,单片机就处于循环复位状态。根据应用的要求,复位操作通常有两种基本形式:上电复位和上电或开关复位。上电复位要求接通电源后,自动实现复位操作。上电或开关复位要求电源接通后,单片机自动复位,并且在单片机运行期间,用开关操作也能使单片机复位

18、。单片机的复位操作使单片机进入初始化状态,其中包括使程序计数器PC=0000H,这表明程序从0000H地址单元开始执行。系统复位是任何微机系统执行的第一步,使整个控制芯片回到默认的硬件状态下。51单片机的复位是由RESET引脚来控制的,此引脚与高电平相接超过24个振荡周期后,51单片机即进入芯片内部复位状态,而且一直在此状态下等待,直到RESET引脚转为低电平后,才检查EA引脚是高电平或低电平,若为高电平则执行芯片内部的程序代码,若为低电平便会执行外部程序。如图3.2所示。图3-1 单片机的供电电源电路图3-2 单片机的晶振电路及复位电路3.2单片机与SHT10连接电路图SHTxx 单片数字温

19、湿度集成传感器采用CMOS 过程微加工专利技(CMOSens technology),确保产品具有极高的可靠性和出色的长期稳定性。该传感器由1 个电容式聚合体测湿元件和1 个能隙式测温元件组成,并与1 个14 位A/D 转换器以及1 个2-wire 数字接口在单芯片中无缝结合,使得该产品具有功耗低、反应快、抗干扰能力强等优点。SHT10 的特点主要包括以下几个方面:相对湿度和温度的测量兼有露点输出;全部校准,数字输出;接口简单(2-wire),响应速度快;超低功耗,自动休眠;出色的长期稳定性;超小体积(表面贴装); 测湿精度±4.5%RH,测温精度±0.5(25)。 SHT

20、10只需要通过两条线与AT89S51单片机的管脚连接即可进行串行通信,如图3.5,其中单片机的P2.2 口与SHT10的DATA 端相连,P2.1与SCK 端相连,SHT10的VDD接电源,GND接地。如图3.3单片机与SHT10连接图所示。图3-3 单片机与湿度传感器连接图3.3 LED显示电路的设计本方案采用LED显示方式湿度示数,所有位的段选线并联起来,由一个8位I/O端口控制,而各位的阳极或阴极分别由相应的I/O端口控制,形成各位的轮流选通,即LED显示器分时轮流工作,每次只能使一个器件显示15ms。由于人的视觉暂留现象和发光二极管的余晖效应,人眼仍感觉所有的器件同时显示,获得稳定的视

21、觉效果。此种显示方式的优点是占用I/O端口少,随着高亮度LED数码管的出现,动态显示同样可以达到很好的显示效果。如图3.4所示为LED动态显示电路,LED显示器采用共阴极接法,单片机P0口作为段码输出口,P2.4P2.7口作为位码输出口。每次显示时,单片机将段码送至P0口,经过驱动器74LS244提供必要的驱动电流,送到各个LED显示器的相应段;然后将位码送入P2.4P2.7口,再经过6反相驱动器,使其中一个LED的阴极变为低电平,这样对应该为显示器的段码有效,而其他位无效。一段时间以后,程序更换段码和位码,使下一个显示器选中并显示相应内容。如图3.4 LED显示电路图所示。图3-4 LED显

22、示电路图3.4报警电路报警电路由蜂鸣器,电阻,三极管组成,如图3.5报警电路图所示,当湿度值超过上下限范围时进入报警电路,蜂鸣器响。图 3-5 报警电路图3.5键盘模块键盘部分如图3.6所示。由于整体电路不需要很多按键,所以用不到矩阵键盘的方案。单片机只需要检测哪个按键有了低电平,即可确定哪个按键被按下了。图3-6 键盘部分电路图4系统的软件设计4.1主程序框图程序数据的一种理想方法是结构化程序设计方法。结构化程序设计是对利用到的控制结构类程序做适当的限制,特别是限制转向语句(或指令)的使用,从而控制了程序的复杂性,力求程序的上、下文顺序与执行流程保持一致性,使程序易读易理解,减少逻辑错误和易

23、于修改、调试。根据系统的控制任务,本系统的软件设计主要由主程序、初始化程序、显示子程序、数据采集子程序和延时程序等组成。主程序框图:SHT10温湿度子程序主要包括:SHT10启动程序、应答位检测、湿度测量、湿度数据处理等,其主要流程图如图4.1所示。4-1 SHT10温湿度子程序流程图4.2数据显示程序框图 数据显示程序框图如图4.2所示。显示子程序主要是来判断是否需要显示,以及如何去显示,也是十分重要的程序之一。而显示子程序是其他程序所需要调用的程序之一,因此,显示子程序的设计就显得举足轻重,必须认真细心的编写。图4-2 数据采集显示程序框图总结 在完成课程设计的过程中,我在图书馆查阅了老师

24、任务书上给出的相关资料,懂得了湿度测量仪的工作过程,并且能够和自己学过的知识很好的结合。本次课设是湿度测量仪设计,主要作用是实现单片机和湿度传感器完成湿度测量功能,且具有数字显示功能。课程设计旨在锻炼每位同学对所学知识的运用能力,自己设计一个合理的方案,不仅需要对该生产过程有最基本的理解,而且需要考虑采用何种方案,如何实现预期的效果,通过几天紧张的忙碌,对过程控制这门课有了更深的了解,对上课中老师所讲的单片机及程序设计有了进一步了解,同时对各种不同系统选用什么样的电阻,电容有了进一步的理解,特别是SHT10温湿度传感器的使用及工作原理有了深刻理解,就像老师说的,我们都应该对自己严格要求,只有把

25、所学的知识牢牢掌握,才能适应不同工况下对产品的需求。参考文献1孙环,滕召胜基于SHT10单片集成传感器温湿度检测模块设计J国外电子测量技术,2006,25(6):43-462樊建明,陈渊睿基于SHT11的温室多点测量系统设计J国外电子测量技术,2006,25(11):4-83谢敏,徐会冬智能传感器SHT11在单片机嵌入式系统中的应用J现代电子技术,2005,28(14):89-91,944陈钊,郭永彩,高潮,等微环境温湿度智能化测量仪研究J仪器仪表学报,2004,25(5):620-6235微机原理及应用 黄冰等编著 重庆:重庆大学出版社 ,20036谭浩强,C程序设计M.清华大学出版社,19

26、98,1.附录1系统的主程序及子程序001.#include <reg52.h> 002.#include <intrins.h> 003. 004./* 005. 宏定义 006.*/007.#define uint unsigned int 008.#define uchar unsigned char 009.#define noACK 0      010.#define ACK   1  &#

27、160;          011.#define STATUS_REG_W 0x06   012.#define STATUS_REG_R 0x07    013.#define MEASURE_TEMP 0x03   014.#define MEASURE_HUMI 0x05   015.#define RESET    &

28、#160;   0x1e    016. 017.enum TEMP,HUMI; 018. 019.typedef union               /定义共用同类型 020.    021.unsigned int i; 022.float 

29、f; 023. value; 025. 026./* 027.位定义 028.*/029.sbit lcdrs=P10; 030.sbit lcdrw=P11; 031.sbit lcden=P12; 032.sbit SCK = P22; 033.sbit DATA = P21; 034. 035./* 036.变量定义 037.*/038.uchar table2="SHT11 温湿度检测" 039.uchar table3=&qu

30、ot;温度为:      " 040.uchar table4="湿度为:" 041.uchar table5="." 042.uchar wendu6;               043.uchar shidu6;        

31、60;      044. 045./* 046.1ms延时函数 047.*/048.void delay(int z)         049. 050.int x,y; 051.for(x=z;x>0;x-) 052.for(y=125;y>0;y-); 053. 054. 055./* 056.50u

32、s延时函数 057.*/058.void delay_50us(uint t) 059. 060.uint j; 061.for(;t>0;t-) 062.for(j=19;j>0;j-); 063. 064. 065./* 066.50ms延时函数 067.*/068.void delay_50ms(uint t) 069. 070.uint j; 071.for(;t>0;t-) 072.for(j=6245;j&

33、gt;0;j-); 073. 074. 192./* 193.LED显示函数 194.*/195.void displayshidu(void) 196. 197.uchar i; 198.write_com(0x8C);    199.for(i=0;i<3;i+) 200. 201.write_dat(shidui); 202.delay_50us(1);      

34、203. 204.for(i=0;i<1;i+) 205. 206.write_dat(table5i); 207.delay_50us(1);      208. 209.for(i=4;i<5;i+) 210. 211.write_dat(shidui); 212.delay_50us(1);      213. 214. 215. 216./*

35、60;217.SHT10写字节程序 218.*/219.char s_write_byte(unsigned char value)    220.  221.unsigned char i,error=0;  222.for (i=0x80;i>0;i>>=1)             /高位为1,

36、循环右移 223.  224.if (i&value) DATA=1;          /和要发送的数相与,结果为发送的位 225.else DATA=0;                       

37、;  226.SCK=1;                           227._nop_();_nop_();_nop_();        /延时3us  228.SCK=0; 229.&

38、#160;230.DATA=1;                           /释放数据线 231.SCK=1;                

39、0;            232.error=DATA;                       /检查应答信号,确认通讯正常 233._nop_();_nop_();_nop_(); 234.SCK=0; 

40、60;       235.DATA=1; 236.return error;                     /error=1 通讯错误 237. 238. 239./* 240.SHT10读字节程序 241.*/242.char 

41、;s_read_byte(unsigned char ack) 243.  244.unsigned char i,val=0; 245.DATA=1;                           /释放数据线 246.for(i=

42、0x80;i>0;i>>=1)             /高位为1,循环右移 247.  248.SCK=1;                          

43、249.if(DATA) val=(val|i);             /读一位数据线的值  250.SCK=0;        251. 252.DATA=!ack;               

44、0;        /如果是校验,读取完后结束通讯 ; 253.SCK=1;                             254._nop_();_nop_();_nop_();  

45、60;       /延时3us  255.SCK=0;    256._nop_();_nop_();_nop_();        257.DATA=1;                   &#

46、160;       /释放数据线 258.return val; 259. 260. 261./* 262.SHT10启动传输 263.*/264.void s_transstart(void) 265.  266.DATA=1; SCK=0;              

47、60;    /准备 267._nop_(); 268.SCK=1; 269._nop_(); 270.DATA=0; 271._nop_(); 272.SCK=0;  273._nop_();_nop_();_nop_(); 274.SCK=1; 275._nop_(); 276.DATA=1;      277._nop_(); 278.SCK=0;  

48、    279. 280. 281. 282./* 283.SHT10连接复位 284.*/285.void s_connectionreset(void) 286.  287.unsigned char i;  288.DATA=1; SCK=0;               

49、     /准备 289.for(i=0;i<9;i+)                  /DATA保持高,SCK时钟触发9次,发送启动传输,通迅即复位 290.  291.SCK=1; 292.SCK=0; 293. 294.s_transstart();   

50、;                /启动传输 295. 296. 297./* 298.SHT10温湿度检测 299.*/300.char s_measure(unsigned char *p_value, unsigned char *p_checksum, unsigned char mode) 301.

51、  302.unsigned error=0; 303.unsigned int i; 304. 305.s_transstart();                   /启动传输 306.switch(mode)         &#

52、160;            /选择发送命令 307.    308.case TEMP : error+=s_write_byte(MEASURE_TEMP); break;          /测量温度 309.case HUMI : error+=s_write_byte(MEAS

53、URE_HUMI); break;          /测量湿度 310.default     : break;  311. 312.for (i=0;i<65535;i+) if(DATA=0) break;        /等待测量结束 313.if(DAT

54、A) error+=1;                   / 如果长时间数据线没有拉低,说明测量错误  314.*(p_value) =s_read_byte(ACK);           /读第一个字节,高字节 (MSB) 315.*(p_value+1)=s_

55、read_byte(ACK);          /读第二个字节,低字节 (LSB) 316.*p_checksum =s_read_byte(noACK);        /read CRC校验码 317.return error;             

56、      / error=1 通讯错误 318. 319./* 320.SHT11温湿度值标度变换及温度补偿 321.*/322.void calc_sth10(float *p_humidity ,float *p_temperature) 323.  324.const float C1=-4.0;         

57、60;    / 12位湿度精度 修正公式 325.const float C2=+0.0405;           / 12位湿度精度 修正公式 326.const float C3=-0.0000028;        / 12位湿度精度 修正公式 327.const float&#

58、160;T1=+0.01;             / 14位温度精度 5V条件  修正公式 328.const float T2=+0.00008;          / 14位温度精度 5V条件  修正公式 329. 330.float rh=*p_humidity; 

59、60;           / rh:      12位 湿度  331.float t=*p_temperature;           / t:       14位 温度 332.float rh_lin;

60、0;                    / rh_lin: 湿度 linear值 333.float rh_true;                    / rh_true

61、: 湿度 ture值 334.float t_C;                        / t_C   : 温度  335. 336.t_C=t*0.01 - 40;          &#

62、160;       /补偿温度 337.rh_lin=C3*rh*rh + C2*rh + C1;     /相对湿度非线性补偿 338.rh_true=(t_C-25)*(T1+T2*rh)+rh_lin;   /相对湿度对于温度依赖性补偿 339.if(rh_true>100)rh_true=100;       /湿度最大修正

63、0;340.if(rh_true<0.1)rh_true=0.1;       /湿度最小修正 341. 342.*p_temperature=t_C;               /返回温度结果 343.*p_humidity=rh_true;        &

64、#160;     /返回湿度结果 344. 345./* 346.主函数  347.*/                  348.void main(void) 349.  350.unsigned int temp,humi; 351.valu

65、e humi_val,temp_val;        /定义两个共同体,一个用于湿度,一个用于温度 352.unsigned char error;            /用于检验是否出现错误 353.unsigned char checksum;       &#

66、160; /CRC             354.init12864lcd(); 355.display1();  356.display2();  357.display3();          358.s_connectionreset();     

67、          /启动连接复位 359.while(1) 360. 361.error=0;                       /初始化error=0,即没有错误 362.error+=s_measure(unsig

68、ned char*)&temp_val.i,&checksum,TEMP); /温度测量 363.error+=s_measure(unsigned char*)&humi_val.i,&checksum,HUMI); /湿度测量 364.if(error!=0) s_connectionreset();                 /如果发生错误,系统复位 365.else366.  367.humi_val.f=(float)humi_val.i;      

温馨提示

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

评论

0/150

提交评论