基于单片机的智能加湿器设计
摘要
加湿器在日常生活中得到了广泛的应用,但是现有的加湿器都需要手工控制开启和关闭,并且不能对室内空气进行温湿度的监测,人们在使用过程中存在过度加湿和干烧的问题,不仅给室内空气舒适度造成负面影响并且还存在安全隐患。因此开发设计一种价格低廉、功耗低、具有自动控制功能的加湿器显得尤为必要。
本次设计为基于单片机的智能加湿器系统,以STC89C52和温湿度传感器DHT11为设计核心,利用湿度传感器将温湿度信号进行采集并转换成数字信号,利用单片机进行数据分析和处理,实现智能开启和关闭加湿功能,用LED灯的亮灭模拟控制以达到对湿度的调节。外接辅助电路实现加湿器的防干烧以及室内相对湿度的实时显示功能。系统电路简单、读取方便、检测精度高,具有较高的可靠性和实用价值。
关键词加湿器;报警;STC89C52;DHT11
Intelligenthumidifierdesignbasedonsinglechipmicrocomputer
ABSTRACT
Humidifiershasbeenwidelyusedindailylife,buttheexistinghumidifiersneedtomanuallycontroltheopeningandclosing,andcannotmonitortheindoorairtemperatureandhumidity,itisthepresenceofexcessivehumidityanddryissueinthecourseofnotonlyhaveanegativeimpactontheindooraircomfortandalsoasecurityrisk.Therefore,thedevelopmentofthedesignofalowcost,lowpowerconsumption,humidifierwithautomaticcontrolfunctionisparticularlynecessary.
Thedesignofmicrocontroller-basedintelligenttemperatureandhumiditydetectionsystem,thedesignisontwoimportantfactorsinintelligentdetection,theSTC89C52andhumiditysensorsDHTIIasthecore.UsethehumiditysensortoacquistthetemperatureandhumidityandtranslateintodigitalsignalandthenusetheSCMfordataanalysisandprocessingtoimplementationtheintelligentopenandclose,withlighttheLEDlightstoanalogcontroltoadjustthehumidity.Withexternalauxiliarycircuitimplementationtopreventhumidifierfromthedryandrealizetheindoorrelativehumidityreal-timedisplayfunction.Thesystemhastheadvantagesofsimplecircuit,easyreading,highdetectionprecision,andhighreliabilityandpracticalvalue.
KeywordsHumidifier,alarm,STC89C52,DHT11
1绪论
加湿器的应用在是很多行业中都可以见到,随着科技的进步,国内外在温湿度检测领域的技术越来越成熟,温湿度的检测也朝着智能化、小型化和低功耗方向发展。由于单片机具有集成度高、性能稳定且操作简便等优点,以单片机为基础的智能加湿器在各个方面都具有优越性。
1.1选题背景和意义
随着经济、科学技术的发展,人们越来越注重生活品质。每当进入寒冷干燥的冬季,尤其是我国北方的大部分地区,使用暖气或空调都会导致皮肤干燥,容易引发感冒等症状。同样在夏季,由于大范围的使用空调,也会导致类似的症状,因此需要加湿器来有效地增加室内湿度,滋润干燥的空气,提高人体的舒适度。
人体舒适度是指人体对外界气象环境的感受,不同于大气探测仪器检测收集到的各种气象要素结果。人体舒适度指数测试是为了更加清晰的显示在不同的气象环境下,人体能够感受到的舒适度。在诸多的要素中,以气温、气压、风速、相对湿度这四个气象要素,对人体的舒适度影响最大。相对湿度的不同会对处于此环境中的人产生重要影响,通常人体能感受到的最佳温湿度范围是40%RH~60%RH。
相对湿度也是影响空气质量的重要因素,室内空气中的水分子可以和飘浮的烟雾、粉尘结合使其沉淀,能够有效地去除霉味、油漆味、烟味等异味,使空气变得清新。本次设计的加湿器就是通过调节空气相对湿度来改善人体舒适度。研究发现,湿度不仅影响人们的生活质量,对工业生产中的产品质量也有着重要影响。如实验室、厂房、仓库、塑料薄膜大棚等需要调节温湿度的场合,都会用到智能加湿器,使环境的湿度达到适宜的范围。
1.2智能加湿器的发展现状及前景
目前加湿器在日常生活中已得到了广泛的应用,但是现有的加湿器仍然需要手动控制来操作开启和关闭,它只提供相对简单的雾量调节,功能比较单一,并且不能对室内温湿度进行检测,在使用过程中容易过度加湿和干烧,不仅不能保证室内空气的质量还会造成负面影响,存在安全隐患。因此开发设计一种以由用户根据实际情况和需求进行灵活设置,实用性高、价格低廉、安全性高的加湿器可为家庭及工业提供便利有效的湿度监测和控制,显得更为重要。
1.3设计任务
本次设计的重点就是在现有的加湿器基础上,增加防干烧和智能控制功能,设计出一个以STC89C52单片机为核心的智能温湿度控制系统。该系统可以在一定的范围内设置最佳相对湿度值,并且能在环境湿度变化时自动调整湿度,以保持在设定的湿度下基本不变。温湿度信号通过温湿度传感器进行信号的采集并且转换成数字信号,再利用STC89C52单片机进行数据分析和处理,并在1602LCD上显示出当前湿度和设定的湿度值。外加时钟电路、键盘电路和报警电路。除了可以用键盘切换手动/自动模式,设置最佳相对湿度值外,还可以通过按键输入低电平,驱动发光二极管发光,演示加湿;驱动蜂鸣器报警,演示在水位低时的防干烧功能。
电路中设计了一个手动/自动转换键,选择自动后,相当于按下复位键,系统恢复默认最佳相对湿度,DHT11开始进行对温湿度进行测量和计算,最后通过液晶屏显示出所测相对湿度,如果低于最佳相对湿度就加湿,高于最佳相对湿度停止加湿。
软件设计部分对最佳相对湿度值进行了设定,当测量的湿度超过设定的值肘,停止加湿;在加湿前先检测水位信号,一旦输入水位低信号,通过报警电路蜂鸣报警并且停止加湿,达到防干烧的目的。
显示部分单片机的PO口接到LCD的数据输入口D1到D8,P2.7,P2.6口分别接到LCD的RS口和E口,RW接地表示数据写入。本次设计只设计对LCD的数据写入,RS接低电平时表示选择写指令操作,接高电平时表示写数据操作;E接高脉冲表示读取信息,在下降沿执行指令。传感器DATA口接到单片机的P1.2口,串口接口数据是单项双向传输的,采用单总线数据格式,一次性完整的输出40bit高位先输出,单片机只读取表示前八位湿度整数部分。
具体实现步骤为;根据用户需求选择自动/手动加湿模式,确定最佳相对湿度值;采集周围空气的湿度数据,送入主控模块,主控模块将实时的湿度和最佳相对湿度进行比较判断是否开始加湿;能够在水位低的时候通过主控模块控制报警,并且停止加湿;液晶显示器LCD用于显示室内相对温湿度和最佳相对温湿度,用户通过按键输入的最佳相对温湿度,也通过LCD演示出来;利用LED灯演示加湿和水位高低。
2设计方案的选择
2.1提供电源的设计方案
有效稳定的电源是设计模块成功必不可少的部分,因此我们设计了几种方案。
方案一:采用独立的直流电源。需要再另外购买一个电压为5V的电池,给整个电路提供稳定的直流电源,这样就会增加设计成本,携带的时候不是很方便。
方案二:采用独立的稳压电路。网上有关于稳压电源设计的方案有很多,可是在本次设计中增加稳压电路的话就会使得整个电路变得复杂很多,可能会影响到电路的电压值。
方案三:使用手机充电器直接作为充电装置进行充电。在我们生活中废弃的手机充电器有很多,我们可以把充电线稍加改动就可以自制一个充电装置。
通过详细的对比,我们决定采用第三种方案。
2.2界面显示的设计方案
方案一:采用数码管显示。在该设计中我们需要显示很多的信息,数码管数量少的话就很难达到要求,这无疑会加大我们在焊接和排版时会增加很大的负担。
方案二:采用LCD显示屏。我们常用的是1602LCD液晶显示屏,它可以同时显示16x02即32个字符
2.3输入设计方案
方案一:采用8155扩展I/O口及键盘、显示等。该方案优点是:使用灵活可编程,并且有RAM,及计数器。它可以提供较多的I/O口,但操作起来稍显复杂。
方案二:直接在I/O口上连接上按键开关。它的优点是:电路十分简单,与单片机直接相连。
在该设计中我们对电路进行了精简和优化,所以剩下的I/O资源还比较多,我们使用六个按键,运用单片机的P1口就完全可以,不需要再对I/O口进行扩展,故选择方案二。
2.4温湿度传感器选择方案
方案一:温度的检测方法,一般采用热敏元件,如热电阻、热敏电阻、温敏二极管、温敏三极管等测温元件。热敏电阻的工作原理:热敏电阻的阻值随温度的升高而成非线性急剧变化,一般具有负的温度系数,其阻值随温度升高而急剧减小,只有少数具有正的温度系数。热电阻的工作原理:热电阻的阻值随温度的升高而增大并且阻值随温度按照近似的线性关系缓慢变化。
湿度的检测方法,一般采用湿敏元件检测湿度,分为湿敏电阻和湿敏电容两种情况。常用的有高分子电阻式湿度传感器、高分子电容式湿度传感器等。高分子电阻式湿度传感器的工作原理:由于水附在有极性基的高分子膜上,在低湿度下,因吸附量少,不能产生荷电离子,电阻值较高。当相对湿度增加时,吸附量也增加,集团化的吸附水就成为导电通道,高分子电解质的正负离子主要起到载流子作用,另外,由吸附水自身离解出的质子、水和氢离子也起电荷载流子作用,使高分子湿度传感器的电阻值下降。高分子电容式湿度传感器的工作原理:高分子材料吸水后,元件的介电常数随环境的相对湿度的改变而改变,元件的介电常数是水与高分子材料两种介电常数的总和。当被测的气态水分子通过多孔的上电极扩散至感湿膜表面,被极性官能团所吸收,引起湿敏电容器介电常数的改变,从而改变了湿敏电容器的容量值。
但湿、热敏电阻精度、重复性、可靠性较差,对于检测要求精度高的温湿度是不适用的。
方案二:采用集成温湿度传感器DHT11。集成温湿度传感器测量精度高,能把温度转化成数字,测得的温湿度值存储在自带的RAM中,单片机直接从中读出数据转换成十进制就是温度,使用方便。DHT11温湿度传感器市面上最流行的,它响应迅速、抗干扰能力强,性价比很高。因此,我选择方案二。
3硬件电路设计
3.1总体设计
根据设计要求确定了系统的总体方案,该设计由温度传感器、单片机、1602LCD液晶显示屏、以及按键输入等部分组成。设计思路为温湿度传感器对空气中的温湿度信号进行采集并且转换成数字信号,再利用单片机STC89C52进行数据分析和处理,并在1602LCD上显示出当前湿度和设定的温湿度值。该设计可以用按键切换手动/自动模式,设置最佳相对温度值,还可以通过按键输入低电平,驱动发光二极管发光,演示加湿,驱动轰鸣器报警,演示在水位低时的防干烧功能。
智能加湿器需满足以下要求:
(1)相对湿度低于40%时自动加湿;
(2)用户可以设置系统温湿度报警值;
(3)由5V稳压直流电源供电,提供温湿度调节控制信号,实现自动控制;
(4)检测得到的数据可以通过显示模块显示。
总体设计的智能加湿器功能原理图如图3.1所示
图3.1智能加湿器功能原理图
3.2单片机模块
3.2.1单片机介绍
本系统采用STC89C52作为控制电路的核心器件,STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编译Flash存储器。俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。在单芯片上,拥有灵巧的8位CPU和在系统可编译Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、高效率的解决方案。工作电压为3.3V~5.5V,其实物如图2.1所示:
图3.2STC89C52实物图
在MCS-51系列单片机中,有两个子系列:51子系列和52子系列。每个子系列有诺干中型号。51系列有8051、8751和8031三个型号,后来经过改进产生了80c51、87c51、80c31三个型号;52系列有5021、8752、8032三个型号,改进后的型号是80c52/87c52、80c32。改进后的型号更加省电。52系列比对应的51系列增加了定时器T2并将内部程序存贮器增加到8KB。Inter公司停止生产MCS-51系列单片机之后将生产权转让给了许多其他公司,于是出现了许多与Mcs-51兼容的单片机。现在生产mcs-51兼容单片机的公司对其进行了不同程度的改进和提高。我们现在使用比较的多的是AT89C51/AT89s51等。
通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处理器、存储器和I/O接口电路等。因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。
单片机经过1、2、3、3代的发展,目前单片机正朝着高性能和多品种方向发展,它们的CPU功能在增强,内部资源在增多,引角的多功能化,以及低电压低功耗。
3.2.2单片机的特点
(1)性价比高,开发周期短,易于产品化,
(2)集成度高,可靠性好,抗干扰性强,
(3)功能完善,接口多样,
(4)低功耗、低电压。一般电源供电电压在5~3V范围内单片机都能正常工作,供电的下限可达1~2V。
(5)总线多样,易于扩展。单片机外部的典型三总线结构,方便系统构扩展,构成各种规模的应用系统。外部总线增加了I2C及SPI等串行总线方式,可根据需要进行并行或者串行扩展。
STC89C52主要功能如表2-1所示:
表3-1STC89C52主要功能
主要功能特性 兼容MCS51指令系统 8K可反复擦写FlashROM 32个双向I/O口 512字节RAM 看门狗定时器 内置4KBEEPROM 3个16位定时器/计数器 MAX810 1个6向量2级中断结构 全双工串行口 低功耗空闲和掉电模式 软件设置睡眠和唤醒功能 本次设计使用STC89C52的主要引脚:
(1)主电源引脚(2根)
VCC:电源输入,接+5V电源
GND:接地线
(2)外接晶振引脚(2根)
XTALl:片内振荡电路的输入端
XTAL2:片内振荡电路的输出端
(3)控制引脚(4根)
RSTNPP:复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。
ALE/PROG:地址锁存允许信号
PSEN:外部存储器读选通信号
EA/VPP:程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接
高电平则从内部程序存储器读指令。
(4)可编程输入/输出引脚(32根)
STC89C52单片机有4组8位的可编程I/O口,分别位PO、P1、P2、P3口,每个口有8位(8根引脚),共32根。
PO口:PO口作为一列8位漏极开路型双向I/O口,常用作地址/数据总线复用口。内部没有上拉电阻,使用时需添加外部上拉电阻。
P1口:Pl口是一个具有内部上拉电阻的8位双向I/O口,P1的输出缓冲级可以驱动4个TTL逻辑门电路。P1口管脚写入l后,通过内部上拉电阻将端口拉高为高电平,可作为输入。在作为输入使用时,由于内部上拉电阻的存在,P1口被外部下拉为低电平时会输出一个电流。在使用FLASH进行编程和校验时,Pl口可作为第八位地址接收。
P2口:P2口是内部自带上拉电阻,功能复用口,可驱动4个LS型TTL负载。
P3口:P3口是和P2口功能基本一样。除了作为一般的I/O口之外,P3口还可以作为重要的特殊功能口,可以接受一些用于变成校验和闪速存储器编程时的控制信号。
一些特殊功能口如表2-2所示:
表3-2P3口特殊功能引脚功能表
P3.0RXD 串行输入口 P3.4TO 计时器O外部输入 P3.1TXD 串行输出口 P3.5Tl 计时器l外部输入 P3.1/INTO 外部中断O P3.6/WR 外部数据存储器写选通 P3.1/INT1 外部中断1 P3.7/RD 外部数据存储器读选项 单片机STC89C52管脚图如图3.3所示:
图3.3STC89C52管脚图
3.2.3单片机最小系统
(1)时钟电路
STC89C52内部有一个用于构成振荡器的高增益反相放大器,引脚RXD和TXD分别是此放大器的输入端和输出端。时钟可以由内部方式产生成外部方式产生。内部方式的时钟电路,在RXD和TXD引脚上外接定时元件,内部振荡器就产生自激振荡。定时元件通常采用石英晶体和电容组成的并联谐振回路。晶体振荡频率可以在1.2~12MHz之间选择,电容值在5~30pF之间选择,电容值的大小可对频率起微调的作用。本次设计采用12M晶振,22pF电容。
图3.4时钟电路
(2)复位及复位电路
复位是单片机的初始化操作。其主要功能是把PC初始化为OOOOH,使单片机从OOOOH单元开始执行程序。除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需按复位键重新启动。
图3.5复位电路
RST引脚是复位信号的输入端。复位信号是高电平有效,其有效时间应持续24个振荡周期(即二个机器周期)以上。若使用颇率为12MHz的晶振,则复位信号持续时间应超过2us才能完成复位操作。
整个复位电路包括芯片内、外两部分。外部电路产生的复位信号(RST)送至施密特触发器,再由片内复位电路在每个机器周期的S5P2时刻对施密特触发器的输出进行采样,然后才得到内部复位操作所需要的信号。
复位操作有上电自动复位和按键手动复位两种方式。
本次设计采用上电复位,通过外部复位电路的电容充电来实现的,只要电源Vcc的上升时间不超过1ms,就可以实现自动上电复位,即接通电源就成了系统的复位初始化。
3.3传感器模块
3.3.1DHT11数字温湿度传感器
本系统采用DHTII作为湿度检测器件,DHT11数字温湿度传感器包括一个NTC测温元件和一个电阻式测湿元件,可以和高性能的8位单片机相连,是一块可以同时检测温湿度的数字传感器。通过和单片机等微处理器构成简单的电路,就能够实时的检测采集室内相对温湿度。因此具有性能稳定、响应迅速、抗干扰能力强且性价比高等优点。DHT11和单片机之间利用简单的单总线可以实现通信,仅仅需要一个I/O口。传感器内部的温湿度数据可以一次性的传给单片机。由于在高精度的湿度校验室内进行过校准,并且以程序的形式在内存中存储,因此可以保证数据的准确性。DHT11很低,在5V电源电压下,工作室的平均最大电流为0.5mA.
DHT11外形及引脚排列与说明如下图3.所示:
图3.6DHT11外形及引脚排列
VCC是电源脚,正电源输入3.5-5.5V;DOUT是数据输入/输出脚,单总线;NC是空脚,扩展未用:GND是电源地脚。能够同时对相对温湿度进行检测;输出为数字信号,可以减少预处理信号的负担,减轻用户工作量;输出为单总线结构,能够有效减少对单片机的I/O口的占用,节省资源并且不用再额外的增加电器元件;单总线传输协议使单片机读取传感器的数据更加方便快:全部校准,为8位二进制数编码方式。湿度测量范围20%—90%RH;温度测量范围0~50℃;适用范围广泛,在恒湿控制、温湿度计、消费类家电领域都有应用。
DHT11传感器在上电后,需要等待1S以上,在越过不稳定状态期间不用向STC89C52单片机发送任何指令。
DATA用于DHT11和微处理器之间的通讯和同步,采用单总线数据格式,一次的通讯时间大约在4ms。数据分为整数部分和小数部分,当前小数部分读数为0,用于之后扩展。具体的操作流程如下:
DHT11数字温湿度传感器一次完整的数据传输为40位,先输出高位。数据格式为:8位湿度整数数据+8位湿度小数数据+8位温度整数数据+8位温度小数数据+8位校验。数据传送正确时,“8位湿度整数数据”所得结果的最后8位等于校验和数据。
用户MCU发送一次开始信号(低电平)后,DHT11从低功耗模式转换到高速模式,
等待主机开始信号结束(拉高)后,DHT11发送响应信号,送出40bit的数据,并触发一次信号采集,用户可选择读取部分数据。DHT11接收到开始信号触发一次温湿度采集,如果没有接收到主机发送开始信号,DHT11不会主动进行温湿度采集.采集数据后转换到低速模式。通讯过程如图3.7所示:
图3.7DHT11通讯过程
总线空闲状态为高电平,主机把总线拉低等待DHT11响应,主机把总线拉低必须大于18毫秒,本次设计的程序中拉低20ms.保证DHT11能检测到起始信号。DHT11接收到主机的开始信号后,等待主机开始信号结束,然后发送低电平响应信号。主机发送开始信号结束,延时等待20-40us后,本次设计的程序中延时40us,读取DHT11的响应信号,主机发送开始信号后,可以切换到输入模式,或者输出高电平均可。由于单片机的上拉能力不足,容易产生很大的寄生电容从而导致RC充放电,容易使数据出错,因此总线由4.7K上拉电阻拉高。DHT11开始发送数据过程如图2-6所示:
图3.8数据传输
总线为低电平,说明DHT11发送响应信号,DHT11发送响应信号后,再把总线拉高80us,准备发送数据,每一bit数据都以50us低电平时隙开始,高电平的长短定了数据位是0还是1.格式见下面图示.如果读取响应信号为高电平,DHT11没有响应,请检查线路是否连接正常.当最后一bit数据传送完毕后,DHT11拉低总线50us,随后总线由上拉电阻拉高进入空闲状态。数字0信号表示方法如图3.9所示
图3.9数字0信号表示方法
数字‘0’表示方法为。DHT11先把总线拉低12-14us然后拉高,高电平保持时间在26-28us范围内,则此时为‘0’电平。
数字1信号表示方法如图3.10所示
图3.10数字1信号表示方法
数字‘1’表示方法为,DHT11先把总线拉低12-14us然后拉高,高电平保持时间在116-118us范围内,则此时为‘1’电平。本次设计的程序是在高电平延时30us之后读取,
3.3.2传感器电路
传感器模块对整个电路进行信号采集和初步处理,DHT11在3-5.5V电压下可以正常工作。在DHT11传感器上电后,为了越过不稳定状态需要等待一秒,在此期间不发送任何指令。DHT11和微处理器之间的通讯和同步通过DATA实现,DATA和单片机的P1.2口相连,使用4.7K上拉电阻,防止干扰增加稳定性。采用单总线数据格式,接口简单,无需另外校准。单次的通讯时间约为4ms。分辨率为8bit,完全能够满足日常环境温湿度的检测要求。由于湿度的监测受周围温度变化影响很大,气体的相对湿度,在很大程度上也依赖于温度。所以应该尽量在相对稳定的环境中检测湿度,在测量湿度时,应尽可能保证湿度传感器在同一温度下工作。如果与释放热量的电子元件共用一个电路板,在安装时应尽可能将DHT11远离电子元件,并安装在热源下方,同时保持良好的通风。传感器电路如图3.11所示
图3.11DHT11传感器
3.4液晶显示模块
3.4.11602字符型液晶显示屏
1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如下图所示:
本系统采用1602字符型液晶显示屏,字符型液晶显示模块可专门用于数字、字母、符号等点阵,是一种点阵LCD。目前常用的有16a:l、16a:2、20a:2和40;1:2行等模块。通常有14或16条引脚线,还有一条背光电源线VCC和一条地线,和14脚的LCD的控制原理一样。在单片机系统中常用液晶显示器作为显示元件。1602型LCD有DO-D7-共8位据线总线和R/W/RS/EN三个控制端口,可以显示2行共16个字符。工作电压为5V,并且具有背光功能和字符对比度调节。其实物如图3.12所示
图3.121602字符型液晶显示器实物图
1602LCD主要技术参数:
显示容量:16x2个字符
芯片工作电压:4.5-5.5V
工作电流:2.OmA(5.OV)
模块最佳工作电压:5.OV
字符尺寸:2.95x4.35(WxH)mm
1602LCD引脚功能如图3.13所示:
图3.131602字符型液晶显示器引脚功能
1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表10-13所示:
编号 符号 引脚说明 编号 符号 引脚说明 1 VSS 电源 9 D2 数据 2 VDD 电源正极 10 D3 数据 3 VL 液晶显示偏压 11 D4 数据 4 RS 数据/命令选择 12 D5 数据 5 R/W 读/写选择 13 D6 数据 6 E 使能信号 14 D7 数据 7 D0 数据 15 BLA 背光源正极 8 D1 数据 16 BLK 背光源负极 第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端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:D0~D7为8位双向数据线。
第15脚:背光源正极。
第16脚:背光源负极。
本次设计的显示部分采用1602液晶显示器,可以显示预设最佳相对湿度和室内实时的相对湿度。RS脚和E脚分别和单片机的P1.O和Pl.1相连,DO-D7口和单片机的PO口相连,PO口作为一列8位漏极开路型双向1/0口,常用作地址/数据总线复用口。内部没育上拉电阻,使用时需添加外部上拉电阻。在用作输出口时,每脚可吸收8TTL门电流,可以驱动逻辑门电路,当PO口的管脚写1时,可以作为高阻抗输入端使用。当访问程序存储器或者外部数据存储器时,可以作为数据/地址的第八位,在访问期间内部上拉电阻激活。在用FLASH编程时,PO口可以作为原码输入口接受指令字节,在用FIASH进行校验时,输出指令字节,由于需要外接上拉电阻,所以和单片机STC89C52连接需要排阻,1602LCD液晶显示电路如图2-12所示:
图2-131602LCD液晶显示电路
3.5报警电路模块
本设计采用的蜂鸣音报警电路,采用有源蜂鸣器,其驱动发声简单,通电就能持续发声。主要工作就是在水位按键将低水位信号送给单片机后,进行报警起到防干烧的目的。蜂鸣器的发声原理是在电流通过电磁线圈时,产生磁场来驱动振动膜发声,因此需要一定的电流,由于单片机I/O引脚输出的电流较小,单片机输出的TTL电平基本上驱动不了蜂鸣器,因此需要设计一个电流放大电路。所以添加一个PNP型三极管来放大驱动蜂鸣器。在本系统中报警电路由一个IK电阻,一个三极管和一个蜂鸣器组成,三极管用来放大电路中的电流,驱动蜂鸣器发声,电阻用来限流防止以控制放大电流。报警电路和单片机的P3.7口相连,当单片机检测到水位低时,就会给P3.7置低电平O,此时三级管导通,蜂鸣器报警,如果水位正常,P3.7置高电平l,三极管截止。报警模块的电路图如图2-13所示;
图2-14蜂呜报警电路
3.6键盘模块
键盘分为独立式按键和矩阵式按键。由于本设计中按键不多,因此选择独立式按键,所有按键都是在按键弹起时,按键与单片机之间的引脚处于高电平,按键按下时处于低电平:
(l)总开关:主要用来控制硬件系统的开关;
(2)水位键K2:主要用来输入水位低信号,模拟防干烧功能;
(3)状态选择键Kl:模式选择键,按一次后转为手动模式,可以根据用户需要输入最佳相对湿度,再按一次转为自动模式,根据默认最佳相对湿度40%RH进行加湿;
(4)数字设置键:在选择手动模式后,按下设置键K3,后进行湿度设置,加键K4每按一次加l,键减键每按一次减l,设置完成后再按K3,开始判断是否开始加湿;键盘模块的电路图如图2-14:
图2-15按键电路
3.7系统电路工作原理
本次设计电路采用模块化、层次化设计,总体设计的电路原理图如图2-15所示:
图2-16系统电路原理图
工作原理:本设计是由硬件和软件相结合,利用软件控制硬件的自动智能化工作。
通过单片机将传感器采集的数据送给液晶显示,并输出加湿控制信号或者报警信号,以达到智能加湿和防干烧的作用。
4系统软件设计
4.1主程序设计
系统的程序设计分为几个模块包括湿度检测模块、湿度控制模块、按键输入模块、
显示模块、水位检测模块。系统上电初始化后,读取水位信号,根据水位信号判断是否蜂鸣报警,选择自动/手动模式后,传感器读取湿度将数据送至单片机,单片机进行数据比对,判断是否加湿。加湿中如果输入水位低信号则蜂鸣报警且不再加湿。主程序流程图如图4.1所示:
图4.1主程序设计流程图
4.2湿度检测控制模块设计
根据传感器的通讯协议,首先由单片通过I/O口主动产生激发信号,然后由传感器控制数据线,单片机通过while语句不间断的检查I/O口的高低电平,得到准确地传输数据。DHT11传感器模块的软件流程图如图4.2所示:
图4.2DHT11传感器模块的软件流程图
湿度的采集过程首先P1.2输出低电平,延时18ms之后P1.2输出高电平,延时40ms之后,读P1.2引脚是否为低电平,如果不是低电平就继续读,如果是低电平就开始执行判断从机80lls高电平是否结束,如果没有结束就继续判断;如果结束就进行单片机数据接受,并将接收到的数据按照十进制存入到指定的数组中,数据的采集结束并且保持数据采集持续地进行。
4.3液晶显示模块设计
液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,图是1602的内部显示地址。
图1602LCD内部显示地址
例如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H)。
在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干预。每次输入指令前都要判断液晶模块是否处于忙的状态。
1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如图10-58所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”
图4.3液晶显示程序流程图
5仿真与调试
5.1仿真
在完成系统的硬件电路图之后,与软件相结合,检验设计是否正确就是系统的仿真。本设计采用的画图软件是Proteus,另外它自带仿真功能,能有效的实现硬件电路图跟程序的调试与仿真。
5.1.1protues软件介绍
Proteus是一款电子设计自动软件,可以实现原理布图、PCB自动或人工布线和电路仿真。可以仿真51系列、PIC、AVR等市面上的主流单片机。还可以在含有模拟原型的原理图的基础上,进行编程,配合LED/LCD、键盘或PRS232终端等动态的外设等的输入,可以看到运行后的输入输出效果。在Proteus绘制完原理图后,调入在Keil软件中编译好的“.HEX”文件,运行后就可以看到实物的模拟运行状态和过程。另外,在仿真运行的过程中,系统的每个连接引脚旁边都会显示出一个小正方形的指示灯,蓝色代表低电平,红色代表高电平,这样就可以直观的看到每个管教的高低电平变化,不需要再借助虚拟工具测量,从而对系统的软件和硬件的性能有了最基本的判断,优化单片机的开发流程。在软件调试和仿真完成之后,就可以将最终的程序HEX文件烧录进单片机,检测硬件系统。使用Proteus进行单片机的仿真调试可以大幅的简化硬件的调试工作,不仅可以弥补元器件和实验仪器的缺乏带来的不足,而且降低了原材料的消耗还避免了一起损坏等问题。节省焊接电路板的时间,提高产品的开发效率和降低开发成本,但相对的在软件编写和调试过程中就要更加认真。
由于Proteus中没有湿度传感器DHT11,所以在仿真时我没有添加温湿度检测模块,且对程序进行了一定程度的改变。使得整个系统可以在没有温湿度传感器的情况下照样可以正常工作。因此在这里我们看到的仿真图只是我改动后的界面,它不能准确的
将实时湿度固定位30%,写入1602LCD。上电之后由于加湿器默认是自动模式,最佳相对湿度默认为40%,从仿真图中可以看到,室内湿度为30%低于最佳湿度,加湿器开始加湿,LED小灯变亮。上电之后的界面如图4-1所示:
图5.1上电之后仿真图
按下水位报警按键K1后的界面如图5.2所示
图5.2按下水位报警后仿真图
按下自动/手动选择键K5后,选择手动模式后的仿真图如图5.3所示
图5.3选择手动模式后的仿真图
按下设置键K2,通过调节加键K3设置最佳湿度后的仿真界面如图5.4所示
图5.4按下加键K3后仿真图
通过减键K4设置最佳湿度后仿真图如图5.5所示
图5.5按下减键后仿真图
5.2程序调试
在软件调试工具里输入写好的汇编语言程序,用软件进行错误检查,如果出现错误,则根据相关提示进行修改,经过多次的校正,直到程序完全正确。接着会生成相应的目标文件,这个目标文件是与单片机能够读取的机器码是相匹配的,之后在就是需要用51开发板把这个文件转化成相应的机器码,单片机进行读取,实现目标操作。
在本程序的调试中我用到的是KEIL软件,单片机开发板和配套的下载烧录软件。
5.2.1KEIL软件简介
KeilC51是美国凯尔软件公司开发的51系列兼容单片机C语言软件开发系统。C51工具包的整体内容包括两项:其一uVision是C51在Windows操作系统下开发的,其二Ishell是在Dos的操作系统下开发的。整个开发流程大致分为编辑代码,编译程序,连接软件,调试系统,仿真结果。程序员用集成开发编辑器进行编程,C语言的编辑软件是在C51上运行并生成目标文件(.OBJ),而汇编的过程则是在A51上进行编译最后也是生成目标文件(.OBJ)。OBJ文件载入在LIB51中就会生成一个库文件,经过二次操作,OBJ文件就会和库文件一起生成一个绝对目标文件(.ABS).ABS文件再由OH51转换成标准的HEX文件,HEX文件就可以载入单片机进行相关操作。
5.2.2调试过程
该程序操作流程如下,打开KEILC51的主程序,新建一个工程文件,建好之后再创建一个文本框,这个文本框是用来写入程序,当写入完成后进行保存,系统会自动检测该程序是否正确,当该程序完全正确后会进行编译,最终可以生成一个HEX文件,该文件通过烧录软件进行写入51单片机。
6总结
在选择毕业设计题目的时候,我纠结了很久,最后还是想作关于加湿器的东西。所以我选择了这个课题,我觉得我能够把他做好。在设计初期,我查找了很多有关于智能加湿器方面的资料,了解了它的一些发展现状和研究情况。一般的湿度检测系统都是由一个单片机和一个温湿度传感器组成,超出一定的湿度范围(40%-60%RH),系统就报警,外部的一些辅助电路如按键、LCD、LED等。但是在仔细研究了自己的课题后,发现加湿器和普通的湿度检测系统有着很大的不同。加湿器不仅需要检测湿度,还要控制加湿,随时对湿度进行调节。加湿器只有在水位低时才需要报警,目的是防止干烧。因此最终的设计方案定为最佳湿度可手动设置,在低于最佳湿度后加湿,高于最佳湿度不加湿或停止加湿,在任何状态下,只要水位模块输入低信号,就能报警并停止加湿。这样一来,就实现了加湿器的智能化控制和防干烧功能,满足了课题的要求。
在焊接电路的时候,由于自己排版不是很好,使得一些模块的管脚连接没有完全按照仿真的样子来。在连接1602LCD的RS管脚和E管脚时,我发现STC89C52芯片上的P2.0和P2.2脚在整个芯片的右下角,如果我一定要把它们连到一起的话,那样会影响到我其它模块的焊接工作,所以我把RS和E脚分别与P2.7和P2.6脚相连,把发光二极管与P2.0脚相连,这使我的焊接工作变得更加方便简单,当然最后肯定需要把程序里的管脚也改过来。
焊接过程完成后我对整个系统进行了上电调试,通过调节可调电阻的阻值大小来调节1602LCD显示屏的背光强度,使数值正常显示出来。通电后我发现我的报警模块没有声音,也就是轰鸣器没有工作,检查电路后我才发现原来我把三极管的三个管脚焊接错误了,我这次用得到的三极管是ecb型的,以前我用的都是ebc型的三极管,习惯性的把最右边的管脚当做c脚接到了正极上,结果轰鸣器没有工作,当我重新焊了一遍再次测试后,轰鸣器响了可是声音很小,我想着可能是串的电阻阻值太大了,所以我把1K的电阻换成了一个220欧的,调试时声音就很响。
通过这次毕业设计,使得自己在理解单片机基本电路的基础上掌握了简单的电路的设计方法,同时对整个项目的编程方法和技巧也有了一定的认识和理解,并具备了独立编程和系统调试的能力。另外,在智能加湿器的开发过程中我体会到了自动化的真正含义,对以后的学习和工作奠定了一定的基础,为以后进一步的学习拓展了这方面的知识和技巧。
参考文献
附录
致谢
II
1
单片机
温度传感器1
温度传感器2
1602LCD显示屏
水位传感器
加湿器开关
声光报警器
开始
轰鸣器报警
判断水位是否低
判断湿度是否超出最佳值
结束
初始化
键盘扫描
延时
温湿度检测并传送数据到单片机
1602显示数据值
启动加湿(红灯亮)
是
否
否
开始
读P1.2引脚判断是否为低电平
结束并保存
P1.2输出低电平
延时20ms
P1.2输出高电平
延时40ms
将数据按十进制数位存入数组
单片机进行数据接收
重复80us高电平是否结束
重复80us低电平是否结束
否
是
是
否
否
开始
液晶1602初始化
延时
写LCD指令
写显示行列地址
取显示首地址
写数据
读数据并显示
返回
|
|