基于单片机的智能加湿器设计 - 图文

更新时间:2024-04-18 23:45:01 阅读量: 综合文库 文档下载

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

本科毕业设计(论文)

题 目 基于单片机的智能

加湿器设计

姓 名 ****** 专 业 电子科学与技术 学 号 ********* 指导教师 ****

郑州科技学院电气工程学院

二〇一五年五月

目 录

摘 要 ............................................................................................................................. I Abstract ....................................................................................................................... II 1 绪论 .......................................................................................................................... 1

1.1 选题背景和意义 ........................................................................................... 1 1.2 发展现状及前景 ........................................................................................... 2 1.3 设计任务 ....................................................................................................... 3 2 系统硬件设计 .......................................................................................................... 5

2.1 总体设计 ....................................................................................................... 5 2.2 单片机模块 ................................................................................................... 6

2.2.1 单片机介绍 ........................................................................................ 6 2.2.2 单片机的特点 .................................................................................... 7 2.2.3 单片机最小系统 ................................................................................ 9 2.3 传感器模块 ................................................................................................. 10

2.3.1 温湿度传感器选择方案 .................................................................. 10 2.3.2 DHT11数字温湿度传感器 ............................................................. 11 2.3.3 传感器电路 ...................................................................................... 14 2.4 液晶显示模块 ............................................................................................. 15

2.4.1 显示器的设计方案 .......................................................................... 15 2.4.2 1602字符型液晶显示屏 .................................................................. 15 2.4.3 1602LCD电路 .................................................................................. 18 2.5 报警电路模块 ............................................................................................. 19 2.6 按键模块 ..................................................................................................... 20

2.6.1 输入设计方案 .................................................................................. 20 2.6.2 按键电路 .......................................................................................... 20 2.7 系统电路工作原理 ..................................................................................... 21 3 系统软件设计 ........................................................................................................ 23

3.1 主程序设计 ................................................................................................. 23 3.2 温湿度检测控制模块设计 ......................................................................... 24

3.3 液晶显示模块设计 ..................................................................................... 25 4 系统调试与分析 .................................................................................................... 27

4.1 软件调试 ..................................................................................................... 27 4.2 程序调试 ..................................................................................................... 28

4.2.1 KEIL软件简介 ................................................................................. 28 4.2.2 调试过程 .......................................................................................... 29 4.3 调试分析 ..................................................................................................... 29 总 结 .......................................................................................................................... 32 致 谢 .......................................................................................................................... 34 参考文献 .................................................................................................................... 35 附录1 实物图 ........................................................................................................... 36 附录2 源程序 ........................................................................................................... 37

基于单片机的智能加湿器设计

基于单片机的智能加湿器设计

摘 要

目前在我们的日常生活中,加湿器被应用到很多领域,可是市场上大多数的加湿器都需要通过手动来控制加湿器的开启和关闭,而且不能对空气中的的温湿度进行实时且精确的监测,使得人们在使用加湿器的过程中出现一些意想不到的问题,如对空气过度加湿,过多的空气湿度就会对人体健康造成负面影响;加湿器工作时出现干烧的情况还会给我们带来安全隐患。因此在现有加湿器的基础上开发出一种具有智能控制功能的加湿器显得尤其必要。

本次设计以STC89C52单片机与温湿度传感器为系统的设计核心,运用温湿度传感器DHT11对空气中的温湿度信号进行采集,并利用它处理信号的功能,将采集到的温湿度信号转换成数字信号,再通过单片机的可编程能力对该数字信号进行分析与处理,将处理后的数据通过1602液晶显示屏显示出来,实现对空气中的相对湿度的实时显示功能,同时单片机也能够智能控制加湿器的工作状态,以达到自动控制加湿器的目的。该设计还拥有水位监测电路和报警电路,实现加湿器的防干烧功能。该系统的设计电路简单,检测数据的精度高,且具有较高的可靠性。

关键词:加湿器;STC89C52单片机;温湿度传感器DHT11;1602液晶显示屏

I

基于单片机的智能加湿器设计

INTELLIGENT HUMIDIFIER DESIGN BASED

ON SINGLE CHIP MICROCOMPUTER

Abstract

At present in our daily life, the humidifier can be used in many areas, but the majority of the market's need to manually control the humidifier humidifier is opened and closed, and can not be real-time and accurate monitoring of temperature and humidity in the air, which makes people some beat all problems occur in the process of the humidifier, such as the excessive air humidification, air humidity will cause too much negative impact on human health; in the dry situation will bring hidden trouble to our humidifier work. Therefore, based on the existing humidifier on the development of a kind of intelligent control function of the humidifier is particularly necessary.

This design uses the STC89C52 microcontroller with temperature and humidity sensors for the design of the core system, using temperature and humidity sensor DHT11 to collect temperature and humidity signal in the air, and use it in signal processing function, the temperature and humidity of the collected signal is converted into digital signal, the digital signal is single chip programmable ability analysis and processing, the processed data through 1602 LCD display, real-time display function of the relative humidity in the air, and the MCU can also work state of intelligent control of the humidifier, in order to achieve the purpose of automatic control humidifier. The design also has a water level monitoring circuit and alarm circuit, dry burning prevention function of humidifier. The design of the circuit of the system is simple, high precision of detection data, and has high reliability. Keywords: humidifier; STC89C52 MCU; temperature and humidity sensor DHT11; 1602 LCD display

II

基于单片机的智能加湿器设计

1 绪论

目前加湿器被普遍应用于很多领域,随着科学技术的发展与进步,温湿度检测技术趋于成熟,以温湿度检测技术为设计核心的加湿器也朝着小型化、低功耗和智能化方向发展[1]。单片机以较高的集成度和稳定的性能,使其在智能加湿器的设计方面具备更加显著的优势。

1.1 选题背景和意义

随着经济的快速发展,人们的生活水平也逐渐提高,伴随着的是生活环境与工作环境的质量渐渐被人们重视起来。当空气中的湿度没有达到一定的湿度值时,会给我们的日常生活和工作带来负面影响。如果我们长期生活在干燥的空气环境中,人体的舒适度值会降到很低,甚至会对我们的身体健康带来许多未知的隐患;当我们在工作的时候还会提高产品的不良率从而降低生产产品的速度,引起各式各样的不良影响,此时加湿器就显得尤为重要,我们可以通过使用加湿器来有效地增加室内空气中的湿度,湿润干燥的空气。

水由于表面张力的作用,会主动形成水滴的形状,同时会吸附空气中的灰尘。当室内空气中的粉尘和漂浮的烟雾与水分子结合后,会形成一个个小的颗粒,使空气中的灰尘沉淀下来,而且可以有效的去除室内空气中的异味,使空气变得清新。在本次的设计中,主要是运用加湿器调节空气中的湿度,以达到提高人体舒适度的目的。研究发现,湿度不仅影响人们的生活质量,在工业制造和产品质量方面同样有着重要的影响。塑料薄膜大棚、厂房和办公室等室内封闭场所,一般都需要用智能加湿器来调节空气的湿度,使室内空气的湿度达到合适的程度。

在日常生活中我们经常用舒适度来描述环境质量,但是人体舒适度与大气探测仪器检测到的各种气象要素结果有很大的不同,它不是一个精确的数据参数,仅仅是人体对外界气象环境的一种主观感受。人体舒适度指数是人为制定的一种生物气象指标,通过人体舒适度指数我们可以更加清楚的了解我们所在环境下的舒适感,且可以显示出在不同的天气条件下,人体可以感觉到的舒适度值。在众多的影响因素中,温度、相对湿度、气压、风速这些气象因素,对

1

基于单片机的智能加湿器设计

人体的舒适度产生很大的影响。最佳的温湿度范围是40%RH~60%RH[2],人体在此温湿度范围内的舒适度最佳。

经研究发现:生活在适宜湿度的空气环境下的生物体才能长期保持活力。将一些我们常用的木质家具长期放置在过于干燥的空气环境下,会对其造成一些不同程度的损坏,如乐器、家具和木质装修等很可能会出现变形、老化甚至干裂的情况。因此,我们在存放以上物品时要格外注意室内湿度,标准情况下应保持在40%-60%RH范围内,然而对于生活在河北地区的家庭来说,冬天的室内湿度平均为10%-15%RH,干燥的空气环境下,出现高压静电的情况十分普遍。家用电器及办公电器的广泛使用,使得静电出现在我们生活中的各个角落[3]。当静电情况十分严重时,对我们的生活环境也是一种污染。生活或工作在此环境下的人心情容易烦躁,有时甚至会出现头晕胸闷的情况,严重影响我们的身体健康。智能加湿器可以放出一些富含负氧离子的空气,既调节为适宜湿度的空气,这些空气均匀的布满整个空间,可以很大程度的消除静电现象,还可以过滤空气中异味,制造出更加清新、芳香的空气。因此,对空气中的湿度适当的进行调节,无论是对与我们的身心健康还是工作学习,都有着不可忽视的重要意义。

调节室内湿度的方法有很多,我们可以在室内洒水或者放置水族箱,但是这种调节空气湿度的方式是十分缓慢的,而且我们无法控制它的影响程度。如果加湿的程度过大,也会对人体造成不好的影响,如今大多数的家庭和公司都是应用加湿器来对空气加湿。

本次设计基于单片机技术,对智能加湿器的部分功能实施进一步的改动,使其可以根据用户的个人需求进行调节,而且拥有智能控制功能,其能够根据传感器检测到的实时湿度自动控制加湿器的工作状态。在本设计中,加湿器的智能控制能力得到了加强,完全可以满足用户对产品的简单要求,在产品开发方面具有十分重要的意义。

1.2 发展现状及前景

智能加湿行业在我国发展了将近20年,通过这些年空气质量概念的普及和人们对身体健康意识的提高,加湿器的功能和作用也渐渐被人们所了解,并逐渐被人们接受和青睐。可是,由于加湿器这一新兴行业在我国发展的比较晚,

2

基于单片机的智能加湿器设计

它相应的一些产品质量标准没有得到规范化,这为广大用户在选择上带来了一定的选择困难。众多厂商只跟风不跟质量的行为,导致了加湿器行业产品质量的参差不齐,使消费者的合法权益受到了侵害。

加湿器功能主要是增加室内空气的湿度,使湿度控制在相对健康的状态下。加湿器按其功能划分为三种:电热加湿器、超声波加湿器和净化加湿器。电热加湿器主要是对水进行加热使其蒸发,利用水蒸汽来加湿空气,此种加湿方式容易发生热蒸汽烫伤人的情况,已基本被淘汰。超声波加湿,主要是运用超声波的高频震荡原理,把水分子震荡、雾化为微小的雾状颗粒,然后应用风动装置把这些雾状颗粒吹送出去,实现加湿的功能。净化加湿,在空气循环系统中应用水幕洗涤的技术,可以有效的过滤空气中的尘埃,且把空气中的杂质吸附在高效过滤器上,再经过风动装置将过滤后的水分子稀释到空气中,使得空气得到净化且加湿,它是目前最新的加湿器产品。

我国的加湿器产业发展较晚,产品的人均占有率比日本、美国、韩国等国家低的多,我国民众对空气质量和加湿器、净化器产品的进一步了解,能够促进国内加湿器行业的发展,提升国民健康水平,更能提高国民的生活品质。

随着社会经济的快速发展,人民的生活水平也逐渐提高。同时,人们也更加重视生活质量和身体健康,空气加湿器也慢慢的走进了更多的家庭中,并且在干燥地区很受人们的欢迎。空气加湿器在国内仍是新兴的产品,加强对加湿器的开发和研究的力度,不但促进了我国加湿器行业的发展,而且能够提高人们的生活品质和健康水平。近年来,人们对加湿器的功能与审美设置提出了更高的要求,为了实现这些要求,加湿器的产品类型变得更加多样、材质处理更加细腻,且造型设置更加丰富多姿。

1.3 设计任务

本次设计的重点就是在现有的加湿器基础上,增加防干烧功能,提高加湿器系统的智能控制能力。该系统可以根据用户的需要,手动设置最佳相对湿度值,并且在室内空气湿度发生变化时,能够自动开启或关闭加湿器,使湿度值保持在设定的湿度范围内,达到智能加湿的目的。智能加湿器系统是通过温湿度传感器来采集空气中的温度和湿度的信号数据的,采集到的数据经过STC89C52单片机的分析和处理,在1602LCD上显示出当前湿度与设定的湿度

3

基于单片机的智能加湿器设计

值。另外再添加时钟电路、键盘电路和报警电路。该系统具备手动模式和自动模式,在手动模式里我们可以根据自己的实际需要来设定最佳湿度值;自动模式中的最佳湿度值是系统设计的初始值,这两种模式可以通过设定的按键来切换。在本次设计中加湿模块运用二极管模拟的方式,当系统检测到驱动加湿器模块的管脚出现低电平时,二极管点亮演示加湿;水位监测模块检测到低水位,既管脚电平变为低电平时,蜂鸣器发出报警信号,防止出现加湿器干烧的情况。4

基于单片机的智能加湿器设计

2 系统硬件设计

2.1 总体设计

根据设计要求确定了智能加湿器的整体设计方案,该设计方案由单片机、温度传感器、1602LCD以及按键输入等部分组成。智能加湿器需满足以下要求:

(1)系统直接由5V的直流电源提供电压; (2)用户能够自由设置系统的最佳湿度值; (3)环境湿度低于40%时系统会自动加湿; (4)检测得到的数据可以通过显示模块显示。 总体设计的智能加湿器功能原理图如图2.1所示。

温湿度显示模块温湿度传感器 按键输入模块 单片机加湿模块 图2.1 智能加湿器功能原理图

电路中设计了一个手动/自动转换键,选择自动模式,相当于按下复位键,系统恢复默认最佳相对湿度,温湿度传感器对空气中的温湿度进行检测,最后运用液晶屏将经过计算后的数据显示出来,如果检测到的湿度比最佳湿度范围低就开始加湿,超过最佳湿度范围就停止加湿。

在系统的显示模块中,STC89C52芯片的P0端的八个引脚分别与液晶显示屏的数据输入端口D1~D8相连,P2.7和P2.6口分别接到LCD的寄存器选择端和使能端,RW为读写信号选择端口,端口电平为高电平时进行读操作,低电平时进行写操作。在本次设计中只进行写操作,所以读写信号选择端口接地。RS是寄存器选择端口,当RS=‘0’时系统进行写指令操作,RS=‘1’时进行写数据操作;E为使能端,当E端电平信号出现高脉冲即上升沿时,液晶屏

5

报警模块

基于单片机的智能加湿器设计

开始读取显示信息,并在信号电平跳变到下降沿的时候执行指令[4]。温湿度传感器连接到单片机的P1.2脚,它采用的数据传输格式是单总线格式,可以单次输出高达40位的数据,此次设计只显示温度和湿度的整数部分,因此只读取整个数据的八位湿度整数部分与八位温度整数部分。

选择的具体实施方案;系统具备自动加湿和手动加湿两种模式,用户可以根据自身需要来选择,且能够手动更改相对湿度的最优值;单片机通过温湿度传感器检测空气中的温度和湿度数据,并将测得的数据送入主控模块,主控模块可以将测得的实时湿度与用户设计的最佳相对湿度进行对比,以此来决定是否需要加湿;主控模块可以根据水位的高低来判断是否需要报警,当需要报警时,主控模块不但控制报警模块发出报警信号,而且控制加湿器关闭加湿;运用液晶显示器显示出室内空气的实时温度和湿度,且将相对湿度的最优值显示出来;利用LED灯演示加湿和水位高低。

2.2 单片机模块

2.2.1 单片机介绍

本次设计的系统运用的中心控制元件是STC89C52单片机,STC89C52是深圳宏晶科技公司开发、TSMC公司生产的一种增强8051内核单片。其采用了基于Flash的在线编程技术,在对单片机编程写软件时无需采用专用编程器,可以通过PC直接对STC系列单片机进行编程,使单片机应用系统的开发变得更加简单[7]。STC系列单片机性能优秀,其编程十分方便,非常适合初学者使用,最重要的是它比较低廉。该芯片具备8 bit CPU与在线可编程Flash,应用该芯片的嵌入式控制系统变得更加高效、流畅。STC系列单片机的正常工作电压为3.3V~5.5V,如图2.2是STC89C52的实物图。

图2.2 STC89C52实物图

6

基于单片机的智能加湿器设计

STC单片机产品种类十分繁多,现有超过百种的单片机。STC单片机按照工作速度和内部配置的差异,分为许多系列的产品。根据运行速度能够分为12T/6T和1T系列产品。所谓1T是指单片机运行一个机器周期只需要一个时钟周期,运行速度大大加快。STC89、STC90和STC11/10系列属于基本配置,而STC12/15系列产品增加了PWM、A/D和SPI等接口模块。每个系列产品的差异主要是片内资源数量上的差异。在单片机选型时,应该根据控制的实际需求,选择合适的单片机,即单片内部资源要尽量满足控制系统要求,而减少外部接口电路,保证单片机应用系统的高可靠性和高性价比。我们现在使用比较的多的是STC89C51/STC89C52等。如图2.3是STC89C52的管脚分布图。

图2.3 STC89C52管脚图

单片机是一个功能很强大的芯片,在此芯片上人们把计算机的一些主要组成部件都集中起来,如中央处理器、定时/计数器和I/0接口电路等部件,同时集成在一个小小的芯片上,可以说单片机就是一个微型化的计算机。所以,想拥有一个单片机控制系统的话,我们只需要为单片机添加适当的软件及外部设备。

2.2.2 单片机的特点

(1)开发周期短,易于生产,性价比较高。

(2)芯片更加微型化,抗干扰能力很强,可靠性能良好。 (3)功能完善,接口多。

(4)低功耗、低电压。一般在5~3V的电源电压范围内单片机都可以正常工作,1~2V是其工作的最低电压,低于此电压后单片机就不再工作。

7

基于单片机的智能加湿器设计

(5)总线多样,易于扩展。单片机的外部结构采用的是三大总线结构,运用此结构能够更加方便的对应用系统功能进行扩展,使的开发应用系统变得更加方便、快捷。外部总线增加I2C和SPI串行总线,应用者可以根据自己的需求进行扩展[5]。

C52单片机的主要功能特性如表2.1所示:

表2.1 STC89C52功能特性表

主要功能特性 可应用MCS51的指令编译 32个双向I/O口 看门狗定时器 3个16位定时器/计数器 1个6向量2级中断结构 8K可编译Flash ROM 512字节RAM 内置4K BEEPROM MAX810 全双工串行口 系统的掉电或空闲模式低功耗 可以设置休眠和唤醒功能 在实际电路中用到了STC89C52的部分引脚,其主要的引脚和功能为: (1)电源管脚(2根) VCC:正极,接+5V电源。 GND:负极,接地线。 (2)外接晶振管脚(2根) XTALl:时钟电路的输入脚。 XTAL2: 时钟电路的输出脚。 (3)控制管脚(2根)

RSTNPP:复位管脚,当端口信号为‘1’时单片机会执行复位操作。 EA:程序存储器选择端口。接低电平时,ROM读操作只能在在外部程序存储器中进行;接高电平时,对ROM的读操作是从内部程序存储器开始,并可延至外部程序存储器。在该电路中,将其接负极。

(4)可编程I/O管脚(32根)

STC89C52单片机有P0、P1、P2、P3四个8位的并行输入/输出口,每个端口可以按字节或位进行输入输出,4个并行口一共有32根端口线。

P0口:P0口是一个漏极开路型双向输入/输出口,输出能力较强能驱动8个TTL门电路,经常被作为地址/数据分时复用总线使用。内部没有上拉电阻,使用时需添加外部上拉电阻。

8

基于单片机的智能加湿器设计

P1口:Pl口的输入/输出口为8位的双向输入/输出口,通常作为通用输入/输出口使用,在4个I/O口中,它的功能比较单一,只能作为输入/输出使用。电路的内部有上拉电阻,与场效应管共同组成输出驱动电路。因此,P1口作为输出口使用时,已经能向外提供推拉电流负载,无需再外接上拉电阻。

P2口:P2口是内部自带上拉电阻,功能复用口。

P3口:P3口是和P2口功能基本一样。P3口不仅可以用作通用输入/输出口,还具备第二功能,当P3口的部分口作为第二功能时,剩下的引脚可以单独作为输入/输出口使用[6]。

2.2.3 单片机最小系统

(1)时钟电路

STC89C52内部拥有一个振荡器,它是由高增益反相放大器构成的,但是要形成时钟脉冲,在拥有振荡器的同时外部还需要增加电路。引脚XTAL1连接到内部放大器的输入端,引脚XTAL2连接到放大器的输出端。时钟信号是由自激振荡器发出的。引脚XTAL1与引脚XTAL2连接到外部晶体振荡器,且与电容和晶振组成的并联谐振回路相连,构成稳定的自激振荡器。晶体振荡器的震荡频率不是固定值,它的频率范围为1.2~12MHz,常用的晶振频率是12MHz。电路中的电容值在5~30pF范围内都可以选择,电容的大小在时钟电路中起到对频率的微调作用。在本次设计中采用振荡频率为12MHz的晶体振荡器,使用22pF的电容。时钟电路如图2.4所示: C122pFX1CRYSTALC222pFU119XTAL1R410k18XTAL2C3 图2.4 时钟电路 (2)复位及复位电路 复位是单片机的初始化操作。其主要功能是把PC地址初始化为0000H,使单片机从0000H单元重新开始执行程序。复位是单片机系统的初始化操作,9 基于单片机的智能加湿器设计

单片机系统在上电启动后都需要先进行复位操作,使系统处于一个确定的初始化状态。当单片机因为各种因素导致系统死机时,可以按下复位键进行复位,使单片机系统回归到初始状态,且从初始状态开始工作[7]。如图2.5所示电路的复位电路: 1922pFXTAL1R410k18XTAL2C3910uFRSTR2220293031PSENALE 图2.5 复位电路 RST引脚的功能是控制复位信号输入。当RET管脚信号为‘1’且维持2个机器周期时,复位信号有效,单片机系统才会完成复位操作。如果选择使用的晶振频率为12MHz,想要成功完成复位的话,RET端的高电平就应该维持超过2us即两个机器周期的时间。单片机的复位方式有两种:上电复位和按键复位。上电加按键复位电路比上电复位多了一个复位开关。

本次设计采用按键复位电路,其复位电路如图2.5所示。按下复位按钮后,电流经过220欧的电阻与RET端口直接相连,复位端引脚信号变为‘1’;当复位按钮弹起后,电流从10K?电阻和10uF的电容所在的电路通过,电容恢复到充电状态,复位端发出复位正脉冲信号,该信号持续的时间与电阻与电容电路的时间常数有关。

2.3 传感器模块

2.3.1 温湿度传感器选择方案

方案一:一般情况下,我们检测温度的时候都会用热敏元器件来检测,如热电阻和热敏电阻。其中热电阻的工作原理为:热电阻的电阻值会随温度的变化出现大的波动,当温度升高时电阻的大小也会增大,并且电阻值会随着温度按照近似的线性关系而缓慢变化。热敏电阻的工作原理是热敏电阻的电阻值与温度成非线性关系,并随着温度的升高而迅速变化。一般情况下电阻值与温度呈负指数关系,温度越高电阻值下降的越快,只有少量才具有正温度系数[8]。

10

基于单片机的智能加湿器设计

有许多方法来检测湿度,其中用湿敏元器件检测空气中湿度是人们常用的方法,湿敏元件分为电容式湿度敏感元件和电阻式湿度敏感元件两种类型。我们经常使用的湿度传感器有高分子电容式和高分子电阻式两种类别。其中高分子电容式湿度传感器的工作原理为:水和高分子材料的介电常数是不一样的,它们的介电常数之和为高分子电容式湿度传感器的介电常数,电容式湿度传感器的介电常数在不同的环境下会受到很大的影响。当被测的雾气状态的水分子通过带有多个孔洞的上电极,扩散到感应湿度的薄膜表面时,薄膜上的极性官能团会吸收这些水分子,进而诱发电容式湿度传感器的介电常数发生变化,改变了湿敏电容器的容量值。高分子电阻型湿度传感器的工作原理为:通常情况下,聚合物膜上的极性基团会对水会产生吸附力。湿度低,由于吸附量很小,不会产生带电离子,其电阻值是比较高的。当空气相对湿度增加,吸附量增大,吸附水的连通性成为导电通道,正、负离子聚合物电解质主要起载体作用。此外,这些被吸附到薄膜上的水分子会解离出氢离子和质子,增强电荷导通性,减小湿度传感器的电阻。湿敏电阻和热敏电阻的在可靠性和精度方面效果不是很好,如果温湿度传感器需要高精度的检测数据的话,选用湿敏电阻和热敏电阻就不是太适合。

方案二:采用集成温湿度传感器。集成温湿度传感器最大的优点就是它检测数据的精度高,自带A/D转换功能,可以把检测到的温湿度信号转化为数字信号,并且存放到自身携带的RAM存储器中,单片机系统能够很快的从中读取到数据,将其转换成十进制就是可以得到我们需要的温湿度数值,使用起来十分快捷、便利。DHT11温湿度传感器市面上最流行的,它响应迅速、抗干扰能力强,性价比很高。因此,我选择方案二。

2.3.2 DHT11数字温湿度传感器

本系统选用DHT11数字温湿度传感器作为温湿度检测元件,DHT11由一个NTC检测温度的元器件与一个电阻式的检测湿度的元器件组成,该传感器可以与高性能的8位单片机相连,是一块可以同时检测温度和湿度的数字传感器。通过单片机和一个简单的电路,它可以检测室内的温度和湿度采集并实时比较,具有性能稳定,响应速度快,抗干扰能力强、性价比高等特点。DHT11通过一个I/O口就可以与单片机系统进行通信,传感器内部的温湿度数

11

基于单片机的智能加湿器设计

据可以一次性的传给单片机。DHT11数字温湿度传感器不需要太大的工作电流,一般情况下最大电流为0.5mA。它的工作电压和单片机的工作电压一样,都是+5V。

DHT11外形及引脚说明和描述,如图2.6所示:

图2.6 DHT11外形及引脚排列

VCC连接到正电压,电压输入范围为3.5V到5.5V;DOUT为数据I/O口也是DATA口;NC为空脚,因为没有扩张,所以引脚未启用;GND为负极。DHT11能够同时对相对温湿度进行检测。DHT11数字传感器输出的是数字信号,减少了预处理信号这一步骤,降低了单片机系统的工作量,提高了系统的使用率。输出为单总线结构,能够有效减少对单片机的I/O口的占用,节省资源并且不用再额外的增加电器元件。湿度测量范围20%—90%RH,温度测量范围0~50℃;应用范围广泛,在湿度控制、温湿度检测、消费领域的家电市场都有应用。

单片机系统与DHT11数字温湿度传感器通过DATA进行通信,DATA选择单总线的数据传输格式,通讯时间为4MS。数据被分为两部分:整数和小数。在本次设计中只用到数据的整数部分,所以小数部分的数值始终为‘0’。具体的数据传输流程如下:

数字温湿度传感器DHT11在传输数据时,可以一次性的传输高达40位的数据。数据的传输样式为:8bit湿度整数部分+8bit湿度小数部分+8bit温度整数部分+8bit温度小数部分+8bit校验和[9]。

单片机向DHT11温湿度传感器发送低电平信号(开始信号)后,DHT11开始工作,等到单片机发出高电平信号(开始信号结束)后,DHT11发送应答信号,发送40位数据,并开始收集信号,用户可以有选择的读取部分数据。

12

基于单片机的智能加湿器设计

单片机系统发出开始信号,并被DHT11数字温湿度传感器接收到后,会激活传感器对温度和湿度信号进行采集,DHT11温湿度传感器只有在接收到单片机系统发出的开始信号后,才可以采集空气中的温湿度信号。采集信号结束后,传感器会主动把运行模式转换到低速运行模式。通信流程如图2.7所示:

图2.7 DHT11的通讯过程

在单片机系统中,总线电平是‘1’时为空闲状态,单片机把总线电平拉低等待DHT11响应时,总线被拉低的持续时间必须大于18毫秒,在本次设计的程序中拉低20MS,保证DHT11能够检测到起始信号。单片机系统拉高电平后,需要维持20us到40us的时间对系统进行延时,在本次的设计程序中延时的时间为40us。发送数据过程如图2.8所示:

图2.8数据传输

当总线的状态为低电平时,表明DHT11温湿度传感器发出应答信号,应答信号发出后,温湿度传感器把总线的电平拉高等待80us,做好传输数据的准备。每次开始传输1bit数据都会拉低电平50us,数据传输过程中,数字‘0’和‘1’用高电平的持续时长区分。数字‘0’信号的表示方法如图2.9所示。传输数据结束后,温湿度传感器把总线的电平变为低电平,且持续50us,最后上拉电阻把总线电平从低电平变为高电平,使温湿度传感器转换到空闲状态。

13

基于单片机的智能加湿器设计

图2.9 数字‘0’信号传输方法

信号‘0’的传输方式是:数据传输开始阶段结束后,总线电平被拉高,如果该高电平持续的时间为26us到28us,此阶段传输的数据就是信号‘0’。

数字‘1’的信号表示方法如图2.10所示:

图2.10 数字‘1’信号表示方法

信号‘1’传输方式是:数据传输开始阶段结束后,总线电平被拉高,如果该高电平持续的时间为116us到118us,此阶段传输的数据就是信号‘1’。

2.3.3 传感器电路

DHT11温湿度传感器能够在3V到5.5V的电压下正常工作,结合一些辅助电路可以检测信号,并且能够对检测到的数据进行初步整理。上电后,DHT11传感器为了通过不稳定的状态,需要等待一秒钟,在这段时间不发送任何指令。DHT11与单片机间的通信和同步是通过数据端口来实现,数据端口与计算机连接到P1.2端口,使用4.7K上拉电阻,防止干扰,提高稳定性。因为检测湿度时会受到环境温度的影响,所以我们应该在一个相对稳定的环境下进行湿度检

14

基于单片机的智能加湿器设计

测,在测量湿度的过程中,湿度传感器应在同一温度中。因此,在安装DHT11温湿度传感器时,我们应该注意把温湿度传感器放置到离发热快的元件较远的地方,同时能够保证传感器可以正常的工作。传感器电路如图2.11所示。在本次仿真中,由于仿真软件里没有DHT11温湿度传感器的仿真图,所以在图2.11中的DHT11元器件,只是本人在仿真软件里找的一个与DHT11有着相似管脚的元器件。在实际焊接时,仅仅按照这个仿真图里的管脚连接方式进行连接,元器件还是DHT11传感器,与此没有太大的关系。

图2.11 DHT11传感器连接电路

2.4 液晶显示模块

2.4.1 显示器的设计方案

方案一:采用数码管显示。在该设计中我们需要显示很多的信息,数码管数量少的话就很难达到要求,这样的话会加大我们在焊接和排版时会增加很大的负担。

方案二:采用LCD显示屏。我们常用的是1602LCD,它可以同时输出32个字符,比一个简单的数码管显示出的内容要多得多。该方案不仅满足系统功能要求,降低系统复杂度。综合考虑,我决定采用方案二。

2.4.2 1602字符型液晶显示屏

1602液晶显示屏按照其结构可以分为两种类型:有背光与没有背光。两种类型的显示屏在系统应用上没有多大的区别,只不过有背光的显示屏比没有背光的厚一些。总体来说,两者可以通用的。两者尺寸差别如下图2.12所示:

15

基于单片机的智能加湿器设计

图2.12 1602LCD尺寸图

本系统选用的显示屏是1602LCD,它是一种字符型的液晶显示屏,能够以点阵的方式显示符号、数字和字母[10]。带背光的1602液晶显示屏拥有16个引脚,比不带背光的多了一条背光电源线和一条地线,但是它们的控制原理都是一样的。1602型液晶屏有d0-d7共8位的数据总线接口与三个控制端口,能够显示出32个字符。其实物如图2.13所示:

图2.13 1602LCD实物图

1602LCD主要技术参数: 显示容量:16x2个字符 芯片工作电压:4.5-5.5V 运行电流:2.0mA 字符大小:2.95x4.35mm

1602液晶显示屏的引脚如图2.14所示:

16

基于单片机的智能加湿器设计

RV1100K1230145036172839410511612713814LCD1VSSVDDVEERSRWED0D1D2D3D4D5D6D7CK-8LM016L 图2.14 1602字符型液晶屏引脚

1602液晶显示屏有两种不同的接口,一种为14脚的显示屏它没有背光,另一种是带有背光的16脚显示屏,但它们的主要引脚功能都是一样的,下面就以16脚的显示屏为例介绍一下各引脚功能。引脚功能如表2.2所示:

表2.2 1602液晶引脚功能表

编号 符号 1 2 3 4 5 6 7 8 VSS VDD VL RS R/W E D0 D1 引脚说明 电源负极 电源正极 显示对比度调节 指令/数据选择 读写信号选择 使能信号 数据 数据 编号 符号 9 10 11 12 13 14 15 16 D2 D3 D4 D5 D6 D7 引脚说明 数据 数据 数据 数据 数据 数据 BLA 背光源的正极 BLK 背光源的负极 在本次设计中,我们用到的1602显示屏是16脚带背光的,下面是用到的各个引脚在单片机系统中每个引脚的连接方式:

第1脚:VSS接地。 第2脚:VDD接+5V电源。

第3脚:VL是LCD对比度的调节引脚,如果显示器对比度太高的话,我们就很难看清楚显示出的内容,所以我们在应用该显示器的时候,可以连接上一个10K大小的可调电阻,用户能够根据实际情况进行调节。

17

基于单片机的智能加湿器设计

第4脚:RS是寄存器选择控制端口,当RS=‘0’时应用指令寄存器,当RS=‘1’时应用数据寄存器。

第5脚:R/W为读写信号端口,当该端口的状态为低电平时进行写操作,端口状态为高电平时进行读操作。当RS和R/W的端口信号为“00”时,能够写入指令;当RS和R/W的端口信号为“01”时可以进行读忙信号;当RS和R/W的端口信号为“10”时可以写入数据。

第6脚:E端口是使能信号引脚,当该引脚的电平由‘1’变为‘0’时,显示器开始执行命令。

第7到14脚:d0至d7口是8位的输入/输出数据传输端口。 第15脚:背光源的正极。 第16脚:背光源的负极。

2.4.3 1602LCD电路

本次设计的显示部分采用1602液晶显示屏,可以输出显示预设的最佳湿度值和室内的温度与湿度。RS脚和E脚分别和单片机的P2.7和P2.6相连,D0-D7口和单片机的P0口相连,P0口作为一列8位漏极开路型双向I/O口,常用作地址/数据总线复用口,P0口内部没有上拉电阻,使用时需添加外部上拉电阻。当用flash进行编译的时候时,P0口接收到的数据为指令字符,当用flash校准验证的时候,P0口向传感器发送字节指令。因为P0口驱动能力较弱,所以在P0口我们应该再焊接一个上拉电阻。在本次设计中,上拉电阻用的是排阻,1602LCD的电路如图2.15所示: LCD2LM016LVSSVDDVEERSRWE01450361P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12391382373364355346337328210122230324252132435465768798RESPACK-8123RV1100K123456787891011121314D0D1D2D3D4D5D6D7RP1 图2.15 1602LCD电路 18 基于单片机的智能加湿器设计

2.5 报警电路模块

本次设计的蜂鸣报警电路采用的是有源蜂鸣器,其驱动发声简单通电就能持续发声。主要功能就是通过水位按键将低水位信号送给单片机,单片机检测到该信号后UI进行报警,起到防干烧的目的。蜂鸣器发声原理为:通过电磁线圈的电流会产生磁场,磁场驱动振膜发声,所以轰鸣器需要一定的电流才能发出声音。输出电流小的单片机I/O口,TTL输出水平基本不能驱动蜂鸣器,所以我们需要设计放大器电路,产生一个可以驱动轰鸣器工作的电流,既添加一个PNP型三极管来放大驱动蜂鸣器。在本次设计中轰鸣器电路由蜂鸣器、晶体管和220欧的电阻构成。晶体管放大系统电路中的电流,该电流能够驱动蜂鸣器,限流电阻是用来防止和控制放大电流的[11]。轰鸣器电路连接到STC89C52的P3.7脚,当检测的水位信号为低水位时,单片机系统对管脚P3.7发送开始信号,使得晶体管转换到通路状态,进而促使蜂鸣器发出报警信号;当检测到的水位是正常的,P3.7置高电‘l’三极管截止。报警电路模块如图2.16所示:

P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD252627281011121314151617D1LED-GREENR3220R1220Q1TIP34BUZ1BUZZER 图2.16 轰鸣器报警电路

19

基于单片机的智能加湿器设计

2.6 按键模块

2.6.1 输入设计方案

方案一:选用8155芯片对输入/输出口进行扩展。这个方案好的地方为:该芯片支持编程,使用起来更加多样化;具备RAM;内部拥有运算功能。它能够供应较多的输入/输出口,但实际使用起来有些复杂。

方案二:直接在I/O端口上连接上按钮开关。它的优点是:电路十分简单,直接与单片机相连。

在该系统中我对整体电路进行了精简与优化,所以余下的I/O端口还有足够多的数量。本次设计中使用了六个按键,运用单片机的P1口就足够用了,不需要再对I/O口进行扩展,故选择方案二。

2.6.2 按键电路

键盘分为独立按键和矩阵按键。因为系统中使用的按键不是很多,所以选择使用独立按键的方式连接电路。按键开关的电平状态为:当按键被按下时,发出的电平信号为低电平;当按键开关弹起时,发出的电平信号为高电平;这些电平信号都是通过按开关键和单片机相连引脚发出,被单片机系统接收并处理。这些按键的主要功能为:

(1)总开关:主要用来控制硬件系统的开关。

(2)水位报警键K1:向单片机系统发送低水位信号,用来模拟低水位报警。 (3)状态选择键KS:自动/手动模式选择键。按键按下后,系统输入模式就会转变为手动模式,用户能够依据自己的要求手动输入最佳湿度值;当再次按下按键使按键弹起时,系统就会转变到自动运行模式,系统会按照初始的最佳湿度40%RH运行加湿器。

(4)设置键K2:在手动模式状态下,用户可以按下K2键对最佳湿度值进行设置。该系统拥有加键K3和减键K4,每按下K3或K4,最佳湿度值就会增加或减少1,当用户设置好湿度值想退出设置状态时,可以再次按下K2键,退出后系统会对用户设置的数字进行判断,决定是否需要加湿。键盘模块的电路图如图2.17:

20

基于单片机的智能加湿器设计

图2.17 按键电路

2.7 系统电路工作原理

本次电路的设计是分模块进行的,整个系统被分为:温湿度检测模块、液晶显示模块、报警模块、加湿模块和按键输入模块。整体设计的电路图如图2.18所示:

图2.18 系统电路原理图

工作原理:该设计结合了硬件和软件的功能,在设计中使用软件的方式来控制硬件完成自动智能化的工作。

21

基于单片机的智能加湿器设计

单片机通过LCD把温湿度传感器检测到的温度和湿度信号显示出来,并输出控制信号或加湿报警信号,从而实现智能加湿、防干烧的效果。

22

基于单片机的智能加湿器设计

3 系统软件设计

3.1 主程序设计

该系统的程序设计分为几个模块:温湿度检测模块、控制模块、按键输入模块、显示模块和水位检测模块。主程序流程图如图3.1所示:

开始 初始化 键盘扫描 延时 温湿度检测 温湿度显示 数据初始化 低 轰鸣器报警 判断水位高低 停止/暂停加湿 高 是 判断是否超过最佳湿度 否 启动加湿 结束 图3.1 主程序设计流程图

23

基于单片机的智能加湿器设计

单片机系统开始运行后,会检测水位的电平变化,并且能够根据这些电平信号自动判断是否需要启动蜂鸣器报警;转变手动/自动模式后,传感器读取温湿度将数据送至单片机,单片机对湿度数据进行比对,判断是否需要加湿。在本次设计中我只是用湿度的大小来决定加湿器是否需要工作,不再把温度考虑进去,所以在本次设计中,只显示当前环境下的温度而不对温度数据进行比对。加湿过程中,如果系统检测到低水位电平信号,蜂鸣就会发出报警信号,并且立即停止加湿。

3.2 温湿度检测控制模块设计

依据温湿度传感器的通讯协议,单片机系统经过输入/输出口积极地发出激励信号,继而使温湿度传感器掌管数据线,最后单片机系统使用while循环语句对输入/输出口的电平进行实时的检测,从而得到准确地传输数据。图3.2所示为温湿度检测模块的软件设计流程图。

开始 80us低电平是否结束 延时20ms 是 P1.2输出高电平 延时40ms 80us高电平是否结束 否 否 P1.2输出低电平 否 P1.2是否为低电平 数据保存到数组 是 结束 图3.2 温湿度检测模块的软件流程图

接收数据 24

基于单片机的智能加湿器设计

使用温湿度传感器采集空气中的温湿度信号:系统开始运行后,单片机系统拉低P1.2脚的电平,经过20ms之后把P1.2脚的电平拉高40ms,等待结束后,系统检测管脚P1.2的电平是否为‘0’,如果不是‘0’就循环检测该信号;如果信号为‘0’,就执行判断重复80us低电平是否结束;如果80us低电平判断结束,就再次运行判别持续80us高电平是否结束,若是判断没有结束就循环执行该指令;如果指令执行完毕,单片机系统就开始接收数据,并将接收到的数据信息按照十进制的方式存放到特定的数组中,信号采集完毕后,系统对采集到的数据进行保存且保持信号采集指令持续执行。

3.3 液晶显示模块设计

软件流程图如图3.3所示:

开始 液晶1602初始化 延时 写LCD指令 写显示行列地址 取显示首地址 写数据 读数据并显示 返回 图3.3 液晶显示程序流程图

1602液晶显示屏输出数据的流程为:首先运行显示器的初始化操作,初始化之后执行延时程序,等待信号的采集,采集完成后先写入一些指令和显示字

25

基于单片机的智能加湿器设计

图4.5 按下减键后仿真图

在手动模式里,我们可以根据自己的需要设置最佳湿度值。按下加减键我们可以对初始值进行加减操作,设置不一样的最佳值,在系统里会有不一样的显示结果。

在实物调试阶段。第一次上电调试时,发现轰鸣器的声音很小,检查电路后发现没有问题,后来用万用表检测该部分电路时,发现电流比预期值小很多,所以我试着换了一个小些的电阻,再次上电后,轰鸣器声音就很大了。系统运行调试时,发现报警按键有些问题,有时候它会没有反应,只有按住整个按钮的边缘部分往下按才会作出正常反应。

31

基于单片机的智能加湿器设计

总 结

在选择毕业设计题目的时候,我纠结了很久,最后还是想做关于加湿器的课题,我觉得我能够把它做好。在设计初期,我查找了很多有关于智能加湿器方面的资料,了解了它的一些发展现状和研究情况。大多数的温湿度检测系统都是在单片机的基础上添加个温湿度传感器,能够检测空气中的温湿度信号,当湿度超出设定的湿度范围后,单片机系统就会报警,再外接一些辅助电路如按键、LCD或LED等。但是在仔细研究了自己的课题后,发现智能加湿器和普通的湿度检测系统有着很大的不同。智能加湿器不仅需要检测温湿度,还要控制加湿,随时对湿度进行调节;智能加湿系统需要在水位低时发出报警信号,解决加湿器干烧问题。因此,该系统的设计为:增加一个模式选择键,用户可以手动设置最佳湿度;系统检测湿度比最佳湿度低就自动加湿,比最佳湿度高就不加湿或停止加湿;在任何状态下,只要水位模块输入低信号,就会报警并停止加湿。

在焊接电路的时候,遇到了以前没有注意到的问题。比如说排版的时候没有注意,一些模块的管脚连接没有完全按照仿真的样子来。在连接1602LCD的RS管脚和E管脚时,发现STC89C52芯片上的P2.0和P2.2脚在整个芯片的右下角,如果一定要把它们连到一起的话,会很容易出现搭线的现象,这不仅影响焊接电路的整体美观度,还会影响到其它模块的焊接工作,所以我把RS和E脚分别与P2.7和P2.6脚相连,把发光二极管与P2.0脚相连,这使的焊接工作变得更加方便简单,当然最后肯定需要把程序里的管脚定义也改过来。

在本次设计中存在着很多的不足。系统设计时是按照模拟的方式进行设计的,并没有向实际应用方面延伸,使得该系统只具备观赏和演示功能,无法真正应用到生活中,并且该系统还可以改进和完善一些功能:我们可以考虑把轰鸣器报警替换成语音报警,提升系统水位报警功能,使得智能加湿器更加具有实用性。在水位检测模块中,我们用的是按键模拟信号的方式,如果说想要系统更加完善的话,我们可以在水位监测模块中添加水位检测线和继电器,用水位监测线进行水位的检测,检测到低水位后向继电器发送工作信号,进而导通报警电路,发出报警信号。

32

基于单片机的智能加湿器设计

经过这次毕业设计,加深了自己对单片机的理解。由于这次是自己独立完成的,所以在整个项目的编程方面有了更深的认知,并且具备了独立编程和系统调试的能力。此外,在设计智能加湿器的过程中我体会到了智能控制的神奇,这使我受到了很大的启发,智能化控制将会在我们今后的生活中扮演更加重要的作用,我们一定要提前做好走向智能化时代的准备。

33

基于单片机的智能加湿器设计

致 谢

经过三个月来的不懈努力,终于要完成毕业设计论文了,舒一口气的同时,我发现四年的大学生涯也将就此结束。我想向在这四年中教授我的所有老师表达我的谢意和尊敬之情,是你们的辛勤教授使得我在毕业设计的过程中,能够更加轻松地完成设计任务,向学校上交一个满意的成果,同时,我也要向学校和曾经给予我帮助与支持的老师、同学们表示衷心的感谢。

在这里我首先要感谢我的导师**老师。在设计课题确定的初期,我对智能加湿器这方面的了解十分的少,面多课题总是感觉无从下手,使得设计工作完全无法展开,李老师了解到我的情况后,发下自己手头繁忙的工作主动和我交流、沟通。他向我讲述了他自己对我的设计题目的看法,并且提出了他的一些建议,最后还向我推荐了一些加湿器方面的书籍和资料,使得我的设计进展速度一下子提高了很多,事后证明李老师当时的那些建议是多么的宝贵。在硬件设计方案选择的时候,我犹豫了很久,因为我无法确定自己选择的方案是否可以实现出来,这个时候李老师给予了我很大的支持,他先是肯定了我的选择方案,给了我很大的信心,让我能够以最大的决心去完成设计。最后,他看我对加湿器实在比较陌生,就主动提出把自己家的加湿器拿来,让我拆开看看加湿器是如何工作的。虽然到最后我还是没有拆开他家里的加湿器,可是,李老师对我的这种强力支持就是对我最大的鼓励。

在撰写毕业论文的过程中遇到了许许多多问题,都是那些可爱又可敬的老师、同学和朋友们给了我无言的帮助,在这里我要向你们表达最诚挚的谢意,感谢你们在这四年里和我一路并肩走过,让我度过了我温暖而快乐的大学生活,谢谢你们!

最后,我要感谢养育和支持我的父母,感谢他们二十几年来无私无悔的支持和爱抚。

34

基于单片机的智能加湿器设计

参考文献

[1] 吴沛等.一种基于ZigBee的家具环境质量评测系统的设计[J].硅谷,2014. [2] 周向红.MCS-51系列单片机应用于实践教程[M].北京航空航天大学出版社,2008. [3] 艾运阶,黎建华.MCS-51单片机项目教程[M].北京理工大学出版社,2012,(6). [4] 杜深慧.温湿度检测装置的设计与实现[D].保定:华北电力大学,2004. [5] 马全利.单片机原理及接口技术[M].北京:高等教育出版社,2004.1.22-34. [6] 韩广兴.电子元器件与实用电路基础[M].北京:电子工业出版社,2005. [7] 周航慈.单片机应用程序设计技术[M].北京航空航天大学出版社,2002.

[8] S.A.El_Agou. M.Abugderah. Experimental analysis of humidification process by air passing through seawater[J]. Energy Conversion andManagement,2008,49.

[9] 祝文静.基于GPRS无线通讯的便携式气象仪的设计与实现.[D].安徽理工大学,2013. [10] lily. Structure and function of the MCS-51 series [M].MCS book,2010,(1). [11] 徐维样,刘旭敏.单片微型机原理及应用[M].大连理工大学出版社,1997. [12] 吴国经等.单片机应用技术[M].北京:中国电力出版社,2004.1.55-57. [13] 谭浩强. c 程序设计[M].北京:清华大学出版社,2010.

[14] 杨亚琴.单片机综合实验系统的设计与应用[D].南昌大学,2009.

[15] K. Arshak, K. Twomey, D.Heffernan .Development of a microcontroller-based humidity sensing system[Z].MCB UP Ltd,2002.

[16] 任文霞.电子电路仿真技术[M].北京:中国电力出版社,2008.

35

基于单片机的智能加湿器设计

附录1 实物图

36

基于单片机的智能加湿器设计

附录2 源程序

/**软件程序**/ #include #include #define uint unsigned int #define uchar unsigned char

#define yh 0x80 //LCD第一行的初始位置 #define er 0xc0 //LCD第二行初始位置 sbit DHT=P1^2; //

sbit set_key=P1^4; //“设置”键 K2 sbit add_key=P1^5; //“加”键 K3 sbit cut_key=P1^6; // “减”键 K4 sbit mode_key=P1^7; // K0 sbit key=P1^3; // K1 sbit speak=P3^7; sbit led=P2^0; // led sbit rs=P2^7; sbit en=P2^6; uchar shiZ,shiY,check; uchar temp,a,b;

uchar code tab1[]={\ %\ uchar code tab2[]={\ %\ uchar set_deta=60; uchar set_deta1=40; uchar XX[2]; uchar tate[4]; uchar read_data[5]; uchar unsigned flog4; void delay_10us()

37

基于单片机的智能加湿器设计

{ uchar i; i--;i--;i--; i--;i--;i--; }

void delay_1ms(uint xms) { uint x,y;

for(x=xms;x>0;x--) for(y=124;y>0;y--);

}

void delay_400ms(void) { uchar Temp_A = 5; uint Temp_B; while(Temp_A--) { Temp_B=7269;

while(Temp_B--);

}

}

//****1602LCD写入指令程序****// void write_1602com(uchar com) { rs=0;

P0=com;//送入数据 delay_1ms(1); en=1; delay_1ms(1); en=0;

}

//***1602LCD写入数据程序****// void write_1602dat(uchar dat) { rs=1;

P0=dat;//送入数据

38

基于单片机的智能加湿器设计

}

delay_1ms(1); en=1; delay_1ms(1); en=0;

/***************设置显示位置**************************/ void LCD_set_xy( uchar x, uchar y ) {

unsigned char address; if (y == 1)

address = 0x80 + x; else

address =0xc0+ x; write_1602com(address); }

/****************显示一个字符**********************/ void LCD_dsp_char( uchar x,uchar y,uchar dat) {

LCD_set_xy( x, y ); write_1602dat(dat); }

/***************显示字符串函数***************/ void LCD_dsp_string(uchar X,uchar Y,uchar *s) {

LCD_set_xy( X, Y );

while (*s)

{

write_1602dat(*s); s ++; }

39

基于单片机的智能加湿器设计

}

//***液晶初始化函数****// void lcd_init() { }

/*****************温湿度传感器DHT11 读一个字节函数******************/ uchar read_byte() {

uchar value,i;

for(i=0;i<8;i++) //一个字节有八位 所以用for循环 {

value=value<<1; //从字节高位开始读 需要移位 while(DHT==0); delay_10us(); delay_10us(); delay_10us();

if(DHT) //判断读到是“1”还是“0”

{ value=value|0x01; //如果是“1” value的值就要加一

while(DHT!=0) { DHT=1; }

40

write_1602com(0x38); write_1602com(0x0c); write_1602com(0x06); write_1602com(0x01); write_1602com(er+0); for(a=0;a<7;a++) {

write_1602dat(tab2[a]);

}

write_1602com(yh+0); for(a=0;a<5;a++)

{ write_1602dat(tab1[a]); }

基于单片机的智能加湿器设计

}

}

}

return value; //返回读到的这一字节数据

/*****************温湿度传感器DHT11 读数据函数******************/ /**一个完整的数据一共是五个字节******************/ void read_value() { uchar i; }

/**********温湿度数据处理******************/ void pro_value() {

read_value();

temp=read_data[0]+read_data[1]+read_data[2]+read_data[3]; if(read_data[4]==temp) { shiZ=read_data[0];

41

DHT=0; delay_1ms(20); DHT=1; delay_10us(); delay_10us(); delay_10us(); delay_10us(); if(DHT==0) { }

while(DHT!=1); DHT=1; while(DHT==1); for(i=0;i<5;i++) { }

read_data[i]=read_byte();

基于单片机的智能加湿器设计

}

shiY=read_data[2];

}

tate[0]=shiZ/10; tate[1]=shiZ; tate[2]=shiY/10; tate[3]=shiY; write_1602com(yh+2); for(a=0;a<2;a++)

{ write_1602dat(tate[a]+0x30); }

write_1602com(yh+10); for(b=2;b<4;b++)

{ write_1602dat(tate[b]+0x30); }

void pros_data() { }

void display1() //设置显示 { pros_data(); }

void display2() //设置显示 {

write_1602com(er+4);

write_1602dat(set_deta1/10+0x30); write_1602com(er+5);

42

XX[0]=set_deta/10; XX[1]=set_deta; write_1602com(er+4); for(a=0;a<2;a++)

{ write_1602dat(XX[a]+0x30); }

基于单片机的智能加湿器设计

}

write_1602dat(set_deta1+0x30);

void key_caa() {

if(set_key==0)

{

delay_1ms(5); if(set_key==0)

flog4=!flog4;

{ }

while(set_key==0);

}

if(flog4==1) {

if(add_key==0) { delay_1ms(5);

if(add_key==0)

{ set_deta=set_deta+1;

while(add_key==0); if(set_deta>99) { set_deta=99; }

}

}

if(cut_key==0)

{ delay_1ms(5);

if(cut_key==0)

{ set_deta=set_deta-1; while(cut_key==0); if(set_deta<=0) { set_deta=0; }

}

43

基于单片机的智能加湿器设计

} display1(); } }

void baojing() {

if(key==0) {

delay_1ms(5); if(key==0) { }

speak=0; led=0; while(key==0);

}

}

else

{ speak=1; }

if(shiZ

{ led=0; }

/**********主函数******************/ void main() {

delay_400ms(void); lcd_init(); display1();

LCD_dsp_string(8,1,\

44

基于单片机的智能加湿器设计

LCD_dsp_char(12,1,0xdf); LCD_dsp_char(13,1,0x43);

delay_1ms(1);

mode_key=1; while(1) { if(mode_key==0)

{ display2(); pro_value();

baojing();

} else { key_caa(); if(flog4==0)

{ display1(); pro_value(); baojing(); }

}

}

}

45

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

Top