家庭用室内温度湿度自动监控系统设计

更新时间:2024-02-29 00:28:01 阅读量: 综合文库 文档下载

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

中 北 大 学

毕业设计说明书

学 院: 专 业: 学 生 姓 名: 设计题目:

信息与通信工程学院 电子信息科学与技术

高旭东

学 号: 1005014227

家庭用室内温度湿度自动监控系统设计

指完

导成

老时

师 间 颜兵

2014 年5月29日

I

目 录

摘 要 .......................................................................................................................................................... III

Abstract ................................................................................................................................................. III 1 绪论 ........................................................................................................................................................ IV

1.1课题的目的和意义 ......................................................................................................................... IV 1.2 传感器的介绍................................................................................................................................. V 1.3国内外温湿技术及其发展趋势 ................................................................................................. VIII 2 方案比较和选择 ...................................................................................................................................... IX

2.1 温度传感器的选择 ....................................................................................................................... IX 2.2 湿度传感器的选择 ......................................................................................................................... X 2.3 单片机的选择............................................................................................................................... XI 2.4 本章小结 ...................................................................................................................................... XII 3 系统总体框图设计 ................................................................................................................................. XII

3.1 硬件系统的的原理方框图 .......................................................................................................... XII 3.2 系统工作原理................................................................................................................................ 15 3.3 温度传感器 .................................................................................................................................. 16 3.4湿度传感器 ................................................................................................................................... 18 3.5信号分析与处理 .......................................................................................................................... 21 3.6 其他硬件模块............................................................................................................................... 26 3.7 本章小结 ...................................................................................................................................... 30 4 软件设计 .................................................................................................................................................. 30

4.1 主程序流程图............................................................................................................................... 30 4.2 DS18B20测温流程图 .................................................................................................................... 32 4.3 DHT11流程图 ............................................................................................................................... 32 4.4 键盘扫描子程序流程图 ............................................................................................................... 33 4.5 本章小结 ...................................................................................................................................... 35 5总结 ........................................................................................................................................................... 35 6参考文献 ................................................................................................................................................... 36 附录A 系统总体电路图 ............................................................................................................................. 36 附录B 系统源代码 ..................................................................................................................................... 38 致谢 .............................................................................................................................................................. 53

II

摘 要

要目前室内的温度、湿度还是采用人工控制和经验判断,不能及时对室内里的温度湿度进行调整。而且人工控制效率低、劳动强度大,造成了人力资源的浪费。本设计以STC89C51单片机为核心完成了对室内空气温度、湿度进行数据的采集、处理、显示等系统的基本框图、工作原理和继电器控制的设计的工作。主要内容有:(1)通过数字温度传感器DS18B20采集实时温度。(2)通过湿度传感器DHT11采集实时湿度。(3)判断采集到的参数值与设置值是否一致,并进行继电器控制。

通过以上设计可以对植物生长过程中的土壤湿度、环境温度、光照度进行了实时地、连续地检测、直观地显示并进行自动地控制。克服了传统的人工测量方法不能进行连续测量的弊端,节省了工作量,并避免了人为的疏漏或错误造成的不必要的损失。

关键字:湿度传感器、 数字温度传感器、 单片机

Design of SCM-based Temperature and Humidity Illumination Automatic Control System for House

Abstract

At present, temperature and humidityt intensity of some greenhouse still rely on the controlling of artificial and judging of experience, which can not conduct real-time monitor to the temperature and humidity intensity of house. Moreover it’s inefficient, labor-intensive, and wastes human resources.The thesis mainly focus on: the base block diagram, working principle and the design of relay control which use the SCM STC89C51 as the core of the system to collect, handle, display the data of the air temperature, soil humidity and light illuminance . The main contents: (1) collected real-time temperature by digital temperature sensor DS18B20. (2) collected real-time humidity by humidity sensor DHT11t illumination. (3) judge the collected parameter values and the setting values whether same or not, and control the relay.

III

The system use Real-time and continuous detection, display intuitively and control automatically on house humidity, ambient temperature, in the process of The healthy growth of the people . The system can overcome the defects from the traditional manual methods of measurement which can not measure continuously, and save the amount of work, avoid omissions or unnecessary losses that caused by errors.

【Key words】 SCM;humidity sensors;digital temperature sensors;; relay control

1 绪论

1.1课题的目的和意义

室内温湿监控系统的设计是一个对现实生活非常实用,对学生知识运用非常好的锻炼课题。本课题研究的主要内容是设计制作对室内温湿度的监督与控制,相当于简易空调的制作,了解空调系统,运用原理设计制作方案;运用物理知识制作控制温湿变化设备;传感器获取外界温湿度参数, 51单片机编程控制,实现智能化设计;并用仿真软件对控制效果进行仿真研究[1]。

随着科技的飞速发展和普及,高性能设备越来越多,各行各业对温湿度的要求也越来越高。 传统的温湿度监测模式是以人为基础,依靠人工轮流值班,人工巡回查看等方式来测量和记录环境状况信息。在这种模式下,不仅效率低下不利于人才资源的充分利用,而且缺乏科学性,许多重大事故都是由人为因素造成的,人工维护缺乏完整的管理系统。而问世监控系统就可以解决这样人才资源浪费,管理不及时的问题,这是由于它的智能化设计所决定的。它的工作步骤如下:感应环境温度湿度;单片机判断感应到的温湿度是否异常;若感应到的温湿度异常,实行措施进行调节;判断异常是否超过预设时间,若超过预设时间,则输出异常信号报警;判断异常是否处理完毕,若处理完毕,解除报警。这样就可以利用控制器对机房温湿度进行监控,从而实现环境温湿度管理的实时性和有效性。故本次设计对于类似项目还具有普遍意义[3]。

[2]

IV

1.2 传感器的介绍

1.2.1 温度传感器

集成温度传感器是目前应用范围最广、使用最普及的一种全集成化传感器。其种类很多,大致可分为以下5类:1、模拟集成温度传感器;2、模拟集成温度控制器;3、智能温度传感器;4、通用智能温度控制器;5、微机散热保护专用的智能温度控制器。

集成温度传感器的主要应用领域有以下3个方面:

1.温度测量:可以构成数字温度计、温度变送器、温度巡回检测仪、智能化温度检测系统及网络化测温系统。

2.温度控制:适用于智能化温度测控系统、工业过程控制、现场可编程温度控制系统、环境温度监测及报警系统、中央空调、风扇温控电路、微处理器及微机系统的过热保护装置、现代办公设备、电信设备、服务器中的温度测控系统、电池充电器的过热保护电路、音频功率放大器的过热保护电路及家用电器。

3.特殊应用:例如,热电偶冷端温度补偿、测量温差、测量平均温度、测量温度场、电子密码锁(仅对内含64位ROM的单线总线智能温度传感器而言)及液晶显示器表面温度监测等。

模拟集成温度传感器是在20世纪80年代问世的,它是将温度传感器集成在一个芯片上、可完成温度测量及模拟信号输出功能的专用IC。模拟集成温度传感器的主要特点是功能单一(仅测量温度)、测温误差小、价格低、响应速度快、传输距离远、体积小、微功耗等,适合远距离测温、控温,不需要进行非线性校准,外围电路简单。它是目前在国内外应用最为普遍的一种集成传感器,典型产品有AD590、AD592、TMP17、LM135等。

智能温度传感器(亦称数字温度传感器)是在20世纪90年代中期问世的。它是微电子技术、计算机技术和自动测试技术(ATE)的结晶。目前,国际上已开发出多种智能温度传感器系列产品。智能温度传感器内部都包含温度传感器、A/D转换器、信号处理器、存储器(或寄存器)和接口电路。有的产品还带多路选择器、中央控制器(CPU)、随机存取存储器(RAM)和只读存储器(ROM)。智能温度传感器的特点是能输出温度数据及相关的温度控制量,适配各种微控制器(MCU),并且它是在硬件的基础上通过软件来实现测试功能的,其智能化程度也取决于软件的开发水平。进入21世纪后,智能温度传感器正朝着高精度、多功能、总线标准化、高可靠性及安全性、开发虚拟传感器和

V

网络传感器、研制单片测温系统等高科技的方向迅速发展。

在20世纪90年代中期最早推出的智能温度传感器,采用的是8位A/D转换器,其测温精度较低,分辨力只能达到1℃。目前,国外已相继推出多种高精度、高分辨力的智能温度传感器,所用的是9~12位A/D转换器,分辨力一般可达0.5~0.0625℃。由美国DALLAS半导体公司新研制的DS1624型高分辨力智能温度传感器,能输出13位二进制数据,其分辨力高达0.03125℃,测温精度为±0.2℃。为了提高多通道智能温度传感器的转换速率,也有的芯片采用高速逐次逼近式A/D转换器。以AD7817型5通道智能温度传感器为例,它对本地传感器、每一路远程传感器的转换时间分别仅为27μs、9μs。

新型智能温度传感器的测试功能也在不断增强。例如,DS1629型单线智能温度传感器增加了实时日历时钟(RTC),使其功能更加完善。DS1624还增加了存储功能,利用芯片内部256字节的E2PROM存储器,可存储用户的短信息。另外,智能温度传感器正从单通道向多通道的方向发展,这就为研制和开发多路温度测控系统创造了良好条件。智能温度传感器的总线技术也实现了标准化、规范化,所采用的总线主要有单线总线、I2C总线、SMBus总线和SPI总线。 1.2.2 湿度传感器

湿度传感器产品及湿度测量属于90年代兴起的行业。湿度传感器主要分为电阻式和电容式两种,产品的基本形式都是在基片上涂覆感湿材料形成感湿膜。空气中的水蒸汽吸附在感湿材料上后,元件的阻抗、介质常数发生很大的变化,从而制成湿敏元件。近年来,国内外在湿度传感器研发领域取得了较大的发展。湿敏传感器正从简单的湿敏元件向集成化、智能化、多参数检测的方向迅速发展。

国内外各厂家的湿度传感器产品水平不一,质量价格都相差较大,用户如何选择性能价格比最优的理想产品确有一定难度,需要在这方面作深入的了解。现在国内市场上出现了不少国内外湿度传感器产品,电容式湿敏元件较为多见,感湿材料种类主要为高分子聚合物,氯化锂和金属氧化物。

湿敏元件是最简单的湿度传感器。湿敏电阻的特点是在基片上覆盖一层用感湿材料制成的膜,当空气中的水蒸气吸附在感湿膜上时,元件的电阻率和电阻值都发生变化,利用这一特性即可测量湿度。湿敏电阻的种类很多,例如金属氧化特湿敏电阻、硅湿敏电阻、陶瓷湿敏电阻等。湿敏电阻的优点是灵敏度高,主要缺点是线性度和产品的互换性差。湿敏电容一般是用高分子薄膜电容制成的,常用的高分子材料有聚苯乙烯、聚酰

VI

亚胺、酷酸醋酸纤维等。当环境湿度发生改变时,湿敏电容的介电常数发生变化,使其电容量也发生变化,其电容变化量与相对湿度成正比。湿敏电容的主要优点是灵敏度高、产品互换性好、响应速度快、湿度的滞后量小、便于制造、容易实现小型化和集成化,其精度一般比湿敏电阻要低一些。国外生产湿敏电容的主厂家有Humirel公司、Philips公司、Siemens公司等。以Humirel公司生产的SH1100型湿敏电容为例,其测量范围是(1%~99%)RH,在55%RH时的电容量为180pF(典型值)。当相对湿度从0变化到100%时,电容量的变化范围是163pF~202pF。温度系数为0.04pF/℃,湿度滞后量为±1.5%,响应时间为5s。除电阻式、电容式湿敏元件之外,还有电解质离子型湿敏元件、重量型湿敏元件(利用感湿膜重量的变化来改变振荡频率)、光强型湿敏元件、声表面波湿敏元件等。湿敏元件的线性度及抗污染性差,在检测环境湿度时,湿敏元件要长期暴露在待测环境中,很容易被污染而影响其测量精度及长期稳定性。

目前,国外生产集成湿度传感器的主要厂家及典型产品分别为Honeywell公司(HIH-3602、HIH-3605、HIH-3610型),Humirel公司(HM1500、HM1520、HF3223、HTF3223型),Sensiron公司(SHT11、SHT15型)。这些产品可分成以下三种类型:

(1)线性电压输出式集成湿度传感器;典型产品有 HIH3605/3610、HM1500/1520。其主要特点是采用恒压供电,内置放大电路,能输出与相对湿度呈比例关系的伏特级电压信号,响应速度快,重复性好,抗污染能力强。

(2)线性频率输出集成湿度传感器;典型产品为HF3223型。它采用模块式结构,属于频率输出式集成湿度传感器,在55%RH时的输出频率为8750Hz(型值),当上对湿度从10%变化到95%时,输出频率就从9560Hz减小到8030Hz。这种传感器具有线性度好、抗干扰能力强、便于配数字电路或单片机、价格低等优点。

(3)频率/温度输出式集成湿度传感器;典型产品为HTF3223型。它除具有HF3223的功能以外,还增加了温度信号输出端,利用负温度系数(NTC)热敏电阻作为温度传感器。当环境温度变化时,其电阻值也相应改变并且从NTC端引出,配上二次仪表即可测量出温度值。

2002年Sensiron公司在世界上率先研制成功SHT(DHT)11、 SHT(DHT)15型智能化温度/温度传感器,其外形尺寸仅为7.6(mm)×5(mm)×2.5(mm),体积与火柴头相近。出厂前,每只传感器都在温度室中做过精密标准,标准系数被编成相应的程序存入校准存储器中,在测量过程中可对相对湿度进行自动校准。它们不仅能准确测量相对温度,还能测量温度和露点。测量相对温度的范围是0~100%,分辨力达0.03%RH,最高

VII

精度为±2%RH。测量温度的范围是-40℃~ 123.8℃,分辨力为0.01℃ 1.2.3单片机的发展

单片机诞生于20世纪70年代末,经历了SCM、MCU、SOC三大阶段。(1)SCM即单片微型计算机(Single Chip Microcomputer)阶段,主要是寻求最佳的单片形态嵌入式系统的最佳体系结构。“创新模式”获得成功,奠定了SCM与通用计算机完全不同的发展道路。(2)MCU即微控制器(Micro Controller Unit)阶段,主要的技术发展方向是:不断扩展满足嵌入式应用时,对象系统要求的各种外围电路与接口电路,突显其对象的智能化控制能力[4]。(3)单片机是嵌入式系统的独立发展之路,向MCU阶段发展的重要因素,就是寻求应用系统在芯片上的最大化解决;因此,专用单片机的发展自然形成了SOC化趋势[5]。随着微电子技术、IC设计、EDA工具的发展,基于SOC的单片机应用系统设计会有较大的发展[6]。 1.3国内外温湿技术及其发展趋势

随着人们的生活水平的不断提高对生活环境和生产环境的要求就显得尤为重要,温湿度的控制就是一个典型的例子,因此温湿度检测系统就是现代生产生活中应用而生的一种智能、快捷、方便可靠地检测系统,特别是在实验室做实验中如果如果检测的不准确就会发生很多的生产事故。如实验过程中对温度的检测不当就会导致生产效率的降低。和产品质量的下降。而现在所使用的温湿度检测系统通常都是精度为1℃或0.1℃的水银、煤油或酒精温度计进行的温度检测和用传统的物理模拟量的方法进行的湿度检测。这些温湿度检测计的刻度间通常都很密,不容易准确分辨,读书困难,而且他们的热容量还比较大,达到热平衡所需的时间较长,因此很难读准,并且使用非常不方便[7]。

国内对温湿控制技术研究起步较晚。自20世纪80年代以来,在引进、吸收国外高科技温湿生产技术的基础上,我国进行了温室中温度、湿度和二氧化碳等单项环境因素控制技术的研究[8]。1982年中国农科院建立了全国农业系统的第一个计算机应用研究机构。1995年,北京农业大学研制成功的WJG-1型实验温室环境计算机管理系统,仅仅是进行单因子控制,操作性和可靠性均不够理想[9]。

温度湿度传感器正朝着集成化、智能化、系统化的发展方向;与此同时,温湿度测量技术也在不断进步。在农业生产、气象、环保、国防、科研、航天等部门,经常需要对环境温度湿度进行测量及控制。准确测量温湿度对生物制药、食

VIII

品加工、造纸等更至关重要的。相比之下,测量湿度要比测量温度更复杂,这是因为温度是个独立的被测量,而湿度却受大气压强和温度的影响[10]。目前,温湿度测量领域的新技术不断涌现,新产品也层出不穷。

自70年代以来,由于工业控制的需要,特别是在微电子技术和计算机技术的迅猛发展以及自动控制理论和设计方法的推动下,国外温度调节系统发展迅速,并在智能化、自适应、参数自整定等方面取得成果,在这方面,日本、美国、德国、瑞典等国走到了世界的前列,掌握了领先的技术,并且都已经生产出一批商品化的、性能优异的温度控制器和仪器仪表,在各个行业都得到的广泛应用[11]。目前,外国温度控制系统及仪表正朝着高精度、智能化、小型便携化等方面发展。美国开发的冬天保温用的双层充气膜、高压雾化降温加湿系统以及夏季降温用的湿帘降温系统处于世界领先水平;韩国的换气、灌水、二氧化碳浓度控制等设施比较先进;荷兰的顶面涂层隔热、 加热系统、人工补光等方面有较高的水平;目前正开发和研制计算机数据采集控制系统的多因子综合控制系统[12]。现在世界各国的温室控制技术发展很快,一些国家在实现自动化的基础上正向着完全自动化、无人化的方向发展。像园艺强国荷兰,以先进的鲜花生产技术著称于世,其玻璃温室全部由计算机操作[13]。日本研制的蔬菜塑料大棚在播种、间苗、运苗、灌水、喷药等作业的自动化和无人化方面都有应用。日本利用计算机控制温室环境因素的方法,主要是将各种作物不同生长发育阶段所需要的环境条件输入计算机程序,当某一环境因素发生改变时,其余因素自动作出相应修正或调整[14]

2 方案比较和选择

2.1 温度传感器的选择

方案一:采用热电阻温度传感器。热电阻是利用导体的电阻随温度变化的特性制成的测温元件。现在应用较多的有铂、铜、镍等热电阻。其主要的特点为精度高、测量范围大、便于远距离测量。铂的物理、化学性能极稳定,耐氧化能力强,易提纯,复制性好,工业性好,电阻率较高,因此,铂电阻用于工业检测中高精密测温和温度标准。缺点是价格贵,温度系数小,受到磁场影响大,在还原介质中易被玷污变脆。按IEC标准测温范围-200℃~650℃,百度电阻比W(100)=1.3850时,R0为100?和10?,其允许的测量误差A级为±(0.15℃+0.002|t|),B级为±(0.3℃+0.005|t|)。铜电阻的温度系数比铂电阻大,价格低,也易于提纯和加工;但其电阻率小,在腐蚀性介质中使用稳

IX

定性差。

方案二:采用模拟集成温度传感器AD590,它的测温范围在-55℃~+150℃之间,而且精度高。M档在测温范围内非线性误差为±0.3℃。AD590可以承受44V下向电压和20V反向电压,因而器件反接也不会损坏,使用可靠。它只需直流电源就能工作,而且,无需进行线性校正,所以使用也非常方便,接El也很简单。作为电流输出型传感器和电压输出型相比,它有很强的抗外界干扰能力。AD590的测量信号可远传百余米。

方案三:采用数字化温度传感器。DSl8B20是Dallas半导体公司研制的一款数字化温度传感器,支持“一线总线”接口,即只通过一根信号线完成数据、地址和控制信息的传输。该器件只有3个引脚(即电源VDD、地线GND、数据线DQ),且不需要外部元件,内部有64位光NROM,64位器件序列号出厂前就被光刻于ROM中,可作为器件地址序列码,便于实现多点测量。全部传感元件及转换电路集成在形如一只三极管的集成电路内;现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性,适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。该电路的检测温度范围为-55~+125℃:精度为±0.5℃(在-10℃~+85℃范围);可以分别在93.75ms和750 ms内完成9位和12位的数字温度值读入。

系统有如下特点:

(1)不需要备份电源,可通过信号线供电; (2)送串行数据,不需要外部元件; (3)零功耗等待;

(4)系统的抗干扰性好,适合于恶劣环境的现场温度测量,如环境控制、设备过程控制、测温类消费电子产品等。

考虑到硬件设计的性价比,综合本系统需要满足的技术指标我们选择方案三 2.2 湿度传感器的选择

测量空气湿度的方式很多,其原理是根据某种物质从其周围的空气吸收水分后引起的物理或化学性质的变化,间接地获得该物质的吸水量及周围空气的湿度。电容式、电阻式和湿涨式湿敏原件分别是根据其高分子材料吸湿后的介电常数、电阻率和体积随之发生变化而进行湿度测量的。

方案一:采用CHR-01湿敏电阻。CHR-01湿敏电阻适用于阻抗型高分子湿度传感器,它的工作电压为交流1V,频率为50Hz~2kHz,测量湿度范围为20%~90%RH,测量精度±

X

5%,工作温度范围为0~+85℃,最高使用温度120℃,阻抗在60%RH(25℃)时为30(21~40.5)KΩ。采用555时基或RC振荡电路,将湿度传感器等效为阻抗值,测量振荡频率输出,振荡频率在1k Hz左右。

方案二:采用DHT11数字温湿度传感器,这款传感器和Sensiron公司研制的SHT1X同属一个系列只是测量精度上不同,这是一款含有已校准熟悉信号输出的温湿度复合传感器,它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性和卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个DHT11传感器都在即为精确的湿度校验室中进行校准。校准系数以程序的形式存在OTP内存中,传感器内部在检测型号的处理过程中药调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。

综合比较,方案一需要很好地解决引线误差补偿、多点测量切换误差和放大电路零点漂移等问题,需要在接口上需要A/D转换器,因而造成结构复杂且成本高,调试也繁琐,测量温度的精度也很低,方案二把以上的功能都集成在芯片里面,数字输出,可直接和mcu相连,电路结构简单,精度高,虽然也有温度检测的功能,但其精度没有DS18B20高,所以只用它的湿度检测功能。相比较,选择方案二。 2.3 单片机的选择

在多数电子设计当中,基于性价比的考虑,8位单片机仍是首选。目前,8位单片机在国内外仍占有重要地位。在8位单片机中又以MCS-51系列单片机及其兼容机所占的份额最大。MCS-51的硬件结构决定了其指令系统不会发生变化,设计人员可以很容易的对不同公司的单片机产品进行选型,他们只需将重点放在芯片内部资源的比较上。

方案一:采用AT89C51芯片作为硬件核心,采用Flash ROM,内部具有4KBROM存储空间,能于3V的超低压工作,而且与MCS-51系列单片机完全兼容,但是运用于电路设计中时由于不具备ISP在线编程技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,对芯片的多次拔插会对芯片造成一定的损坏。

方案二:采用AT89S52片内ROM全都采用Flash ROM;能以3V的超底压工作;同时也与MCS-51系列单片机完全该芯片内部存储器为8KB ROM存储空间,同样具有89C51的功能,且具有在线编程可擦除技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片多次拔插,所以不会对芯片造成损坏。

XI

方案三:STC89C52 是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。使用高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在线系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。

方案一是多年前的的产品,因自身设计缺陷,已经很少被人使用。方案二和方案三使用差别不大,但方案二需要专有下载线,方案三使用串口下载即可。因此选择方案三。

2.4 本章小结

本章主要介绍环境检测仪用到的主要芯片的选择,如温度传感器、湿度传感器控制处理芯片等。对比考虑各器件性能、特点、使用难易度、成本等因素,选择适合本产品指标的元器件。

3 系统总体框图设计

3.1 硬件系统的的原理方框图

3.1本方案以STC89C52单片机系统为核心来对温度、湿度进行实时控制和巡检。各检测单元能独立完成各自功能,并根据主控机的指令对温湿度进行实时采集。主控机负责控制指令的发送,并控制各个检测单元进行温度采集,收集测量数据,同时对测量结果进行整理和显示。其中包括单片机、复位电路、温度检测、湿度检测、键盘及显示、系统软件等部分的设计。

硬件系统的的原理方框图如图3-1:

XII

温度传感器 湿度传感器 LCD单片机显示屏 室 空 调 内加湿器 执行部件键盘控制电路 干燥器

3.1.1 湿度控制部分流程

.单片机通过湿度传感器检测室内的湿度,若室内的湿度过低,单片机就打开空气加湿器,,经过一段时间,单片机再次检测室内湿度,如果湿度过高,就关闭空气加湿器。如果开始检测的是你湿度在适宜的范围,单片机则维持现有状态不变。

室内湿度控制部分流程如图3-1-1

XIII

开始 湿度是否在规定范围内 干燥器继电器断开 湿度是否高于规定范围内 湿度是否低于规定范围内 结束 加湿器继电 器断开 干燥器停止工作 加湿器停止 工作 3.1.2 温度控制流程图

.单片机通过温度传感器检测室内空气温度,当空气温度过高时,打开空调完成降温作业,而当室内温度过低时,则通过单片机自动调高空调温度,使温度值达到适宜的范围。 若一开始检测的温度在适宜范围,单片机将维持现有状态。

温度控制流程图如图3-1-2

温度是否在设定的适宜范围内? N Y Y 开始 温度是否高于设定的适宜范围上限? N 空调继电器打开 温度是否低于设定的适宜范围下限? N Y 空调温度调高

空调开始工作 XIV 空调暖气工作

3.2 系统工作原理

本设计的主要功能模块为控制板、温度、湿度传感器、LCD显示屏、执行器件等。利用空调、干燥器、加湿器实现对室内空气迅速升温或降温和升高或降低空气湿度。运行原理容下:

1接通电源后整机工作,温度和湿度传感器自动接收室内空气温度和湿度信号,同时系统监测用户是否自行设定了温度、湿度的上下界,若没有设定则调用系统默认设置。

2控制板既已这些信号为基准开始各项控制工作。首先判断室内温度,若温度低于系统默认温度值25℃,则需要启动空调给室内空气升温;若温度高于系统默认温度值28℃则需要启动空调给室内空气降温,。再判断湿度,若湿度值低于系统默认湿度值45%,则需要启动加湿器给室内空气增加湿度; 若湿度值高于系统默认湿度值65%,则需要启动干燥器给室内空气降低湿度。当室内温度、湿度达到用户设定或系统默认值时,空调、干燥器或加湿器停止工作,系统进入温度湿度保持状态。

3自动检测的时间间隔。当检测到的温度湿度不在系统默认温度湿度值时 检测的时间间隔如下

已知空调参数,房间参数、室外环境温度假设恒定 T=T2-(T2-T1)e^(-m2*t/m1)

其中T为房间温度;T2为空调的送风温度;T1为室外温度;m2为空调的质流量;m1为空调房间内空气的质量。

从方程可以看出,时刻t为0时,T=T1;当T2温度越低,m2质流量越大的情况下,T就越快的接近T2。最后就会无限接近T2。

在方程中我没有考虑房间负荷对最终时间的影响,虽然说在微分方程中只是一个

15

常数,但求不出其解析解。需要用合适的差分格式求解数值解。把房间负荷加进来了。 最后的方程为

T=[T1-(a+m2T2)/m2]e^(-m2*t/m1)+(a+m2T2)/m2.

其中a为每秒的房间负荷。其计算方法我举个例子。

若房间面积为30m2,其冷负荷指标为100W/m2,则每秒房间负荷为100*30/3600=0.83W/s

若你想知道房间温度到达某特定温度时,将温度代入T,计算出时间t即可

当检测到的温度湿度在系统默认温度湿度值时,采用系统默认的自动检测的

时间间隔。

3.3 温度传感器

1 DS18B20简介

DSl8B20是美国DALLAS公司最新推出的数字式温度传感器,与传统的热敏电阻有所不同的是它可直接将被测温度转化成串行数宁信号供微机处理,并且根据具体要求,通过简单的编程实现9位的温度读数。并且多个DSl8820可以并接到多个地址线上与单片机实现通信。由于每一个DSl8820出厂时都刻有唯一的一个序列号并存入其ROM中,因此CPU可用简单的通信协议就可以识别,从而节省了大量的引线和逻辑电路。

2 DS18B20功能特点 ? 3.0~5.5V单电源供电

? 微型化、低功耗、抗干扰能力强、易与微处理器接口 ? 温度测量范围为—55°C~+125°C,测温分辨率可达0.5°C ? 3引脚TO—92小体积封装或8引脚μSOP封装 ? 可编程为9位~12位A/D转换精度 ? 只需一根端口线就能与微处理器通讯

16

? 每只DS18B20有唯一的序列号并可存入其ROM中,便于实现多芯片多点测量

? 在使用中不需要任何外围元件 ? 用户可定义的非易失性温度报警设置

图3—2-1 DS18B20

3 DS18B20结构和工作原理

图3—2-2是表示 DS18B20 的结构图,表3—2-3已经给出了引脚说明。64位只读存储器储存器件的唯一片序列号。高速暂存器含有两个字节的温度寄存器,这两个寄存器用来存储温度传感器输出的数据。除此之外,高速暂存器提供一个直接的温度报警值寄存器(TH和TL),和一个字节的的配置寄存器。配置寄存器允许用户将温度的精度设定为9,10,11或12位。TH,TL和配置寄存器是非易失性的可擦除程序寄存器(EEPROM),所以存储的数据在器件掉电时不会消失。DS18B20通过达拉斯公司独有的单总线协议依靠一个单线端口通讯。当全部器件经由一个3态端口或者漏极开路端口(DQ引脚在DS18B20上的情况下)与总线连接的时候,控制线需要连接一个弱上拉电阻。在这个总线系统中,微控制器(主器件)依靠每个器件独有的64位片序列号辨认总线上的器件和记录总线上的器件地址。由于每个装置有一个独特的片序列码,总线可以连接的器件数目事实上是无限的。DS18B20的另一个功能是可以在没有外部电源供电的情况下工作。当总线处于高电平状态,DQ与上拉电阻连接通过单总线对器件供电。同时处于高电平状态的总线信号对内部电容(Cpp)充电,在总线处于低电平状态时,该电容提供能量给器件。这种提供能量的形式被称为“寄生电源” 。作为替代

17

选择,DS18B20同样可以通过VDD引脚连接外部电源供电。

图3—2-2 DS18B20内部结构

表3—2—3 DS18B20引脚说明

3.4湿度传感器

1 DHT11概述

DHT11属于Sensirion温湿度传感器家族中的插针型封装系列。传感器将传感元件和信号处理电路集成在一块微型电路板上,输出完全标定的数字信号。传感器采用专利的CMOSens@技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电容性聚合体测湿敏感元件、一个用能隙材料制成的测温元件,并在同一芯片上,与14位的A/D转换器以及串行接口电路实现无缝连接。因此,该产品具有品质卓越、响应迅速、抗干扰能力强,性价比高等优点。每个

18

传感器芯片都在极为精确的湿度腔室中进行标定,校准系数以程序形式储存在OTP内存中,用于内部的信号校准。两线制的串行接口与内部的电压调整,使外围系统集成变得快速而简单。

2 DHT11特点

? 湿温度传感器的一体化结构能相对的同时对相对湿度和温度进行测量。

? 数字信号输出,从而减少用户信号的预处理负担。

? 单总线结构输出有效的节省用户控制器的I/O口资源。并且,不需要额外电 器元件。

? 独特的单总数据传输线协议使得读取传感器的数据更加便捷。 ? 全部校准。编码方式为8位二进制数。

? 40bit 二进制数据输出。其中湿度整数部分占1Byte,小数部分1Byte,温度

整数部分1Byte,小数部分1Byte。其中,湿度为高16位。最后1Byte为和。

? 卓越的长期稳定性,超低功耗。 ? 4引脚安装,超小尺寸。 ? 各型号管脚完全可以互换。

? 测量湿度范围从20%RH到90%RH;测量温度范围从0℃到50℃。 ? 适用范围包括恒湿控制,消费家电类产品,温湿度计等领域

图3—3-1 DHT11外形及引脚说明

3 DHT11引脚说明及工作原理

19

传感器管脚方向识别:正面(有通气孔的一面)看过去,从左到右依次为1、2、3、4脚。

表3—3-2 引脚说明

引脚号 1 2 3 4 引脚名称 VCC Dout NC GND 类型 电源 输出 空 地 引脚说明 正电源输入,3V-5.5V DC 单总线。数据输入/输出引脚 空脚。扩展未用 电源地 数字湿温度传感器采用单总线数据格式。即单个数据引脚端口完成输入输出双向传输。其数据包由5Byte(40Bit)组成。一次通讯时间最大3ms,数据分小数部分和整数部分,具体格式在下面说明。 DATA 用于微处理器与DHT11之间的通讯和同步,采用单总线数据格式,当前小数部分用于以后扩展,现读出为0。操作流程如下:

一次完整的数据传输为40bit,高位先出。

数据格式:8bit湿度整数数据+8bit湿度小数数据 +8bit温度整数数据+8bit温度小数数据 +8bit校验和,校验和数据为前四个字节相加。

DHT11传感器是通过奥松电子有限公司开发的单总线协议和上位机(控制器)进行数据通信。DHT11 传感器需要严格的读写协议来确保数据的完整性。整个读写分为,上位机发送起始信号,上位机接收下位机发来的握手响应信号,读‘0’和读‘1’四个步骤。所有的信号除主机启动复位信号外,全部都由 DHT11 产生。通过单总线访问 DHT11顺序归纳如下:

1) 主机发开始信号

2) 主机等待接收 DHT11 响应信号 3) 主机连续接收 40Bit 的数据和校验和 4) 数据处理

4 DHT11与单片机连接的设计

DHT11数字湿度传感器连接电路简单,只需要占用控制器一个I/O口即可完成上下位的连接。典型应用电路如下图所示。另外,建议连接线长度短于20米时用5K上拉电阻,大于20米时根据实际情况使用合适的上拉电阻,如图3—3-3所示。

20

3.5信号分析与处理

本系统的单片机型号选择STC89C52芯片。STC89C52指令代码完全兼容8051单片机,12时钟/机器周期和6时钟/机器周期可任意选择,

本系统中,选择STC89C52单片机为该系统的总控芯片,STC89C52单片机可把由温度、湿度检测电路检测出的信号数据传输到LED显示模块,实现温度、湿度;通过键盘设定界限值,超过温度、湿度上下限,实现自动调控。 3.5.1 单片机最小系统

单片机系统的扩展是以基本最小系统为基础的,故应首先熟悉应用应用系统的结构。单片机最小系统包括晶体振荡电路、复位电路,其电路图如图3—4-1所示。

21

1.复位电路

单片机复位的原理是在时钟电路开始工作后,在单片机的RST引脚施加24个时钟振荡脉冲(即两个机器周期)以上的高电平,单片机便可以实现复位。在复位期间,单片机的ALE引脚和\\P\\S\\E\\N引脚均输出高电平。当RST引脚从高电平跳变为低电平后,单片机便从0000H单元开始执行程序。

在实际应用中,一般采用既可以手动复位,又可以上电复位的电路,这样可以人工复位单片机系统,这种电路如图3—4-1复位部分所示。上电复位电路部分的原理也是RC电路的充放电效应。除了系统上电的时候可以给RST引脚一个短暂的高电平信号外,当按下按键开关的时候,VCC通过一个高电阻连接到RST引脚,给RST一个高电平,按键松开的时候,RST引脚恢复为低电平,复位完成。 产生复位信号的电路逻辑如图3—4-2所示:

图3—4-2 复位信号的电路

22

2.晶振电路

时钟电路是用于产生单片机正常工作时所需要的时钟信号,STC89C52单片机内部包含有一个振荡器,可以用于CPU的时钟源。另外也可以采用外部振荡器,由外部振荡器产生的时钟信号来供内部CPU运行使用。

(1)内部时钟模式

内部时钟模式是采用单片机内部振荡器来工作的模式。如图3—4-3(a)所示,51系列单片机内部包含有一个高增益的单级反相放大器,引脚XTAL1和XTAL2分别为片内放大器的输入端口和输出端口,其工作频率为0~33MHz。

当单片机工作于内部时钟模式的时候,只需在XTAL1引脚和XTAL2引脚连接一个晶体振荡器或陶瓷振荡器,并联两个电容后接地即可。使用时对于电容的选择有一定得要求,具体如下:

A 当外接晶体振荡器的时候,电容值一般选择C1=C2=30±10pF; B 当外接陶瓷振荡器的时候,电容值一般选择C1=C2=40±10pF。 在实际电路设计时,尽量保证外接的振荡器和电容尽可能接近单片机的XTAL1和XTAL2引脚,这样可以减少寄生电容的影响,使振荡器能够稳定可靠地为单片机CPU提供时钟信号。

(2)外部时钟模式

外部时钟模式是采用外部振荡器产生时钟信号,直接提供给单片机使用。如图3—4-3(b)所示,对于不同的结构的单片机,外部时钟信号接入的方式有所不同。对于普通的8051单片机,外部时钟信号由XTAL2引脚接入后直接送到单片机内部的时钟信号发生器,而引脚XTAL1则应直接接地。这里需要注意,由于XTAL引脚的逻辑电平不是TTL信号,因此外接一个上拉电阻。对于CMOS型的

23

80C51,80C52,AT89S52等单片机,和普通的8051不同的是其内部的时钟信号取自于反相放大器的输入端。因此外部的时钟信号应该接到单片机的XTAL1引脚,而XTAL2引脚悬空即可。

图3—4-3时钟电路

根据实际应用,我们选择内部时钟电路,外接频率12.000MHz的晶体振荡器,选择两个电容值为30pF的陶瓷电容。 3.5.2 STC89C52引脚介绍及管脚说明 1引脚介绍

A主电源引脚(2根)

VCC(Pin40):电源输入,接+5V电源 GND(Pin20):接地线 B外接晶振引脚(2根)

XTAL1(Pin19):片内振荡电路的输入端 XTAL2(Pin20):片内振荡电路的输出端 C控制引脚(4根)

RST/VPP(Pin9):复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。

ALE/PROG(Pin30):地址锁存允许信号 PSEN(Pin29):外部存储器读选通信号

24

EA/VPP(Pin31):程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。

D可编程输入/输出引脚(32根)

STC89C52单片机有4组8位的可编程I/O口,分别位P0、P1、P2、P3口,每个口有8位(8根引脚),共32根[11]。

PO口(Pin39~Pin32):8位双向I/O口线,名称为P0.0~P0.7 P1口(Pin1~Pin8) :8位准双向I/O口线,名称为P1.0~P1.7 P2口(Pin21~Pin28):8位准双向I/O口线,名称为P2.0~P2.7 P3口(Pin10~Pin17):8位准双向I/O口线,名称为P3.0~P3.7 2管脚说明

单片机采用40Pin封装的双列直接DIP结构,它们的引脚配置如图3—4-4所示,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。

25

图3-4-4 STC89C52

3.6 其他硬件模块 3.6.1 显示模块

系统采用了LCD1602液晶显示屏,LCD1602液晶是一款很常用,也很易用的字符液晶。可以显示2行每行16个字符,对比度可调、黄绿色背光。

与单片机的链接电路如图3-5-1:

图3-5-1 LCD1602与单片机的连接电路图

字符位都可以显示一个字符。每位之间有一个点距的间隔每行之间也有间隔起到了字符间距和行间距的作用,正因为如此所以他不能显示图形。

LCD1602的管脚定义图如图3-5-2所示

26

VSS:为电源地 VDD:接5V电源正极

V0:为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会 产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。

RS:为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。

RW:为读写信号线,高电平1时进行读操作,低电平0时进行写操作。 E:(或EN)端为使能(enable)端。 D0~D7:为8位双向数据端。

BLA~BLK:空脚或背灯电源。15脚背光正极,16脚背光负极。 1602液晶模块内部的控制器共有11条控制指令,如表3-5-3所示:

表3-5-3 控制命令表

序号 指令 1 2 3 清显示 光标返回 置输入模式 RS 0 0 0 R/W D7 D6 D5 D4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 D3 0 0 0 D2 0 0 1 D1 D0 0 1 1 * I/D S 27

4 5 6 7 8 9 10 11 显示开/关控制 光标或字符移位 置功能 置字符发生存贮器地址 置数据存贮器地址 读忙标志或地址 写数到CGRAM或DDRAM) 从CGRAM或DDRAM读数 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 1 0 1 DL 1 D C * * B * * S/C R/L N F 字符发生存贮器地址 1 显示数据存贮器地址 BF 计数器地址 要写的数据内容 读出的数据内容 1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)

指令1:清显示,指令码01H,光标复位到地址00H位置。 指令2:光标复位,光标返回到地址00H。

指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。

指令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 ;C:控制光标的开与关,高电平表示有光标,低电平表示无光标; B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。

指令5:光标或显示移位 S/C高电平时移动显示的文字,低电平时移动光标。 指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。

指令7:字符发生器RAM地址设置。 指令8:DDRAM地址设置。

指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。

指令10:写数据。 指令11:读数据。 3.6.2 键盘模块

本设计采用的键盘扫面电路采用简单的低电平扫描方式,即采用开关的一端

28

与单片机I/O口相连,另一端接地的方式,用单片机检测I/O口是否是低电平来判断键盘是否被按下。这样的方式可以方便键盘扫描部分的的编程。键盘电路如图3-5-4:

3.6.3 继电器控制模块

单片机是一个弱电器件,一般情况下它们大都工作在5V甚至更低。驱动电流在mA级以下。而要把它用于一些大功率场合,比如控制电动机,显然是不行的.所以,就要有一个环节来衔接,这个环节就是所谓的\功率驱动\。继电器驱动就是一个典型的、简单的功率驱动环节。在这里,继电器驱动含有两个意思:一是对继电器进行驱动,因为继电器本身对于单片机来说就是一个功率器件;还有就是继电器去驱动其他负载,比如继电器可以驱动中间继电器,可以直接驱动接触器,所以,继电器驱动就是单片机与其他大功率负载接口。 继电器控制电路如图3-5-5:

29

VCC D1 Diode 1N5401 K1 空调加湿及干燥器? Relay-SPDT 1 2 3 Header 3H

RELAY1 R33 10K VCC R30 1K Q1 NPN

图3-5-5 继电器控制电路图

图中的三极管起开关的作用,当单片机输出高电平时,三极管导通,继电器吸合。单片机输出低电平时,继电器断开。二极管起保护作用,防止继电器产生的感应电动势烧坏三极管或继电器。 3.7 本章小结

本章主要介绍系统的整体设计,信号采集部分分别介绍了温度传感器、湿度传感器的工作原理和它们各自与单片机的硬件连接,具体怎么连接还要结合程序来进行操作。单片机对采集到的信号按照要求进行处理,实现设计功能,液晶屏也会在同时把检测到的各种数据通过单片机处理之后显示出来,让用户能够实时了解到所需信息。

4 软件设计

系统的程序设计包括以下几个方面:

(1)键盘扫描。(2)各项参数的采集。(3)各项参数在液晶上的显示。(4)各项参数的继电器控制。 4.1 主程序流程图 主程序的流程如图4-1:

30

开始 初始化和位定义 清标志 清显示 扫描键盘 各参数采集 各参数是否要调节? Y 启动继电器控制电路,调节参数 N 各参数显示 结束

图4-1 主程序流程图

系统监控程序是系统的主程序,它是系统程序的框架,控制着单片机系统按预定操作方式运转。监控程序的主要作用是能及时的响应来自系统内部的各种服务请求,有效地管理系统自身软硬件及人机对话设备与系统中其它设备交换信息,并在系统一旦出现故障时,及时作出相应处理。

该系统控制核心是单片机STC89C52,其工作过程是:系统通电后,单片机STC89C52进入监控状态,同时完成对各扩展端口的初始化工作。在没有外部控制信息输入的情况下,系统自动采集温度、湿度传感器数据,最后产生的数据在LCD显示器上显示和自动调节。

31

4.2 DS18B20测温流程图

DS18B20测温流程图如图4-2所示:

图4-2 DS18B20测温流程图

准备测温时首先初始化DS18B20,初始化成功后,DS18B20接收单片机的命令,DS18B20在成功后启动测温,进行写数据操作,然后将温度保存起来,在测得温度后,DS18B20会将温度数据转换为十进制数的温度表示,然后将温度值显示在LCD液晶显示屏上。 4.3 DHT11流程图

DHT11流程图如图4-3所示:

32

图4-3

4.4 键盘扫描子程序流程图

键盘扫描子程序流程图如图4-5:

33

开始 扫描键盘 判断是否有键按下? Y 稍作延迟 N 是否真有按键按下? Y N S1是否按下? Y 进入设置模式 一次 二次 设置湿度 当前设置的Y 参数加一 判断S1按下的次数 三次 设置光照度 N S4是否按下? Y 进入切换显示模式 N 设置温度 一次 判断S4按下显示温度 的次数 三次 二次 显示光照度 显示湿度 S2是否按下? N S3是否按下? N Y 当前设置的参数减一 当前设置参数不变 结束

图4-5 键盘扫描子程序流程图

键盘扫描子程序一开始先扫描按键,判断是否有按键被按下,确定有按键被按下时判断被按下的是哪个按键,如果是按键S1,系统将进入设置模式,这时

34

按键S2和S3被启用,进入那个参数的设置取决于按键S1被按下的次数,S1被按下一次,进行温度值设置,S1被按下两次,进行湿度值设置,置,当按下第三次,返回正常显示,按键S2和S3被禁用。按键S2和S3作用是调节参数值,每次按下S2,当前设置的参数值就加一。每次按下S3,当前设置的参数值就减一。S4是切换显示按键,当S4被按下,判断S4被按下的次数,一次是显示温度值,两次是显示湿度值。 4.5 本章小结

本章主要介绍软件设计流程图,程序流程图是人们对解决问题的方法、思路或算法的一种描述,流程图包括系统主程序流程图,测量温度流程图,测量湿度流程图、测量光照流程图、键盘扫描流程图。

5总结

本设计综合利用单片机技术、传感器技术、数字电子技术和LCD显示等科学知识,完成了基于单片机的温度、湿度和显示装置的设计。比较系统地介绍了硬件的组成及设计方法。利用单片机C语言完成了系统软件的设计。

1. 把传感器技术应用到单片机控制系统中,实现了对环境温度和湿度的数据采集和读取。

2. 利用LCD液晶的显示技术完成了环境温度、湿度及显示电路的设计。 3. 外接了继电器模块,在超过设定温湿度上下限时自动调节。 4. 整个系统软硬件搭配合理,设计、开发、维护方便,性价比高。 由于单片机经济实用、开发简便,因而在工业控制、农业自动化、家电智能化等领域占据了广泛的市场。本文介绍的系统设计有一定的实用性,但该系统在设计过程中仍有很多漏洞。还需要在智能化方面加以改进。特别是在节省功耗,提高稳定度等方面。不过,该产品有很好的可扩性能,比如,该设备的测量结果不仅能在本地显示,而且可以利用单片机的串行口和RS-485总线通信协议将采集的数据传送到主控机,以进行进一步的存档、处理。主控机负责控制指令的发送,以控制各个从机的温度、湿采集,收集测量数据,并对测量结果(包括历史数据)进行整理、显示和存储。主控机与从机之间也能够相互联系、相互协调,从而达到系统整体统一、和谐的效果。

35

6参考文献

[1] 杨 圣编.PIC系列单片机的原理与实践.中国科学技术大学出版社,2003;

[2] 何立民.单片机应用系统设计.北京航空航天大学出版社,1990年1月; [3] 王晓君.MCS-51及兼容单片机原理与选型.电子工业出版社,2003年11月;

[4] 朱善郡.单片机接口技术与应用.清华大学出版社,2005年3月。 [5] 梅晓榕,柏桂珍,张卯瑞.自动控制元件及线路[M].北京:科学出版社,2007

[6] 张义和,王敏男,许宏昌,余长春.例说51单片机(C语言版)[M].北京:人民邮电出版社,2010,6

[7] 湿度传感器HS1101的原理与应用[EB/OL].中国电子科技信息网. [8] 胡汉才.单片机原理与接口技术[M].清华大学出版社,1996.

[9] 黄贤斌,郑筱霞.传感器原理与应用[M].北京:高等教育出版社.成都:电子科技大学出版社,2004,3(2009.1重印)

[10] 刘笃仁,韩保君.传感器原理及应用技术[M].机械工业出版社.2003,8 [11] 赵亮.液晶显示模块LCD1602应用[J].电子制作,2007(3) [12] 王勇等.凌阳单片机原理及其毕业设计精选[M].科学出版社 [13] 童诗白.模拟电路基础[M],北京:高等教育出版社,2001

[14] 马忠梅,籍顺心,张凯等.单片机的C语言应用程序设计[M].北京航天航空大学出版社,2003

[15] <美>M考夫曼,AH塞得.电子计算手册[M].国防科技出版社. [16] 王毅.单片机器件应用手册[M].北京:人民邮电出版社,1994

附录A 系统总体电路图

36

U53 GNDVCC VCCDQ 12P3.2 VCCU212345678910111213141516RSP0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7LCDENDS1820 C2 VCC19Y11830pF2S1SW-PBC110uFC41 93129301011121314151617XTAL1XTAL230pFR26909K R19576KU44RST6THR5CVOLT2TRIG1GNDTLC555P212HS1101R20 VCCVCCDISCOUT 87349.9K R241KR110K CS1RSP3.2LCDWRLCDENWRRD 20RSTEA/VPPPSENALE/PROGP3.0/RxDP3.1/TxDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P1.0/T2P1.1/T2EXP1.2/ECIP1.3/CEX0P1.4/CEX1P1.5/CEX2P1.6/CEX3P1.7/CEX4P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15VCC VSS STC89C52RC2HBP VCC403938373635343332123456782122232425262728 P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7P1.0P1.1P1.2P1.3P1.4RELAY1RELAY2RELAY3P2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.7 P1LCD1602VCCR310LCDWRR7Res Tap10KVCCP0.0R210KP0.1R410KP0.2R510KP0.3R610KP0.4R810KP0.5R1010KP0.6R1210KP0.7R1410K VCCP1.0P1.1P1.2P1.3 S2SW-PBS3SW-PBS4SW-PBS5SW-PBVCC K1Relay-SPDTD1Diode 1N5401 RELAY1 R3310KVCC R301K 空调?123Header 3HD2 Diode 1N5401 K1Relay-SPDT 干燥器?123Header 3HQ1NPN RELAY2 123R31R3410KVCC K3Relay-SPDT 1K è

Q2NPN

D3Diode 1N5401 VCCRELAY3 R32R3510K 1K 加湿器?

DGND

Q3NPNHeader 3H

VCC

37

附录B 系统源代码

#include #include #include #include

#define uchar unsigned char #define uint unsigned int #define T_cont 0.0625;

#define DataPort P0 //LCD接口 #define ReadPort P2 //AD读取 uchar code temp[]={%uchar code tempset[]={%uchar code hun[]={%uchar code hunset[]={%uchar code set[]={\

uchar tempset1,s1num,s4num,hunset1,hun1,hun2; bit T_sign; float temp1=0;

uchar t_bai,t_shi,t_ge,t_feng,t_miao,sshi,sge,

h_bai,h_shi,h_ge,hshi,hge,

sbit s1=P1^0; sbit s2=P1^1;

38

sbit s3=P1^2; sbit s4=P1^3; sbit relay1=P1^5; sbit relay2=P1^6; sbit relay3=P1^7; sbit cs1=P3^0; sbit cs2=P3^1; sbit DS=P3^2; sbit lcdrw=P3^3; sbit lcden=P3^4; sbit lcdrs=P3^5; sbit wr=P3^6; sbit rd=P3^7;

/////////////////////////////////////////////////////////////////////// void delay(uint z) //延时函数 { }

void dsreset(void) //send reset and initialization command {

uint i; //DS18B20初始化 DS=0; i=103; while(i>0)i--; DS=1; i=4; while(i>0)i--; }

39

uint x,y; for(x=z;x>0;x--)

for(y=110;y>0;y--);

bit tmpreadbit(void) //read a bit 读一位 { uint i; bit dat;

DS=0;i++; //i++ for delay 小延时一下 DS=1;i++;i++; dat=DS; i=8; while(i>0)i--; return (dat); }

uchar tmpread(void) //read a byte date 读一个字节 {

uchar i,j,dat; dat=0;

for(i=1;i<=8;i++) {

j=tmpreadbit();

dat=(j<<7)|(dat>>1); //读出的数据最低位在最前面,这样刚好//一个字节在DAT里 }

return(dat); //将一个字节数据返回 }

void tmpwritebyte(uchar dat) //write a byte to ds18b20 { //写一个字节到DS18B20里 uint i; uchar j; bit testb; for(j=1;j<=8;j++) {

testb=dat&0x01;

40

dat=dat>>1;

if(testb) //write 1 写1部分 { DS=0; i++;i++; DS=1;

i=8;while(i>0)i--; } else {

DS=0; //write 0 写0部分 i=8;while(i>0)i--; DS=1; i++;i++; } } }

void readtemperature() {

uint y;

//读温度函数

uchar T_L=0;

uchar T_H=0; uchar k; dsreset(); delay(1);

tmpwritebyte(0xcc); tmpwritebyte(0x44); dsreset(); delay(1);

41

tmpwritebyte(0xcc); tmpwritebyte(0xbe); T_L=tmpread(); T_H=tmpread(); k=T_H&0x08; if(k==0x08) else

T_sign=0; T_sign=1;

T_H=T_H&0x07;

temp1=(T_H*256+T_L)*T_cont; temp1=temp1*100; t_bai=(uint)temp1/10000; y=(uint)temp1000; t_shi=y/1000; y=(uint)y00; t_ge=y/100; y=(uint)y0; t_feng=y/10; t_miao=(uint)y; }

///////////////////////////////////////////////////////////// void hunadc0804() {

//湿度adc转换子程序与数据处理

rd = 1;

wr = 1; //读ADC ReadPort = 0xff; //P1置位 cs2=0; wr = 0;

42

wr = 1; //启动ADC rd=0; //开始读转换后数据

_nop_(); _nop_(); //稍延时,等待读完数 delay(20);

hun2= ReadPort; //读出的湿度数据赋与hun1 rd = 1;

cs2 = 1; //读数完毕 hun1=hun2/2.55;

h_bai = hun1/100; //百位数

h_shi = (hun10)/10; //十位数 h_ge = (hun1); //个位数 }

/////////////////////////////////////////////////////////// void write_com(uchar com) //lcd写命令函数 { }

void write_data(uchar date) //lcd写数据函数 {

lcdrs=0; lcdrw=0; lcden=0; P0=com; delay(10); //延时

lcden=1; //下三行表示E高脉冲到来就开始转换 delay(10); lcden=0;

lcdrs=1; lcdrs=1;

43

lcdrw=0; lcden=0; P0=date; delay(10); lcden=1; delay(10); lcden=0;

}

void init() //初始化函数

{ s1=1;

tempset1=25; hunset1=50;

lcdrw=0;

lcden=0; write_com(0x38); delay(10); write_com(0x0f); delay(10); write_com(0x06); delay(10); write_com(0x01); delay(10);

}

void print(uchar a,uchar *str) //输出字符{ write_com(a);

while(*str!='\\0') {write_data(*str++);} *str=0;

44

}

void print1(uchar a,uchar t) //输出18b20数据到1602 { }

void print2(uchar a1,uchar t1) //输出设置温度数据到1602 { }

//////////////////////////////////////////////////////////// void keyscan() //键盘扫描函数 {

write_com(a); write_data(t);

uchar sshi,sge; sshi=t1/10; sge=t1; write_com(0x80+a1); write_data(sshi+0x30); write_data(sge+0x30);

rd=0; if(s1==0) {

delay(5); if(s1==0) { s1num++; while(!s1);

if(s1num==1)

45

{

write_com(0x01); print(0x80,tempset); print1(0x8e,0x43); print1(0x80+11,0x2e); print1(0x80+12,0+0x30); print1(0x80+13,0+0x30); write_com(0x80+9); write_com(0x0f);

delay(20);

} if(s1num==2) {

write_com(0x01); print(0x80,hunset); print1(0x8b,0x30);

print1(0x8d,0x25); print1(0x8e,0x20); write_com(0x80+11); write_com(0x80+11);

}

if(s1num==4) { s1num=0; write_com(0x01);

s4num=1;

}

}

46

}

if(s1num!=0) {

if(s1num==1)

{

}

}

}

if(s2==0) {

delay(5); if(s2==0) {

while(!s2); if(s1num==1) {

tempset1++; write_com(0x80+10); print2(9,tempset1); if(tempset1==40) tempset1=15;

if(s3==0)

{

delay(5); if(s3==0) {

while(!s3);

47

if(s1num==1) { tempset1--;

write_com(0x80+11); print2(9,tempset1); if(tempset1==15) tempset1=40;

}

}

} }

if(s1num==2) { if(s2==0) { delay(5); if(s2==0) { while(!s2); if(s1num==2) {

hunset1++;

write_com(0x80+10); print2(11,hunset1); if(hunset1==90) hunset1=10;

}

}

48

}

if(s3==0) }

{ }

delay(5); if(s3==0)

{ }

while(!s3); if(s1num==2) { }

hunset1--;

write_com(0x80+11); print2(11,hunset1); if(hunset1==10) hunset1=90;

if(s4==0)

49

{

delay(5); if(s4==0) {

s4num++; while(!s4); }

}

if(s4num!=0) {

if(s4num==1) {

print(0x80,tempset);

print(0xc0,temp); print1(0x8e,0x43); print2(9,tempset1); print1(12,0x2e); print1(13,0+0x30); print1(14,0+0x30); if(T_sign==1)

print1(0xc7,0x2d);

else

print1(0xc7,0x2b);

if(t_bai!=0)

print1(0xc8,t_bai+0x30);

else

print1(0xc8,0x20); print1(0xc0+10,0x20); print1(0xc9,t_shi+0x30);

print1(0xca,t_ge+0x30);

50

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

Top