基于多功能数字温湿度

设计目标

设计并完成一个核心技术采用的是STC89C52单片机的温湿度检测以及万年历显示系统,其中该设计需要实现的基本功能为∶
(1)测量温度分辨力为0.1℃,测量湿度的分辨力为1%;
(2)系统允许误差范围为 ±0.5℃和 ±5%以内;
(3)用户可通过按键来调节温湿度的上下限,当超出设定的阈值时系统将进行声光报警。
(4)用户可以在LCD12864显示屏上看到当前的日期、对应的农历日期以及时间,并且能通过按键对其进行调整。
(5)该系统还有闹钟的功能,可以通过按键来设定闹钟的时间,设定的时间一到,闹钟便会响起。同样也可以通过按键来控制闹钟的开关。
(6)该系统可以将实时采集到的温湿度信息以及时间信息显示在液晶屏上面方便查看。

系统总体设计方案

系统总框图
本多功能数字温湿度计的硬件部分如下图所示。该系统主要由以下几个模块组成:以STC89C52单片机为核心的主控制系统、以DHT11为核心的温湿度监测系统、以DS1302为核心的时钟模块、以LCD12864为核心的显示模块以及以AT24C02为核心的存储模块,同时配备了蜂鸣器、按键以及LED指示灯,使其能调节温湿度上下限、时间以及实现超出阈值时发出声光报警的效果。
在这里插入图片描述

图2.1 总体设计框图
STC89C52单片机作为本温湿度监测系统的主控制器,DHT11温湿度传感器将采集到的温度信息和湿度信息一并发送给单片机进行数据处理,再由单片机将DS1302初始化后,DS1302读取时分秒、星期以及年月日寄存器,接下来单片机把数据处理完成之后发送显示指令给液晶显示屏将数据显示出来。按键模块中的按键可以对温湿度上下限、日历、时钟以及闹钟进行检查和修正。

软硬件系统设计

硬件电路设计
STC89C52 单片机是本次设计中的核心部件,其起着获取温度传感器和湿度传感器检测到的数据功能,并且通过其控制LCD 液晶显示屏显示采集到的温湿度实时信息值以及接收到的时钟信息。数字式温湿度传感器 DHT11的数据通信引脚 DATA 脚与STC89C52单片机的 P1.0 口相连。时钟芯片与单片机的P1.1P1.3接口相连。12864液晶显示屏连接在单片机的P2.5P2.7口上。
通过LCD12864将数值显示出来,在超过设定的阈值时会进行声光报警。还能实现时钟日历的显示功能以及时、分、秒的显示,并且带有闹钟功能。通过按键,能调节温湿度的上下限;调节日期和时间;调节闹钟的时间以及闹钟的开关。采用DS1302时钟芯片、纽扣电池以及AT24C02芯片,设置的报警值、闹钟、时间等信息都可以实现掉电存储。
在这里插入图片描述

软件部分设计
在这里插入图片描述

图3.1 计算阳历程序流程图
当接通电源开始工作后,单片机中的程序开始运行,其将对DHT11进行初始化。完成初始化后DHT11环境温湿度进行检测并传送数据回单片机,同时DS1302将读取是分秒、星期以及年月日寄存器,单片机把数据经过处理之后发送显示指令给12864液晶显示屏显示出来。按键模块中的按键可以对温湿度上下限、日历、时钟以及闹钟进行调整。

在这里插入图片描述

图3.2 系统流程图

系统调试

硬件测试
因为本次论文中介绍的多功能温湿度计的电路系统的规模相比较之下比较宏大,因此,在对其进行焊接的过程中一定要十分仔细,一旦在焊接上出现了一处错误,就可能会影响整个系统的功能,严重的错误还会导致整个系统毫无反应。并且面对这么大的电路系统,错误的排查也是比较困难的,非常的费时费力。值得一提的是因为此系统中电路的交线情况复杂并且数量很多,一些锋利的电路引脚可能会将导线外部的包皮刺破的情况,导致电路短路,不能正常运作。所以说在焊接这一步骤上需要格外的仔细。
软件测试
本次设计的温湿度计的功能多种多样,数字型可以看到当前的日期信息和具体时间,能自动换算农历日期,并且可以设置闹钟。因为功能比较多,因此设计所需的程序内容自然复杂一些,所以在程序的编译和编写上出现了许许多多难题。最终,反复操作错误排查,错误修改,将代码逐步的检查与完善,最终将编程部分的问题全部解决。以下是在编译和编写代码过程中遇到的几个比较大的问题:
1.烧入程序后,温度显示85℃不变。
解决:首先检查硬件电路是否有虚焊或者漏焊的情况,其次,检查程序中有无编写错误的地方,最后是在程序检查时发现了原来是ds18b20在数据读写时间部分没有写上延时,没有给温度足够的时间复位,所以导致了问题的产生。
2.将日期修改后或者将时间修改后不能自动跳转到对应的农历。
解决:首先把与农历内容无关的部分暂时屏蔽处理,防止干扰,抛开整个程序主体,讲子程序作为研究对象进行调试,最后发现在调用农历自动更新时,在处理十进制和十六进制的过程中出现了问题,所以才在此处发生了一系列的错误。之后我对与十六进制相对应的十进制进行检查与修正,使得十六进制匹配正确的十进制,这个问题就解决了。
测试结论
多次试验,我们收集了数据进行了深度的分析,可以进一步掌握电路的原理,更加熟悉电路的工作过程,提高对于电路的分析能力和设计电路的能力。在软件编程方面,同样得到了一定幅度的提升,使以往所学的知识真正应用到了实践当中,得到了提升。

结论

经过近两个月的奋斗,从最初的毕业设计选题、开题答辩、元器件选型、电路图设计、硬件电路焊接、软件调试等每一个过程都是一次自我的成长和对自己所学的知识的一次检验。本设计是基于单片机的数字温湿度计设计,开始对于单片机、温湿度传感器都不是很了解熟悉,软件设计中使用 C 语言进行软件编写也不是很了解。由于本设计是由软件和硬件电路两部分组成,而我是首先从软件编写入手,然后进行硬件电路设计,因此由于软件编程的缺陷导致硬件电路设计不美观。在本次设计中,有很多地方都是从头学起的,如蓝牙通信模块和手机串口调试等。本次毕业设计,锻炼了我的自学能力,动手能力以及问题的发现解决思路和解决的方法等很多都是在平时课堂里面无法通过课本知识获取到的,实践出真理,实践得真知。在实践中磕磕碰碰的学习获取知识,这对于我们自身的成长的有着极大帮助的。