




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
引言基于AT89C51单片机温湿度显示报警系统设计1引言1.1选题背景20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快[1]。目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。下面是单片机的主要发展趋势[2]。单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法[3]。从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命[4]。单片机模块中最常见之一的是传感器,温湿度显示报警系统是一种基于单片机的用数字电路技术实现温湿度控制的装置,在实践社会生产当中拥有广泛的应用。1.2目的和意义随着社会的发展,人们对时间和环境中的温度及湿度的要求越来越高,尤其在日常的生活中和人们的生活和健康有着紧密的联系,特别是当人们乘坐公共交通工具时,温湿度以及实时时间和人们的出行都有着密切的联系。温湿度控制在日常生活中使用比较普遍,如各种仪器控制箱、温室或生产车间的温度湿度控制、空调列车车厢空气环境的控制等[5]。常见的低端产品多采用机械指针式或水银柱式温湿度计,体积小、质量轻、价格低、安装简便。但是,此类产品测量精度低,没有LED显示屏,不能向智能化方向发展,不利于进行功能扩展,如不能自动报警[6]。目前,虽然在工业生产中和科研实验中通过对温湿度测量来进行自动控制的设备越来越普及,应用场合也越来越多。但是,随之而来的问题是如何能够测得精确的温湿度以保证自动控制设备能够正确地发出控制指令来控制生产过程。另一方面,如果温度或者湿度过高过低可能会对一些设备中的一些半导体元器件造成损坏[7]。因此,对于自动第1页(共43页)基于单片机温湿度显示报警系统设计温湿度报警的需求也在逐渐增加。本文基于以上方面的考虑,研究并设计了一种基于单片机的自动温湿度显示与报警系统。一般温湿度控制系统中的温湿度测量均采用热敏电阻与湿敏电容,这种传统的模拟式温湿度传感器一般都需要设计信号调理电路并经过复杂的校准和标定过程,因此测量精度难以保证,且在线性度、重复性、互换性等方面也存在一定问题[8]。这种传感器只适合那些测量点数较少,对精度要求不高的场合。因此设计出一款基于单片机的精度高、稳定性好、成本低的温湿度显示报警系统具有重要实际意义。1.3技术要求和设计范围现代社会越来越多的实验都要求在严格的环境条件下完成,而温度和湿度是实验室最基本的环境条件,也是对实验影响较大的因素。一般温湿度控制系统中的温湿度测量均采用热敏电阻与湿敏电容[9],这种传统的模拟式温湿度传感器一般都需要设计信号调理电路并经过复杂的校准和标定过程,因此测量精度难以保证,且在线性度、重复性、互换性等方面也存在一定问题。这种传感器只适合那些测量点数较少,对精度要求不高的场合。因此设计出一款精度高、稳定性好、成本低的温湿度检测控制系统将具有一定的市场。本系统采用具有高精度[10]、防干扰等优点的数字式传感器SHT11,不需要外部元件,可适配各种单片机。这为开发新一代的温湿度测控系统提供了有利条件,同时也有助于将温湿度测控技术提高到新的水平。1.4发展现状单片机诞生于20世纪70年代末,经历了SCM、MCU、SOC三大阶段[11]。(1)SCM即单片微型计算机阶段,主要是寻求最佳的单片形态嵌入式系统的最佳体系结构。―创新模式‖获得成功,奠定了SCM与通用计算机完全不同的发展道路。(2)MCU即微控制器阶段[12],主要的技术发展方向是:不断扩展满足嵌入式应用时,对象系统要求的各种外围电路与接口电路,突显其对象的智能化控制能力。(3)单片机是嵌入式系统的独立发展之路,向MCU阶段发展的重要因素[13],就是寻求应用系统在芯片上的最大化解决;因此,专用单片机的发展自然形成了SOC化趋势。随着微电子技术、IC设计、EDA工具的发展[14],基于SOC的单片机应用系统设计会有较大的发展。第2页(共43页)方案论证智能温度传感器在20世纪90年代中期问世。它是微电子技术、计算机技术和自动测试技术的结晶。目前,国际上已开发出多种智能温度传感器系列产品。智能温度传感器内部包含温度传感器、A/D传感器[15]、信号处理器、存储器和接口电路。有的产品还带多路选择器、中央控制器、随机存取存储和只读存储器。智能温度传感器能输出温度数据及相关的温度控制量,适配各种微控制器,并且可通过软件来实现测试功能,温度计也越来越智能化。跟电子温度计一样湿度计随着湿度传感器的发展趋于成熟。随着智能检测系统的飞速发展,基于单片机的温湿度检测系统将多传感器系统结合在一起。如何把多传感器集中于一个检测控制系统,综合利用来自多传感器的信息,获得对被测对象的可靠了解和解释,以利于系统做出正确的响应、决策和控制以及报警,是智能检测控制统中需要解决的重要问题。2方案论证2.1方案设计思路温湿度报警系统的设计以单片机AT89C51为核心,通过控制单片机的P1口的一些端口来调节当前温湿度的显示,完成了温湿度的显示报警功能,在程序中设置温湿度范围后,达到指定范围后让LED灯的闪亮来实现温湿度控制的效果,让LED1602液晶屏接到单片机的串口上,赋值来控制1602的显示。因此,整个方案设计包含四个部分,即:单片机最小系统部分、显示部分、温湿度数据采集部分、报警部分。2.2方案选择方案:单片机编程,用单片机设计电路,充分利用好AT89C51单片机的I/O口,使用软硬件结合的方式,具体的基本框图如图[16]1所示:图1单片机设计电路的基本框图第3页(共43页)基于单片机温湿度显示报警系统设计方案选择:从上述原理图看来,这种设计方案电路结构简单,条理清晰,调试也相对方便,易于实现。2.3设计流程对于温湿度显示报警系统的设计,先用PROTEUS做电路仿真,再在KEIL软件中编写程序生成源代码,最后将PROTEUS和KEIL连接起来进行在线仿真。设计流程如图[17]2所示。图2系统设计流程图2.4软件环境2.4.1PROTEUS软件本设计主要用Proteus7.5电子设计软件进行电子线路的设计和仿真。Proteus软件的功能很强大,它不仅可以在线仿真模拟电子,数字电子和单片机,还可以将设计直接转换成PCB版图[18],因此,受到众多电子工程师的喜爱。电路原理图的设计是仿真中的第一步,也是非常重要的一步。电路原理图设计得好坏将直接影响到后面的工作。首先,原理图的正确性是最基本的要求,因为在一个错误的基础上所进行的工作是没有意义的;其次,原理图应该布局合理,这样不仅可以尽量避免出错,也便于读图、便于查找和纠正错误;最后,在满足正确性和布局合理的前提下应力求原理图的美观。电路原理图的设计过程可分为以下几个步骤:(1)置电路图纸参数及相关信息根据电路图的复杂程度设置图纸的格式、尺寸、方向等参数以及与设计有关的信息,为以后的设计工作建立一个合适的工作平面。(2)装入所需要的元件第4页(共43页)方案论证将所需的元件装入设计系统中,以便从中查找和选定所需的元器件。(3)设置元件将选定的元件放置到已建立好的工作平面上,并对元件在工作平面上的位置进行调整,对元件的序号、参数、显示状态等进行定义和设置,以便为下一步的仿真工作打好基础。(4)连线电路图利用Proteus所提供的各种工具、命令进行画图工作,将事先放置好的元器件用具有电气意义的导线、网络标号等连接起来,布线结束后,一张完整的电路原理图基本完成。(5)调整、检查和修改利用Proteus所提供的各种工具对前面所绘制的原理图做进一步的调整和修改。(6)补充完善对原理图做一些相应的说明、标注和修饰,增加可读性和可观性。(7)仿真这部分工作主要是对设计完成的原理图结合KEIL在线仿真,调试并修改程序。2.4.2KeilC51软件KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种Keil软件图标是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂第5页(共43页)基于单片机温湿度显示报警系统设计商纷纷宣布全面支持Keil即可看出。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C语言编程,那么Keil几乎就是你的不二之选(目前在国内你只能买到该软件、而你买的仿真机也很可能只支持该软件),即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。下面详细介绍KeilC51开发系统各部分功能和使用。(1)KeilC51单片机软件开发系统的整体结构:C51工具包的整体结构,其中uVision与Ishell分别是C51forWindows和forDos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及A51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。(2)使用独立的Keil仿真器时,注意事项:仿真器标配11.0592MHz的晶振,但用户可以在仿真器上的晶振插孔中换插其他频率的晶振。仿真器上的复位按钮只复位仿真芯片,不复位目标系统。仿真芯片的31脚(/EA)已接至高电平,所以仿真时只能使用片内ROM,不能使用片外ROM;但仿真器外引插针中的31脚并不与仿真芯片的31脚相连,故该仿真器仍可插入到扩展有外部ROM(其CPU的/EA引脚接至低电平)的目标系统中使用。3过程论述3.1AT89C51单片机最小系统3.1.1AT89C51单片机最小系统原理图最小系统包括晶体振荡电路、复位开关和电源部分[19]。下面图3为AT89C51单片机的最小系统电路图。第6页(共43页)过程论述图3单片机最小系统电路图3.1.2电源引脚Vcc40电源端GND20接地端工作电压为5V,另有AT89LV51工作电压则是2.7-6V,引脚功能一样。3.1.3外接晶体引脚XTAL119XTAL218第7页(共43页)基于单片机温湿度显示报警系统设计图4晶振连接的内部、外部方式图晶振连接的内部、外部方式如上图4所示。XTAL1是片内振荡器的反相放大器输入端,XTAL2则是输出端,使用外部振荡器时,外部振荡信号应直接加到XTAL1,而XTAL2悬空。内部方式时,时钟发生器对振荡脉冲二分频,如晶振为12MHz,时钟频率就为6MHz。晶振的频率可以在1MHz-24MHz内选择。电容取30PF左右。系统的时钟电路设计是采用的内部方式,即利用芯片内部的振荡电路。AT89单片机内部有一个用于构成振荡器的高增益反相放大器。引脚XTAL1和XTAL2分别是此放大器的输入端和输出端。这个放大器与作为反馈元件的片外晶体谐振器一起构成一个自激振荡器。外接晶体谐振器以及电容C1和C2构成并联谐振电路,接在放大器的反馈回路中。对外接电容的值虽然没有严格的要求,但电容的大小会影响震荡器频率的高低、震荡器的稳定性、起振的快速性和温度的稳定性。因此,此系统电路的晶体振荡器的值为12MHz,电容应尽可能的选择陶瓷电容,电容值约为22μF。在焊接刷电路板时,晶体振荡器和电容应尽可能安装得与单片机芯片靠近,以减少寄生电容,更好地保证震荡器稳定和可靠地工作。3.1.4复位RST9在振荡器运行时,有两个机器周期(24个振荡周期)以上的高电平出现在此引腿时,将使单片机复位,只要这个脚保持高电平,51芯片便循环复位。复位后P0-P3口均置1引脚表现为高电平,程序计数器和特殊功能寄存器SFR全部清零。当复位脚由高电平变为低电平时,芯片为ROM的00H处开始运行程序。复位是由外部的第8页(共43页)过程论述复位电路来实现的。片内复位电路是复位引脚RST通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,它的输出在每个机器周期的S5P2,由复位电路采样一次。复位电路通常采用上电自动复位和按钮复位两种方式,此电路系统采用的是上电与按钮复位电路。当时钟频率选用6MHz时,C取22μF,Rs约为200Ω,Rk约为1K。复位操作不会对内部RAM有所影响。常用的复位电路如下图6所示:图5常用复位电路图3.1.5输入输出引脚(1)P0端口[P0.0-P0.7]P0是一个8位漏极开路型双向I/O端口,端口置1(对端口写1)时作高阻抗输入端。作为输出口时能驱动8个TTL。对内部Flash程序存储器编程时,接收指令字节;校验程序时输出指令字节,要求外接上拉电阻。在访问外部程序和外部数据存储器时,P0口是分时转换的地址(低8位)/数据总线,访问期间内部的上拉电阻起作用。(2)P1端口[P1.0-P1.7]P1是一个带有内部上拉电阻的8位双向I/0端口。输出时可驱动4个TTL。端口置1时,内部上拉电阻将端口拉到高电平,作输入用。对内部Flash程序存储器编程时,接收低8位地址信息。第9页(共43页)基于单片机温湿度显示报警系统设计(3)P2端口[P2.0-P2.7]P2是一个带有内部上拉电阻的8位双向I/0端口。输出时可驱动4个TTL。端口置1时,内部上拉电阻将端口拉到高电平,作输入用。对内部Flash程序存储器编程时,接收高8位地址和控制信息。在访问外部程序和16位外部数据存储器时,P2口送出高8位地址。而在访问8位地址的外部数据存储器时其引脚上的内容在此期间不会改变。(4)P3端口[P3.0-P3.7]P2是一个带有内部上拉电阻的8位双向I/0端口。输出时可驱动4个TTL。端口置1时,内部上拉电阻将端口拉到高电平,作输入用。对内部Flash程序存储器编程时,接控制信息。除此之外P3端口还用于一些专门功能,具体如下表1。表1P3端口引脚兼用功能表3.2LCD1602显示系统3.2.1LCD1602显示系统液晶显示器普遍地用于直观地显示数字系统或字符的运行状态和工作数据,按照材料及产品工艺[20],单片机应用系统中常用的显示器有:发光二极管LED显示器、液晶LCD显示器、CRT显示器等。LCD显示器是现在最常用的显示器之一,其仿真电路图如下所示。第10页(共43页)过程论述图6LED1602显示器的符号3.2.2液晶显示器简介(1)在日常生活中,我们对液晶显示器并不陌生。液晶显示模块已作为很多电子产品的通过器件,如在计算器、万用表、电子表及很多家用电子产品中都可以看到,显示的主要是数字、专用符号和图形。在单片机的人机交流界面中,一般的输出方式有以下几种:发光管、LED数码管、液晶显示器。发光管和LED数码管比较常用,软硬件都比较简单,在前面章节已经介绍过,在此不作介绍,本章重点介绍字符型液晶显示器的应用。在单片机系统中应用晶液显示器有以下几个优点:显示质量高——由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,而不像阴极射线管显示器(CRT)那样需要不断刷新新亮点。因此,液晶显示器画质高且不会闪烁。数字式接口——液晶显示器都是数字式的,和单片机系统的接口更加简单可靠,操作更加方便。体积小、重量轻——液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示的目的,在重量上比相同显示面积的传统显示器要轻得多。功耗低——相对而言,液晶显示器的功耗主要消耗在其内部的电极和驱动IC上,因而耗电量比其它显示器要少得多。第11页(共43页)基于单片机温湿度显示报警系统设计3.2.3LCD1602引脚功能说明1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口,编号符号引脚说明如下所示:第1脚:VSS为地电源。第2脚:VDD接5V正电源。第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生―鬼影‖,使用时可以通过一个10K的电位器调整对比度。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第12页(共43页)过程论述第7~14脚:D0~D7为8位双向数据线。第15脚:背光源正极。第16脚:背光源负极。3.2.4LCD1602的指令说明及时序第13页(共43页)基于单片机温湿度显示报警系统设计基本操作时序表与读写操作时序如表3和图8,9所示。表3基本操作时序表第14页(共43页)过程论述图8读操作时序图9写操作时序3.2.5程序流程图(详细程序见附录)第15页(共43页)基于单片机温湿度显示报警系统设计图10程序流程图3.3SHT10传感器3.3.1温湿度传感器电路图图11温湿度传感器电路图第16页(共43页)过程论述3.3.2产品简介SHT10属于Sensirion温湿度传感器家族中的贴片封装系列[22]。传感器将传感元件和信号处理电路集成在一块微型电路板上,输出完全标定的数字信号。传感器包括一个电容性聚合体测湿敏感元件、一个用能隙材料制成的测温元件,并在同一芯片上,与14位的A/D转换器以及串行接口电路实现无缝连接。因此,该产品具有品质卓越、响应迅速、抗干扰能力强、性价比高等优点。传感器芯片此说明书适用于SHT1x-V4。SHT1x-V4是第四代硅传感芯片,除了湿度、温度敏感元件以外,还包括一个放大器,A/D转换器,OTP内存和数字接口。材质传感器的核心为CMOS芯片,外围材料顶层采用环氧LCP,底层为FR4。传感器符合ROHS和WEEE标准,因此不含Pb,Cd,Hg,Cr(6+),PBB,PBDE。3.3.3SHT10引脚图12SHT10引脚图(1)电源引脚VDD、GNDSHT10的供电电压范围为2.4-5.5V,建议供电电压为3.3V。在电源引脚(VDD,GND)之间须加一个100nF的电容,用以去耦滤波。SHT10的串行接口,在传感器信号的读取及电源损耗方面,都做了优化处理;传感器不能按照I2C协议编址,但是,如果I2C总线上没有挂接别的元件,传感器可以连接到I2C总线上,但单片机必须按照传感器的协议工作。(2)串行时钟输入SCKSCK用于微处理器与SHT10之间的通讯同步。由于接口包含了完全静态逻辑,第17页(共43页)基于单片机温湿度显示报警系统设计因而不存在最小SCK频率。(3)串行数据DATADATA引脚为三态结构,用于读取传感器数据.当向传感器发送命令时,DATA在SCK上升沿有效且在SCK高电平时必须保持稳定。DATA在SCK下降沿之后改变。为确保通讯安全,DATA的有效时间在SCK上升沿之前和下降沿之后应该分别延长至TSUandTHO–参见图11。当从传感器读取数据时,DATATV在SCK变低以后有效,且维持到下一个SCK的下降沿。为避免信号冲突,微处理器应驱动DATA在低电平。需要一个外部的上拉电阻(例如:10kΩ)将信号提拉至高电平。上拉电阻通常已包含在微处理器的I/O电路中加重的DATA线由传感器控制,普通的DATA线由单片机控制.有效时间依据SCK的时序.图13时序图图14启动传输时序图后续命令包含三个地址位(目前只支持000‖),和五个命令位。SHT1x会以下第18页(共43页)过程论述述方式表示已正确地接收到指令:在第8个SCK时钟的下降沿之后,将DATA下拉为低电平(ACK位)。在第9个SCK时钟的下降沿之后,释放DATA(恢复高电平)。3.3.4传感器的通讯(1)启动传感器首先,选择供电电压后将传感器通电,上电速率不能低于1V/ms。通传感器需要11ms进入休眠状态,在此之前不允许对传感器发送任何命令。(2)发送命令用一组―启动传输‖时序,来完成数据传输的初始化。它包括:当SCK时钟高电平时DATA翻转为低电平,紧接着SCK变为低电平,随后是在SCK时钟高电平时DATA翻转为高电平。参见图12。"启动传输"时序后续命令包含三个地址位(目前只支持000‖),和五个命令位。SHT1x会以下述方式表示已正确地接收到指令:在第8个SCK时钟的下降沿之后,将DATA下拉为低电平(ACK位)。在第9个SCK时钟的下降沿之后,释放DATA(恢复高电平)。命令代码预留0000x温度测量00011湿度测量00101读状态寄存器00111写状态寄存器00110预留0101x-1110x软复位,接口复位,状态寄存器复位即恢复为默认状态.在要发送下一个命令前,至少等待11ms.(3)温湿度测量[23]发布一组测量命令(‗00000101‘表示相对湿度RH,‗00000011‘表示温度T)后,控制器要等待测量结束。这个过程需要大约20/80/320ms,分别对应8/12/14bit测量。确切的时间随内部晶振速度,最多可能有-30%的变化。SHT1x通过下拉DATA至低电平并进入空闲模式,表示测量的结束。控制器在再次触发SCK时钟前,必须等待这个―数据备妥‖信号来读出数据。检测数据可以先被存储,这样控制器可以继续执行其它任务在需要时再读出数据。接着传输2个字节的测量数据和1个字节的CRC奇偶校验(可选择读取)。uC需要通过下拉DATA为低电平,以确认每个字节。所有的数据从MSB开始,右值有效(例如:对于12bit数据,从第5个SCK时钟起算作MSB;而对于8bit数据,首字节则无意义)。在收到CRC的确认位之后,表明通讯结束。如果不使用CRC-8校验,控制器可以在测量值LSB后,通过保在测量和通讯结束后,SHT1x自动转休眠模式。(4)通讯复位时序第19页(共43页)基于单片机温湿度显示报警系统设计如果与SHT1x通讯中断,可通过下列信号时序复位:当DATA保持高电平时,触发SCK时钟9次或更多,参阅图13。接着发送一个―传输启动‖时序。这些时序只复位串口,状态寄存器内容仍然保留。图15复位时序(5)CRC-8Checksum计算数据传输的可靠性由CRC-8的校验来保证.它确保可以检测并去除所有错误数据。状态寄存器SHT1x的某些高级功能可以通过给状态寄存器发送指令来实现,如选择测量分辨率,电量不足提醒或启动加热功能等。在读状态寄存器或写状态寄存器之后,8位状态寄存器的内容将被读出或写入,如图所示。图168位状态寄存器的内容3.3.5信号转换(1)相对湿度第20页(共43页)过程论述湿度的非线性补偿请参阅下图,为获得精确的测量数据,建议用以下公式进行信号转换。linear12RH3RHRH=c+c⋅SO+c⋅SO(%RH)图17从SORH到相对湿度的转化(2)湿度信号的温度补偿由于实际温度与测试参考温度25℃(~77℉)的显著不同,湿度信号需要温度补偿。温度校正粗略对应于0.12%RH/℃@50%RH。trueC12RHlinearRH=T−25⋅t+t⋅SO+RH°温度由能隙材料PTAT(正比于绝对温度)研发的温度传感器具有极好的线性。可用如下公式将数字输出(SOT)转换为温度值,温度转换系数如下图所示。12TT=d+d⋅SO图18温度转换系数1(3)露点SHT1x并不直接进行露点测量,,但露点可以通过温度和湿度读数计算得到.。由于温度和湿度在同一块集成电路上测量,SHT1x可测量露点。露点的计算方法很多,第21页(共43页)基于单片机温湿度显示报警系统设计绝大多数都很复杂。对于-40–50°C温度范围的测量,通过下面的的公式可得到较好的精度,参数见下图所示。图19露点(Td)计算参数3.3.6环境稳定性如果传感器用于装备或机械中,要确保用于测量的传感器与用于参考的传感器感知的是同一条件的温度和湿度。如果传感器被放置于装备中,反应时间会延长,因此在程序设计中要保证预留足够的测量时间。传感器在其它测试条件下的性能,我们不予保证,尤其是在用户需要的特定场合。3.3.7图20传感器原理流程图第22页(共43页)仿真与调试3.4报警系统3.4.1报警电路图当启动仿真程序时,用手调节传感器上的按键时,可以调节温度与湿度的数据转换和相应的温湿度显示数据的递增或递减。(详细编写程序见附录)图21报警电路图4仿真与调试4.1实验目的与原理在此介绍一下我设计温湿度控制系统的工作原理:论文目标:温度范围18-27度,湿度40%-70%。超范围报警具体要求:(1)传感器采用SHT10集成传感器(2)LED温湿度显示,精确到一位小数(3)超范围发光二极管报警第一步:实现将sht10中的数据读入到单片机中然后显示到1602上第二步:调节sht10上的数据为n,若n在温度18-27范围内则正常显示到1602上,若超出范围则报警,二极管点亮(红);同理,若n在湿度40%-70%范围内则正常显示到1602上,若超出范围则报警,二极管点亮(绿).4.2仿真原理图用PROTUES软件,根据要求画出温湿度显示报警系统的的原理图如下图第23页(共43页)基于单片机温湿度显示报警系统设计图22温湿度显示报警系统的的原理图4.3系统仿真以及显示结果用protues和keil软件联调,运行期间仿真软件调试程序结果如图23所示,当调节传感器使湿度在87%时,1602显示湿度为91.88%,中间产生了部分误差,在误差允许范围之内,湿度超出设置范围,红灯亮,开始报警,运行结果如图24,25,26所示;当调节传感器使温度在29度时,1602显示温度为28.84度,中间产生了部分误差,在误差允许范围之内,温度超出设置范围,绿灯亮,开始报警,运行结果如图24,25,26所示;第24页(共43页)仿真与调试图23仿真运行结果图图24SHT10运行结果图图25报警运行结果图第25页(共43页)基于单片机温湿度显示报警系统设计图26LCD1602运行结果图4.4结果分析及测试总结采用PROTEUS进行单片机仿真,可以大大缩短单片机的开发周期。它不仅能仿真单片机CPU的工作情况,也能仿真单片机外围电路或没有单片机参与的其它电路的工作情况。本系统很好的完成了本次毕业设计的各项任务和要求,通过温湿度显示报警系统程序,成功的完成了温湿度采集功能、显示功能、报警功能。通过控制P1.0、P1.1、P1.2来调节当前温湿度数据的显示,很好的完成了显示功能。设置温湿报警范围后,LED灯也能很好的体现报警的效果,在超出设置的正常显示范围后,LED灯亮,很好的体现了报警功能。连接电路图后,通过编译程序来控制液晶显示屏的显示,通过仿真结果也很好的体现了其显示功能。5结束语本文的温湿度显示报警系统设计是以单片机(AT89C51)为核心,SHT10温湿度感应器等部分组成。具体介绍KeilC51软件调试程序和Proteus的ISIS软件进行单片机系统的设计与仿真。在这次设计中,我完成了核心控制部分、显示部分、报警部分等基本功能。通过这次设计单片机有了一个更深的认识,对于LCD1602以及SHT10的使用过程有了一定的掌握,同时对KeilC51软件和Proteus软件有了更熟练的操作。本文设计到的内容还不是很完善,我会在以后的学习和工作中会做进一步的学习和探索,以取得更大的进步。但是通过这次毕业设计,我也学到了很多东西,感觉自己应第26页(共43页)参考文献用基础知识及专业知识解决问题的能力有了很大的提高。总之,这次毕业设计收获还是蛮大的。参考文献[1]李洪超.基于AT89C51的温度控制系统设计[J].微计算机信息(嵌入式与SOC),2010.8,26(12-2):87~88[2]周乐安.基于MSP430单片机温湿度控制器[J].四川兵工时报,2008.8,29(2):113~114[3]杨学存,侯媛彬.基于MSP430单片机温湿度控制器的实现[J].煤矿机械,2005.6,(9),64~65[4]钟晓伟,宋蛰存.基于单片机的实验室温湿度控制系统设计[J].林业机械与木工设备2010.8,38(1):39~42[5]刘攀,俞杰,张海明.基于单片机的温度测控系统[J].兰州交通大学学报(自然科学版),2005.9,24(6):103~106[6]朱魏峰.基于单片机的温度监控系统[J].工业控制计算机,2011.6,24(10):91~92[7]张为.基于单片机的温湿度测量系统设[J].阴山学刊,2010.6,24(3):26~29[8]张妮,段文强,邵婷婷.基于单片机的温湿度监控系统设计[J].延安大学学(自然科学版),2010.5,29(2):50~52[9]刘翔.基于单片机的自动温度测量报警系统设计[J].电子设计工程,2011.8,19(1):125~127[10]章昕,黄秋,汤彬,方方.智能温度报警系统的研制[J].自动化技术与应用,2009.4,28(7):103~105[11]郑冬强,万琰,张平川.基于uC/OS-II的温湿度测控系统设计与实现[J].微计算机信息(嵌入式与SOC),2009.5,25(1-2):68~69[12]方言,王晓明.一种智能温湿度控制器的设计[J].智能仪器仪表,2006(10):66~67[13]余泽辉,伍建军,陈洁.基于单片机的数字温度计的研究与设计[J].黑龙江工程学院学报(自然科学版),2007.6,(12):15~16[14]罗兴垅,黄隆盛.基于AT89C51控制的0.01℃数显温度计的设计[J].微计算机信息,2006.3,22(5):70~72[15]闫怀兵,李维宁.如何选用湿度传感器产品[J].制造业自动化,1999.5,(5):10~15[16]严怀龙.基于单片机的数据采集系统[J].广西轻工业,2006.8,(6):34~35[17]江太辉,邓展威.DS18B20数字式温度传感器的特性与应用[J].电子技术,2003.7,(12):56~58[18]张娟,陈杰,蔡振江.基于多传感器数据融合的温室温度采集[J].微计算机信息2007.2,27(1-1):153~154[19]顾启民,吕庭.单片机系统中复位电路可靠性设计[J].电子测量技术,2001.7,(3):25~26[20]何立民.单片机应用系统设计[M].北京,北京航空航天出版社,l990[21]张立科.单片机通信技术与工程实践[M].北京:人民邮电出版社,2005:109~111第27页(共43页)基于单片机温湿度显示报警系统设计[22]李光弟,朱秀月,王秀山.单片机基础[M].(修订本).北京:北京航空航天大学出版社,2001[23]丁明亮,唐前辉.51单片机应用设计与仿真[M].北京:北京航空航天大学出版社,2009第28页(共43页)致谢第29页(共43页)基于单片机温湿度显示报警系统设计附录:/*************端口定义********************P1.0------SCK(SHT10)P1.1------DATA(SHT10)P0------DB0~DB7(LCD1602)P2.0------RS(LCD1602)P2.1------RW(LCD1602)P2.2------E(LCD1602)*****************************************/#include<reg52.h>#include<intrins.h>#include<stdio.h>#include<string.h>#include<absacc.h>#include<math.h>#defineucharunsignedchar#defineuintunsignedint#defineTEMPUP28//温度上限#defineTEMPDOWN17//温度下限#defineHUMDOWN70//湿度上限#defineHUMUP40sbitLcdRs=P2^0;//1602液晶端口定义sbitLcdRw=P2^1;sbitLcdEn=P2^2;sbitled1=P3^0;//报警灯端口定义sbitled2=P3^4;第30页(共43页)//湿度下限附录sbitACC0=ACC^0;sbitACC7=ACC^7;bitstart;ucharstr[7];//向LCD写入命令或数据************************************************************#defineLCD_COMMAND#defineLCD_DATA0//Command1//Data#defineLCD_CLEAR_SCREEN0x01//清屏#defineLCD_HOMING//设置显示模式************************************************************#defineLCD_SHOW#defineLCD_HIDE0x04//显示开0x00//显示关0x02//显示光标0x00//无光标0x01//光标闪动0x00//光标不闪动0x02//光标返回原点#defineLCD_CURSOR#defineLCD_NO_CURSOR#defineLCD_FLASH#defineLCD_NO_FLASH//设置输入模式************************************************************#defineLCD_AC_UP0x020x00//default#defineLCD_AC_DOWN#defineLCD_MOVE0x01//画面可平移0x00//default#defineLCD_NO_MOVEunsignedcharLCD_Wait(void);voidLCD_Write(bitstyle,unsignedcharinput);第31页(共43页)基于单片机温湿度显示报警系统设计/***********1602液晶显示部分子程序****************/voiddelay(uintz){}voidLCD_Write(bitstyle,unsignedcharinput){}voidLCD_SetDisplay(unsignedcharDisplayMode)//设置输出{}voidLCD_SetInput(unsignedcharInputMode)//设置输入{LCD_Write(LCD_COMMAND,0x08|DisplayMode);LcdRs=style;P0=input;delay(5);LcdEn=1;delay(5);uintx,y;for(x=z;x>0;x--)for(y=110;y>0;y--);//延时函数LcdEn=0;第32页(共43页)附录}LCD_Write(LCD_COMMAND,0x04|InputMode);voidLCD_Initial()//初始化LCD函数{阵}voidGotoXY(unsignedcharx,unsignedchary)//液晶字符输入的位置{}voidPrint(unsignedchar*str)//将字符输出到液晶显示{while(*str!='\0'){if(y==0)LCD_Write(LCD_COMMAND,0x80|x);LCD_Write(LCD_COMMAND,0x38);LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR);//开启显示,无光标LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);//清屏LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE);//AC递增,画面不动LcdEn=0;LCD_Write(LCD_COMMAND,0x38);//8位数据端口,2行显示,5*7点if(y==1)LCD_Write(LCD_COMMAND,0x80|(x-0x40));第33页(共43页)基于单片机温湿度显示报警系统设计}}LCD_Write(LCD_DATA,*str);str++;voidzhuanhuan(floata)//浮点数转换成字符串函数{}voidwelcome()//初始界面函数{}voiddelay_n10us(uintn)//延时n个10us@12M晶振{uinti;for(i=n;i>0;i--){LCD_Initial();GotoXY(0,0);Print("Welcome!");GotoXY(0,1);Print("Codeofsht10");delay(200);memset(str,0,sizeof(str));sprintf(str,"%f",a);第34页(共43页)附录}_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();}/*********************第一部分LCD1602设置END****************************************//*********************第二部分SHT10设置START**************************************/sbitSCK=P1^0;//定义通讯时钟端口sbitDATA=P1^1;//定义通讯数据端口typedefunion{unsignedinti;//定义了两个共用体floatf;}value;enum{TEMP,HUMI};//TEMP=0,HUMI=1#definenoACK0//用于判断是否结束通讯#defineACK1//结束数据传输//adrcommandr/w#defineSTATUS_REG_W0x06//00000110#defineSTATUS_REG_R0x07//00000111#defineMEASURE_TEMP0x03//00000011#defineMEASURE_HUMI0x05//00000101#defineRESET0x1e//00011110/****************定义函数****************/第35页(共43页)基于单片机温湿度显示报警系统设计voids_transstart(void);//启动传输函数voids_connectionreset(void);//连接复位函数chars_write_byte(unsignedcharvalue);//SHT10写函数chars_read_byte(unsignedcharack);//SHT10读函数chars_measure(unsignedchar*p_value,unsignedchar*p_checksum,unsignedcharmode);//测量温湿度函数voidcalc_dht90(float*p_humidity,float*p_temperature);//温湿度补偿voids_transstart(void)//启动传输函数//generatesatransmissionstart//_____________//DATA:|_______|//______//SCK:___||___||______{DATA=1;SCK=0;//Initialstate_nop_();SCK=1;_nop_();DATA=0;_nop_();SCK=0;_nop_();_nop_();_nop_();SCK=1;_nop_();DATA=1;_nop_();SCK=0;第36页(共43页)附录}voids_connectionreset(void)//连接复位函数//communicationreset:DATA-line=1andatleast9SCKcyclesfollowedbytransstart//_____________________________________________________________//DATA:|_______|//_______________//SCK:__||__||__||__||__||__||__||__||__||______||___||______{unsignedchari;DATA=1;SCK=0;//Initialstatefor(i=0;i<9;i++)//9SCKcycles{SCK=1;SCK=0;}s_transstart();//transmissionstart}chars_write_byte(unsignedcharvalue)//SHT10写字节函数//----------------------------------------------------------------------------------//writesabyteontheSensibusandcheckstheacknowledge{unsignedchari,error=0;for(i=0x80;i>0;i/=2)//shiftbitformasking{第37页(共43页)基于单片机温湿度显示报警系统设计if(i&value)DATA=1;//maskingvaluewithi,writetoSENSI-BUSelseDATA=0;SCK=1;//clkforSENSI-BUS_nop_();_nop_();_nop_();//pulswithapprox.3usSCK=0;}DATA=1;//releaseDATA-lineSCK=1;//clk#9forackerror=DATA;//checkack(DATAwillbepulleddownbyDHT90),DATA在第9个上升沿将被DHT90自动下拉为低电平。_nop_();_nop_();_nop_();SCK=0;DATA=1;//releaseDATA-linereturnerror;//error=1incaseofnoacknowledge//返回:0成功,1失败}/*****SHT10读函数readsabyteformtheSensibusandgivesanacknowledgeincaseof"ack=1"****/chars_read_byte(unsignedcharack){unsignedchari,val=0;DATA=1;//releaseDATA-linefor(i=0x80;i>0;i/=2)//shiftbitformasking{SCK=1;//clkforSENSI-BUSif(DATA)val=(val|i);//readbit_nop_();_nop_();_nop_();//pulswithapprox.3usSCK=0;第38页(共43页)附录}if(ack==1)DATA=0;//incaseof"ack==1"pulldownDATA-LineelseDATA=1;//如果是校验(ack==0),读取完后结束通讯_nop_();_nop_();_nop_();//pulswithapprox.3usSCK=1;//clk#9forack_nop_();_nop_();_nop_();//pulswithapprox.3usSCK=0;_nop_();_nop_();_nop_();//pulswi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安全员岗位知识培训课件
- 取水论证报告范文
- 求职机构报告范文
- 情绪调控研究报告范文
- 浙江国企招聘2024金华兰溪市兴澜旅游开发有限公司招聘4人笔试参考题库附带答案详解
- 钳工理论知识培训课件
- 二零二五年度办公室租赁及智能安防系统合同
- 二零二五年度赠与子女房产及装修设计一体化协议
- 二零二五年度幼儿托管与环保教育服务协议
- 二零二五年度纹身艺术市场分析与营销协议
- GB/T 12265-2021机械安全防止人体部位挤压的最小间距
- GB 8537-2018食品安全国家标准饮用天然矿泉水
- GB 31247-2014电缆及光缆燃烧性能分级
- 婚礼开场白主持词15篇
- 部编人教版道德与法治五年级下册全册课时练习讲解课件
- 识读齿轮精测报告课件
- 《农村土地承包法》课件
- 廉政鉴定书(院内廉政意见书)
- 《潘姓源于固始,是不争的史实》的考辨
- 焊接技师培训教材(钎焊)课件
- 《等腰三角形的性质》优秀课件
评论
0/150
提交评论