大学时候的课程设计项目,本人只负责软件设计。
课题摘要
摘 要
温湿度参数的检测已经成为人们日常生产生活中的一个重要的参数指标。温度和湿度是两个最基本的环境参数,人们生活与温湿度息息相关。在工农业生产、环保、科研、化工业、制药业等地方,都经常需要对环境温度和湿度进行测量。随着社会的发展和人民生活水平不断提高,温湿度作为两个基本的环境参数也逐渐深入到人们生活水平中。因此,对于环境温湿度检测的研究有着非常重要的意义。
本论文讲述了一种以单片机STC89C52为主控器,DHT11为温湿度传感器,通过0.96OLED来显示温湿度。硬件电路包括:单片机最小系统、DHT11为温湿度检测模块、0.96OLED液晶显示模块。软件系统包括:温湿度传感器数据采集子程序、数据校验子程序、液晶显示屏显示子程序、系统主程序。
本设计实现的功能有能够检测当前环境下的温度和湿度参数值,将传感器检测到的温湿度数值显示到液晶显示屏上面。
关键词:STC89C52;DHT11;0.96OLED;温湿度检测;
Abstract
The detection of temperature and humidity parameters has become an important parameter indicator in people’s daily production and life. Temperature and humidity are the two most basic environmental parameters, and people’s lives are closely related to temperature and humidity. In industrial and agricultural production, environmental protection, scientific research, chemical industry, pharmaceutical industry, etc., it is often necessary to measure the ambient temperature and humidity. With the development of society and the continuous improvement of people’s living standards, temperature and humidity as two basic environmental parameters have gradually penetrated into people’s living standards. Therefore, the research on environmental temperature and humidity detection is very important.
This paper describes a single-chip STC89C52 as the main controller, DHT11 is the temperature and humidity sensor, through 0.96OLED to display temperature and humidity. The hardware circuit includes: the minimum system of the single chip microcomputer, the DHT11 is the temperature and humidity detecting module, and the 0.96 OLED liquid crystal display module. The software system includes: temperature and humidity sensor data acquisition subroutine, data verification subroutine, liquid crystal display subroutine, system main program.
The function realized by this design is able to detect the temperature and humidity parameter values in the current environment, and display the temperature and humidity values detected by the sensor on the liquid crystal display.
Key words:STC89C52;DHT11;0.96 OLED;temperature and humidity detection;
1 概况
1.1 课题应用背景
随着社会的发展,温湿度已经与人们生产生活越来越密不可分。在人们的日常生产生活中,对温湿度的检测需求越来越高。传统的温度检测方法是通过水银温度计,该温度计具有度数不方便,测量精度不高,操作繁琐等缺点。目前人们对于湿度数值的检测基本上还是采用比较传统的干湿球显示法,但是此方法的测量过程相对复杂而且对于湿度数值的测量结果精确度并不高。并且传统的测量方法都需要人工读取温湿度结果,这在一定程度上也一样影响测量精度。
在此次设计中采用的温湿度信号检测的DHT11传感器,主控制模块则是采用的SCT89C52单片机。以此为基础完成本次设计。
1.2 课题的主要任务
设计完成一个以STC89C52单片机为核心控制器的数字式温湿度检测以及温湿度信息实时发送的系统,其中该设计需要实现的基本功能为:
(1) 准确时间显示功能;
(2) 测量温度的精度为±1℃,测量湿度的精度为±1%;
(3) 该系统可以将实时采集到的温湿度信息显示在液晶显示屏上面方便查看。
2 实施方案
2.1 方案框图及程序流程图
方案框图
主程序流程图
2.2 确认方案的理由。
主要功能:用80C52单片机,作为主控芯片,接收从时钟芯片发出的时间信号和温湿度传感器发出的温湿度信号,80c52芯片进行数据转换输出显示到OLED屏上。
3 设计
3.1 硬件设计
3.1.1 硬件设计
原理图
PCB板图(顶面)
PCB板图(底面)
89C52单片机作为核心,它拥有CMOS的高速和高密度技术及CMOS的低功耗特征,它基于标准的MCS-51单片机体系结构和指令系统,属于89C51增强型单片机版本,集成了时钟输出和向上或向下计数器等更多的功能。89C52还内置8位中央处理单元、512字节内部数据存储器RAM、8k片内程序存储器(ROM)32个双向输入/输出(I/O)口、3个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。
DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。
DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器 。 它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。(其精度湿度±5%RH, 温度±2℃,量程湿度20-90%RH, 温度0~50℃)。
3.1.2 PCB板制作
PCB板制作流程
热转印
用剪板刀把覆铜板裁剪到电路图合适大小,并把表面用砂纸打磨明亮清洗干净。把打印好的转印纸有字的一面平铺到覆铜板有铜的一面。用透明胶固定一个边。
转印时,先把过塑机开机加热到160度到200度之间(本实验过塑机温度为199度),用手压住PCB板,轻轻送入热转印机,不要使用太大的劲,利用过塑机的马达转动使覆铜板慢慢的转过去并均匀的加热。要让覆铜板缓慢的来回过上几次,使电路充分转印到板上。
腐蚀
本次实验采用盐酸和双氧水的配比混合液来腐蚀。成品的盐酸浓度一般为22-28%,双氧水的浓度为30%,然后再加水稀释,达到一个合理的配比:盐酸:双氧水:水=1:1:3。若浓度太高,容易腐蚀掉全部的铜,不能保留我们的线路;溶度太低 ,效果不佳且腐蚀时间长。(配置溶液时,注意配置顺序,先放入腐蚀槽内三分水量,再加入一份盐酸,最后添加一份双氧水)
由于腐蚀的过程存在其他板子的干扰,导致多条线路的断裂。故选择了嘉立创打板。
PCB板
3.1.3 调试
通过使用万用表来确保焊接过程中有没有存在虚焊。在调试过程中,发现晶振的大小和电阻使用错误,导致时钟不能够显示。最后通过查找时钟的原理图,发现晶振数值太大,以及电阻的数值太大。
3.2 软件设计
3.2.1 软件设计原理说明。
主要包括主程序、按键扫描子程序、DHT11模块数据读取子程序、DS1302芯片数据读取与修改子程序等。
主程序 主程序的主要功能是负责按键的实时扫描、温度值与湿度值的实时读取与显示、时钟的实时读取与显示。流程图如下:
按键扫描子程序 按键扫描子程序的主要功能是通过状态机的框架来对按键进行检测扫描,并对用户按下所对应的按键进行标记。流程图如下:
DHT11模块数据读取子程序 DHT11模块数据读取子程序主要功能是通过发送模块特定的时序来获取温度数据、湿度数据与校验数据,使用校验数据来检验温度数据与湿度数据的正确性。流程图如下:
DS1302芯片数据读取与修改子程序 DS1302芯片数据读取与修改子程序主要功能是通过发送芯片相应的读命令来读取时钟数据与写命令来修改时钟数据,此处时钟数据的修改是通过操作独立按键进行。流程图如下:
3.2.2 软件调试
软件调试一般是编写一个显示程序来进行硬件的正确性检验,本程序主要使用点灯法与OLED显示程序来进行调试。软件调试首先实现OLED模块的正常显示,因OLED模块程序有厂家提供的固件库,故无需调试;然后通过OLED显示和点灯来分别进行主程序、按键扫描子程序、DHT11模块数据读取子程序、DS1302芯片数据读取与修改子程序等编程与调试。
由于DHT11与微控制器采用串行数据传送,对DHT11进行读/写编程时必须严格地保证写时序;否则将无法读取测量结果。本程序采用C语言编写并用Keil C51编译器编程调试。
软件调试从能显示温湿度值与时间值,并且在温湿度值变化时显示的温湿度也能变化,到能用按键对DS1302的时钟进行修改才基本完成。
4 测试报告
4.1 主要功能
(1)准确时间显示功能;
(2)测量温度的精度为±1℃,测量湿度的精度为±1%;
(3)该系统可以将实时采集到的温湿度信息显示在液晶显示屏上面方便查看。
4.2 技术指标
5 总结
同学一:本次实验的课题是由我来选择的,主要是因为我在无线电杂志上看到一个单片机时钟的项目,使用的stm32芯片作为主控程序的时钟电路。
我们初期主要是使用adruino micro,作为主要电路,然后接上0.9寸OLED和dtht11温湿度传感器,直接输出时间和温湿度,后来在老师的劝说下,采用了更为简单的51单片机去设计使用,我在本次实践中,主要负责统筹规划,参与的PCB设计,电路板焊接以及3d外壳的制作打印。
在这次项目实践中,我感受到,电路设计要规范设计,地线,最好要分开走,电路图要进行反复检查,以防止PCB制作完成后,发现有错,对刚做好的产品要适当进行外壳,包装将会更变得更好看。
同学二:在本次实验中,我主要是负责前期资料的查找、制作PCB板和焊接,以及论文的撰写和PPT的制作。在资料查找方面,我去查找了模块的数据手册。在制作PCB板,我没有去清洗覆铜板的表面,导致第一次的制板失败。在第1次的腐蚀中,由于溶液的浓度太低,导致我们腐蚀了很久都没能完全腐蚀好,其中还有多块板一起腐蚀,导致腐蚀效果不佳,多条线路出现了断裂,只得重新打板。在焊接的过程中,要特别注意正负极和电阻的大小(本次电路我们使用了多种不同阻值的电阻),更要防止电路的虚焊,否则该板子无法正常的工作。
同学三:作为本次实验的原理图设计者,我在这次的实验中查阅了许多潘滨滨同学收集的资料,一开始使用AUDUINO MICRO中的芯片ATmega32U4作为核心,发现这个芯片里面已经集成了我们的所需还有这个芯片比较小在学校无法进行打板。最后发现89C52芯片更符合我们的要求。由于我电路设计的经验不足,在设计的过程中存在许多问题,在老师的指导、组员的帮助和CSDN论坛的大佬资料下成功完成设计。
同学四:这门设计课使我进一步巩固了书本上的知识,做到了学以致用,同时也深刻了解到理论与实践的异同,而实践是检验真理的唯一标准。通过编译软件Keil,使我们进一步了解微控制器的设计与电路搭建过程,其中最为挑战性的是软件设计部分,即编程,我们从书本及网站中查阅大量资料,经过自己扎实的基础,有很多功能都能实现,遇到有不懂的地方最好还是查阅芯片手册,特别是查看时序是最重要,机器的通讯方式都是建立在时序上,即高低电平。最后一步的系统调试发现如何调试都存在问题,后来我查看电路图,发现时钟模块设计错了,这说明程序的实现是建立在完整的硬件电路上。总结经验的时候我得出这样的结论,学习有目的的去学习,若学了不用等于没学;其次,要学以致用,理论联系实际,这才会取得事半功倍的效果,实践才决定知识理论的深度。
同学五:在本次实验中,我主要是负责采购材料,还有其它的一些杂务,可能是我的个人能力不太足,其它的事情我都会学习下组员的,看一下他们的操作,有时候有什么忙也会帮上他。在本次实验中,我更加清楚地了解到一块电路板的产生和制作,每个流程的操作跟每个细节的重要性,制作电路板需要打印电路图,热转印,腐蚀,打孔等等。在此次实验课之后,会对我们从事电子类的工作更受益匪浅,对每一个流程都更熟悉和基本的了解,也加强了自己的动手能力跟应变能力,我们在已有的的理论基础上去展示我们的实践操作能力,我觉得这是一个提升动手能力的机会