基于STC89C52的温湿度测量电路的设计 毕业论文

更新时间:2024-05-25 11:48:01 阅读量: 综合文库 文档下载

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

基于单片机温湿度测量电路的设计

郑州大学

毕业设计(论文)

题 目

基于单片机的温湿度 测量电路的设计

基于单片机温湿度测量电路的设计

郑州大学毕业设计(论文)任务书

一、 主要内容

采用单片机STC89C52为核心配合温湿度传感器,显示电路,输出控制电路,故障报警电路等组成,软件选用汇编语言编程。单片机可将温度传感器检测到的温湿度模拟量转化成数字量,显示于LED显示器上。从而达到对温度的灵活控制。

二、 基本要求

1.该自动化检测仪器以单片机为控制核心。 2.利用传感器对小规模信号进行检测与处理。

3.实现单片机系统的外部控制与显示、报警模块进行设计。

三、 主要参考资料

[1] 余发山 单片机原理及应用技术,徐州:中国矿业大学出版社,2003 [2] 杨刚,周群.电子系统设计与实践.电子工业出版社.2004 [3] 涂时亮,张友德.单片微机控制技术.清华大学出版社.1994:86-87 146-147

[4] 《融会贯通 Protel99电路设计》 弘道工作室 北京 人民交通出版设,2000.

完 成 期 限:

指导教师签名: 专业负责人签名:

年 月 日

基于单片机温湿度测量电路的设计

郑州大学毕业设计(论文)开题报告

课题名称 基于单片机温湿度测量电路的设计 课题来源 教师命题 课题类型 学生姓名 学 号 EX 指导教师 冬 专 业 电子工程 开题报告内容:(调研资料的准备,设计的目的、要求、思路与预期成果;任务完成的阶段内容及时间安排;完成设计(论文)所具备的条件因素等。) 一、调研资料准备 学习电子绘图Protel 99 SE、Multisim2001、Keil等相关软件 通过网络及各种相关书籍查找相关信息 二、设计目的 1.了解LCD显示器显示的基本原理和好处 2. 了解DHT11,会使用DHT11. 3. 掌握并学会用单片机STC89c52控制的硬件电路的设计和软件设计 4. 采集和显示的软件设计. 三、设计要求 1、显示器可显示温湿度。 2. 在一定温湿度范围内,可调节温湿度的报警上下限 2、温湿度超过上下限时可报警。 四、设计思路 1. 利用STC89C52单片机芯片作为程序控制系统再加上其它外围电路进行辅 助,具体电路的设计包括:单片机最小系统、键盘、液晶显示等电路。 2. 按设计要求编写程序并调试 3. 输出用液晶屏显示 五、预期成果 1、设计一个基于单片机的可调节温湿度上下限的温湿度测量电路 2、软件编程及功能调试 六、论文阶段内容及时间安排 第1周至第2周:收集材料,撰写开题报告 第3周至第4周:撰写文献综述和外文翻译,设计电路总体方案

基于单片机温湿度测量电路的设计

第5周至第7周:进行系统软件功能分析,软件模块的确定,编写软件 第8周至第9周:整体系统的软硬件调试 第10周至第11周:总结分析数据,毕业论文的撰写 第12周:提交毕业设计(论文)成果,准备答辩 七、完成设计(论文)所具备的条件因素 硬件条件:单片机、LCD液晶显示屏、万能板、放大器、按键、蜂鸣器等 软件条件:电子绘图软件Protel 99 SE、Multisim2001、Keil。 方法:(1)通过网络及各种相关书籍查找相关信息,确定使用的元器件。 (2)以单片机STC89C52为核心,开发一个完整的系统,包括硬件设计和软件的编程。 (3)使用Protel软件,绘制原理图、PCB,并进行元器件安装、焊接及调试检测达到预期的目的。 指导教师签名: 日期:

基于单片机温湿度测量电路的设计

基于单片机温湿度测量电路的设计

摘 要

随着科学技术的日新月异,人类社会取得了长足的进步!在居家生活、工农

业生产、气象、环保、国防、科研、航天等部门,经常需要对环境中的湿度和温度进行测量及控制。本设计设计了一个智能化的温湿度测量应用系统。本系统采用技术成熟的DHT11作为测量湿度和温度的传感器。控制系统芯片采用技术成熟,功能强大、价位低廉大众化的STC89C52单片机。DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。每个DHT11传感器都在精确的湿度校验箱中进行校准。校准系数以程序的形式储存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。LCD显示电路,声光报警电路都由STC89C52单片机控制。同时设计了能给系统提供稳定工作电压的电源电路。为了提高系统的抗干扰性能,对湿度、温度的检测采用了硬件抗干扰和软件抗干扰的综合方法。最后设计了系统各个功能部分的软件程序。由本设计课题做成的温湿度检测系统结构简单、价格便宜、量程宽,具有较高的可靠性、安实性。

关键词 单片机DHT11/传感器/1602液晶显示屏/STC89C52 报警器

I

基于单片机温湿度测量电路的设计

Temperature and humidity alarm

ABSTRACT

With the rapid development of science and technology, human society has achieved great progress! In the life that occupy the home, industry, agriculture, national defense, weather, environmental protection and scientific research departments, such as aerospace, often need to the environment humidity and temperature measurement and control. The design of an intelligent humidity measuring the application systems. The system adopts the technology DHT11 as measuring the humidity and temperature sensor. Control system chip adopt mature technology, powerful, price cheap popular STC89C52. Each DHT11 sensors are accurate calibration of humidity in calibration. In the form of calibration coefficient of the program memory, OTP stored in sensor signal detection in the internal process to call these calibration factor. Wired system, system integration serial interface becomes easy. LCD display circuit, sound-light alarm circuit controlled by STC89C52. The system can be designed to provide a stable working voltage of power supply circuit. In order to improve the system of anti-jamming performance of temperature, humidity, using the hardware and software anti-interference synthesis method. Finally the design of the system software program each function. By this design task to make the temperature and humidity of the detection system structure is simple, cheap price, wide range, high reliability, safety and practicality.

KEY WORDS DHT11 ,MCU,1602 LCD,STC89C52 alarm sensor

II

基于单片机温湿度测量电路的设计

目 录

摘 要............................................................ I ABSTRACT........................................................... II 1 引言............................................................. 1

1.1 温、湿度的意义............................................. 1 1.2 作品设计目的............................................... 1 2 系统原理......................................................... 3

2.1 实现功能................................................... 3 2.2 实现原理................................................... 3 2.3 设计思路................................................... 4 2.4 总体设计框图............................................... 5 2.5 软件流程................................................... 6 3 设计所需原件..................................................... 8

3.1 单片机..................................................... 8 3.2 温湿度传感器............................................... 9 3.3 1602显示器 ............................................... 12 3.4 蜂鸣器介绍................................................ 15 3.5 晶振电路.................................................. 16 3.6 按键...................................................... 17 4 设计总结........................................................ 18

4.1 传感器的选择.............................................. 18 4.2 具体设计的步骤。.......................................... 18 4.3 遇到的问题以及解决办法.................................... 19 4.4 DHT11的Visual C++上位机界面的设计........................ 20 结束语............................................................. 21 致 谢............................................................. 22 参考文献........................................................... 23 附 录............................................................. 24

III

基于单片机温湿度测量电路的设计

1 引言

1.1 温、湿度的意义

温度是表示物体冷热程度的物理量,微观上来讲是物体分子热运动的剧烈程度。在整个宇宙当中,温度无处不存在。无论在地球上还是在月球上,也无论是在炽热的太阳上还是在阴冷的冥王星上,这一切无不由于空间位置的不同而存在着温度的差别。

湿度是表示大气干燥程度的物理量。以及露点等物理量来表示。湿度表示气体中的水蒸汽含量,有绝对湿度和相对湿度两种表示方法。绝对湿度是一定体积的空气中含有的水蒸气的质量,一般其单位是克/立方米,绝对湿度的最大限度是饱和状态下的最高湿度;相对湿度是绝对湿度与最高湿度之间的比,它的值显示水蒸气的饱和度有多高。

温度、湿度和人类的生产、生活有着密切的关系,同时也是工业生产中最常见最基本的工艺参数,例如机械、电子、石油、化工等各类工业中广泛需要对温度、湿度的检测与控制。并且随着人们生活水平的提高,人们对自己的生存环境越来越关注,而空气中温湿度的变化与人体的舒适度和情绪都有直接的影响,所以对温度、湿度的检测就非常有必要了。

1.2 作品设计目的

在重要的设备房间中,设备对温、湿度等运行环境的要求非常严格。大于面积较大的房间,由于气流及设备分布的影响,温湿度值可能会有较大的区别。所以应根据主房间实际面积在房间加装温湿度传感器,以实时客观检测房间内的温、湿度。在监控本系统,温湿度一体化传感器将把检测到的温湿度值实时传送到监控主机中,并在监控界面上以图形形式直观地表现出来。管理员可实时了解房间各点的实际温湿度值,一旦房间内实际温、湿度值越限,系统将自动弹出报警框并触发报警,提示管理员通过调节送风口的位置、数量,设定空调的运行温湿度值,尽可能让房间各点的温湿度趋向合理,确保房间设备的安全正常运行。

1

基于单片机温湿度测量电路的设计

1.3 作品设计内容及要求

1.设计一个温湿度侧量电路,要求:

(1)用STC89C52单片机通过编程来控制温湿度的显示。 (2)液晶要准确显示外界的温、湿度的大小。 (3)具有超温、湿度测量报警装置。

2.用中、小规模集成电路组成测量系统,并在实验仪器(可在面包板)上进

行组装、调试。

3. 画出各单元电路图、整机功能框图和逻辑电路图,写出设计和实验总结

报告。

2

基于单片机温湿度测量电路的设计

2 系统原理

温度、湿度和人类的生产、生活有着密切的关系,同时也是工业生产中最常见最基本的工艺参数,例如机械、电子、石油、化工等各类工业中广泛需要对温度、湿度的检测与控制。并且随着人们生活水平的提高,人们对自己的生存环境越来越关注,而空气中温湿度的变化与人体的舒适度和情绪都有直接的影响。 所以,对温度、湿度的测量就非常有必要了。

本设计中包括三个模块。即温湿度采集模块,数据处理模块,用户交互模块。其中温湿度采集模块使用的是DHT11数字温湿度传感器,它使用单总线方式,接口简单,而且无需另外校准。分辨率为8bit,完全能够满足日常环境温湿度的检测要求。

数据处理模块使用的是STC89C52单片机,其完成温湿度数据的采集、运算和逻辑控制的功能。

用户交互模块主要由按键、1602点阵液晶和蜂鸣器构成。其中按键用于用户设定温湿度阈值,1602用于数据显示,蜂鸣器用于提示用户。

单片机作为主控制器,主要负责处理由温湿度传感器送来数据,并把处理好的数据送向显示器模块,数据温湿度传感器主要用来采集周围的环境参数,并把所采集到得数据送向单片机,按键电路主要是用来完成单片机的复位操作和温湿度初始值的设定。蜂鸣器电路就是用三极管来实现的,用来判断周围的温度或者湿度是否超出设定数值,显示电路主要用来显示当前的温湿度。

2.1 实现功能

1、通过数字温湿度传感器DHT11采集温湿度数据,即时传输给单片机; 2、单片机将收到的信号进行分析和处理,将采集到时温湿度实时数据送给1602液晶显示屏;

3、通过1602LCD液晶屏完成温湿度的数据显示;

4、给定温度湿度上下限数值,设置不同的温湿度,接入蜂鸣器,实现越限报警;

2.2 实现原理

该电路的最关键部分是关于温度和湿度的采集以及检测、显示。主控电路芯

3

基于单片机温湿度测量电路的设计

片采用学校统一制作的STC89C52单片机学习板。STC单片机执行指令的速度很快,对工作环境的要求比较低;传感器模块我选择了DHT11数字温湿度传感器。告别了以前的单独测量温度以及湿度的方式,更简洁,更方便。连接好外围电路。通过DHT11准确的检测出当前环境下的温湿度,并且将所测数据交给STC单片机进行分析和处理。再将所得数据有单片机发送给HJ1602A液晶屏。成功完成显示。控制模块采用蜂鸣器报警方式。预先设置好所需温度和湿度的限值(一个上限一个下限),将蜂鸣器接入电路。通过温度和湿度的上下限值控制蜂鸣器的报警。若逾越限值,实现蜂鸣器鸣响。但是需要注意的是温度超标和湿度超标需设置两种不同的鸣响方式,用来加以区别(温度越限以及湿度越限蜂鸣器的领翔方式必须不一样)。提醒工作人员此时温度湿度数据出现异常、需及时调整,及时启用升温器、加湿器、降温风扇以及喷雾器来有效的调整实验室内温湿度。从而简单实现了控制。总体来说,本次设计主要涉及了温湿度的测量以及实现简单控制。硬件方面有四个模块,即传感器模块、STC89C52单片机主控模块、LCD1602液晶显示模块以及报警模块,从硬件制作方面。也相对简便。原理清晰、连线方便,不需要额外的焊接等技术。给硬件的制作带来了极大的方便。

2.3 设计思路

电路总体上分为温湿度采集部分、中央处理器、显示模块以及报警模块部分。以STC89C52单片机最小系统作为核心控制电路,控制DHT11传感器采集的温湿度的转换,控制1602液晶屏的显示,以及蜂鸣器的报警。具体显示内容及方式由软件来完成。采集温湿度方面由DHT11传感器来完成,它是一个数字温湿度传感器、内置模数转换,可以直接与单片机相连接。而1602液晶屏是插针式,也可以直接与单片机相连接。因此不需要手动焊接等复杂的过程。具体步骤是:按照原理图将传感器、1602液晶显示屏分别接入单片机。通过DHT11传感器采集当前的温湿度值、再经单片机,将处理后的数据传送到液晶屏上显示出来。并且接入蜂鸣器。设置温度的上下限值。实现越限报警。

本次设计硬件的核心就是STC89C52,其他的外围电路都是围绕它所设计的。数字温湿度传感器的DHT11的DATA口连接单片机STC89S51的P3.0口。显示电路就是把LCD1602和单片机的P0口分别相连,当温度或湿度高于预设值的时候

4

基于单片机温湿度测量电路的设计

蜂鸣器蜂鸣报警,增加单片机的输出能力,增加单片机的输出电流,故使用电阻排来完成。本系统采用的是上电复位,充电之后,RST被拉至高电平,单片机进入工作状态。

STC89C52中有一个用于构成内部正当其的放大器,引脚XTAL1和XTAL2分别是放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或者陶瓷谐振器构成自激振荡器,他们与电容C1,C2接在放大器的反馈电路中构成并联震荡电路,虽然电容没有一个严格的要求,但是电容的大小会轻微影响振荡频率的高低、温度稳定性以及振荡器工作的稳定性。

2.4 总体设计框图

按照系统功能的具体要求,在保证实现其功能的然础上,尽可能降低系统成本。总体设计方案围绕上述思想,初步确定系统的方案如图3.1所示。

温湿度传感LCD温湿度显示 单片机 蜂鸣器 键盘 图2.1 系统框图

从图中可以看出,系统有微处理器模块、1602字符液晶显示模块、DHT11传感器模块和报警模块组成。在方案设计中,遵循简洁至上的原则,因此所有的外围模块采用串行方式与微处理器模块接口。该设计以STC89C52系列单片机为控制核心,实现温湿度采集及显示的基本功能。在设计系统时,为了更好地采用模块化设计法,分步的设计各个单元功能模块,系统的硬件部分可以分为传感器的使用、单片机控制、1602液晶显示和实现报警四大部分。

5

基于单片机温湿度测量电路的设计

2.5 软件流程

根据温湿度监控系统功能,系统软件流程图如图3.2所示.

图2.2 系统软件流程图

6

基于单片机温湿度测量电路的设计

主程序流程图 2.3

开始 初始化 判断温度 延时 温度 温湿度测量 低于26℃ 高于30℃ 1602显示数据 蜂鸣器铃响 蜂鸣器铃响 结束 图2.3 主程序流程图.

7

基于单片机温湿度测量电路的设计

3 设计所需原件

3.1 单片机

STC89C52是STC公司生产的低功耗、高性能CMOS 的8位单片机,片内含4K的可编程的Flash只读程序存储器,器件采用STC公司的高密度、非易失性存储技术生产,兼容标准8051指令系统及引脚,它集Flash程序存储器既可在线编程(ISP),也可用传统方法进行编程及通用8位微处理器于单片机芯片中,STC公司的功能强大,低价位STC89C52单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制的领域。引脚图如下图2.1所示:

图3.1 STC89C52引脚图

STC89C52提供以下的功能标准:4K字节闪烁存储器,128字节随机存取数据存储器,2个16位定时/计数器,32个I/O口, 1个串行通信口,1个5向量两级中断结构,另外,STC89C52还可以进行0HZ的静态逻辑操作,并支持两种软件的节电模式,闲散方式停止中央处理器的工作,可允许随机存取数据存储器、定时/计数器、串行通信口及中断系统继续工作。掉电方式保存随机存取数

8

基于单片机温湿度测量电路的设计

据存储器中的内容,但震荡器停止工作并禁止其它所有部件的工作直到下一个复位,在STC89C51上新增加的功能使STC89C52性能有了较大提升,它的价格甚至更低,它的工作频率可达33MHz,ISP在线编程功能的优越性在于它不必要将芯片从工作状态下分离,特别是在改写存储器内的程序,这是一个相当方便简单的功能,由于它内部具有双工UART串行通道内部集成看门狗计时器,它具有全新的加密算法,大大加强的程序的保密性,有效的保护知识产权不被侵犯,它向下完全兼容51全部字系列产品。

3.2 温湿度传感器

温湿度模块DH11数字温湿传感器加湿器温湿度传感器随着科技的不断发展,汽车、空调、除湿器、烘干机等种类繁多的电器都已进入人们的日常生活,而这些电器设备很多都离不开对温度、湿度等环境因素的要求。因此,温度、湿度传感器用途越来越广泛。新一代的数字传感器不再需要外置的A D转换模块,并具有标准接口,使用方便,得到了越来越多的应用。DHT11作为一种新型的单总线温湿度数字传感器,具有更多的优点,它使系统设计更加简单,控制方便,易于实现。1 单总线通信简介 目前常用的微机与外设之间进行数据传输的串行总线主要有I2C总线、SPI总线和SCI总线。其中I2C总线以同步串行两线方式进行通信(1条时钟线,1条数据线),SPI总线则以同步串行三线方式进行通信(1条时钟线,1条数据输入线,1条数据输出线),而SCI总线是以异步方式进行通信的(1条数据输入线,1条数据输出线)。这些总线至少需要两条或两条以上的信号线。

DHT11传感器连接STC89C52系列单片机相对比较简单。单片机的P2.0口用来发收串行数据,即数据口。连接传感器的Pin2(单总线,串行数据)。由于测量范围电路小于20米,建议加一个5K的上拉电阻,因此在传感器的Pin2口与电源之间连接一个5K电阻。而传感器的电源端口Pin1和Pin4分别接单片的VDD和GND端。传感器的第三脚悬浮放置。

DHT11是数字型温湿度传感器,可直接以数字方式传输所采集的当前环境温湿度,DHT11采用的是单总线通信,因此只需将单片机的一个I/O端口与DHT11的通信接口连接就可以实现数据的采集和传送,相对于其他电路来说比较简单。DHT11是数字型温湿度传感器,可直接以数字方式传输所采集的当前环境温湿度,

9

基于单片机温湿度测量电路的设计

DHT11采用的是单总线通信,因此只需将单片机的一个I/O端口与DHT11的通信接口连接就可以实现数据的采集和传送,相对于其他电路来说比较简单。

作为一个数字温湿度传感器DHT11具有响应快速、抗干扰强、性价比高等优点,它的性能指标如下:湿度测量范围为20%~90%RH;湿度测量精度为±5%RH;温度测量范围为0~50 ℃,温度测量精度为±2℃,工作电压3.0~5.5 V,相应时间<5S,DHT1l采用3针单排引脚封装, 传感器通电后,需要等待1s,这是因为要越过不稳定的状态,在此期间不需发送指令,电源引脚(VDD,GND)之间可增加一个100nF 的电容,用以去耦滤波[7]。测量时最好让湿度传感器工作相同。

DATA 用于微处理器与DHT11之间的通讯和同步,采用单总线数据格式,一次 通讯时间4ms左右,数据分小数部分和整数部分,具体格式在下面说明,当前小数部分用于以后扩展,现读出为零.操作流程如下:一次完整的数据传输40bit,高位先出。数据格式:8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据+8bit校验和用户MCU发送一次开始信号后,DHT11从低功耗模式转换到高速模式,等待主机开始信号结束后,DHT11发送响应信号,送出40bit的数据,并触发一次信号采集,用户可选择读取部分数据.从模式下,DHT11接收到开始信号触发一次温湿度采集,如果没有接收到主机发送开始信号,DHT11不会主动进行温湿度采集.采集数据后转换到低速模式。

总线空闲状态为高电平,主机把总线拉低等待DHT11响应,主机把总线拉低必须大于18毫秒,保证DHT11能检测到起始信号。DHT11接收到主机的开始信号后,等待主机开始信号结束,然后发送80us低电平响应信号.主机发送开始信号结束后,延时等待20-40us后, 读取DHT11的响应信号,主机发送开始信号后,可以切换到输入模式,或者输出高电平均可, 总线由上拉电阻拉高。如图2.2所示。

图3.2 DHT11响应

10

基于单片机温湿度测量电路的设计

总线为低电平,说明DHT11发送响应信号,DHT11发送响应信号后,再把总线拉高80us,准备发送数据,每一bit数据都以50us低电平时隙开始,高电平的长短定了数据位是0还是1.格式见下面图示.如果读取响应信号为高电平,则DHT11没有响应,请检查线路是否连接正常.当最后一bit数据传送完毕后,DHT11拉低总线50us,随后总线由上拉电阻拉高进入空闲状态。如图2.3所示。

图3.3 DHT11响应

它的性能指标如下:湿度测量范围为20%~90%RH;湿度测量精度为±5%RH;温度测量范围为0~50 ℃,温度测量精度为±2℃,工作电压3.0~5.5 V,相应时间<5S,DHT1l采用3针单排引脚封装, 传感器通电后,需要等待1s,这是因为要越过不稳定的状态,在此期间不需发送指令,电源引脚(VDD,GND)之间可增加一个100nF 的电容,用以去耦滤波[7]。测量时最好让湿度传感器工作温度相同。图3.4所示:

11

基于单片机温湿度测量电路的设计

图3.4 DHT11传感器

3.3 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的点阵字符 (有些模块是 DL:高电平时为8位总线,低电平时为4位总线)。 指令7:字符发生器RAM地址设置 。 指令8:DDRAM地址设置 。 指令9:读出忙信号和光标地址。 BF为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙,模块就能接收相应的命令或者数据。 指令10:写数据 。 指令11:读数据 。 液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地

12

基于单片机温湿度测量电路的设计

址,也就是告诉模块在哪里显示字符如图 3.5所示:

图 3.5 显示模块

1062液晶显示模块是一个比较慢的显示器件,因此在执行指令之前要 首先确认模块的忙标志处于低电平,表示空闲,不然此指令失效,输入显示字符地址后会显示字符图2.6所示.

图3.6 液晶显示模块

13

基于单片机温湿度测量电路的设计

LCD1602主要技术参数:,如表3.1所示

表3.1 1602参数表

工作电压: 容量 最佳工作电压 工作电流 字符尺寸

4.5—5.5V 16×2个字符 5.0V 2.0mA 2.95×4.35(W×H)mm 液晶显示模块是一个慢显示器件,在执行每条指令之前要确认模块的忙标志为低电平,表示不忙,则此指令失效,要显示字符时要先输入显示字符地址,告诉模块在哪里现实了字符。软件流程图如图3.7所示:

图3.7 软件流程图

14

基于单片机温湿度测量电路的设计

3.4 蜂鸣器介绍

蜂鸣器是一种一体化结构的电子讯响器。采用电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电直流话机、定时器等电子产品中作发声器件。 蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。蜂鸣器在电路中用字母“H”或“HA”(旧标准用“FM”、“LB”、“JD”等)表示。

微型计算机控制系统中,为了安全起见,对于一些重要的参数或系统,都设定有紧急状态报警系统,以便于提醒操作人员注意,或者采取紧急措施,本设计采用把计算机采集的数据进行数据处理、标度变换、数字滤波之后,与该参数上下限与给定值进行比较,如果高于上限值则进行报警,否则就作为采样的正常值,进行显示[12]。

本设计采用峰鸣音报警电路。如图3.2所示。蜂鸣器额定电流≤30Ma,而对于STC89S51单片机,P3口的灌电流为15mA,由此可见,仅靠单片机的P3口电流是不能驱动蜂鸣器的,必须使用晶体管放大电路,为了使单片机的功率更小,所以使用PNP型晶体管,当外部环境的温度或者湿度超过预设值的时候,基级变为低电平,蜂鸣器导通鸣叫[11]。如图3.8所示:

图3.8 蜂鸣器电路

15

基于单片机温湿度测量电路的设计

3.5 晶振电路

单片机系统都有晶振,在单片机系统中晶振的作用非常大,全称叫做晶体振荡器,它结合单片机内部电路产生所需时钟频率,单片机晶振提供的时钟频率越高,那么单片机的运行速度就会越快,单片机的一切指令执行都是建立在单片机晶振所提供的时钟频率。在通常的工作条件下,普通的晶振频率的绝对精度可以达到百万分之五十,高级晶振精度更高,有些晶振还可以由外加的电压在一定范围内调整频率,称为压榨振荡器,在共振的状态下晶振用一种能把电能和机械能相互转化的晶体工作,以提供稳定,精确的单频振荡。

单片机晶振的作用是为系统提供及本周的时钟信号,通常一个系统共用一个晶振,以便于各部分保持同步,有些通讯系统的基频和射频使用不同的晶振,而是通过电子调整频率的方法保持同步。单片机STC89C52的晶振电路采用无源晶振,微调电容取22uf。图2.9即为蜂鸣器电路。

图3.9 晶振电路

16

基于单片机温湿度测量电路的设计

3.6 按键

按钮开关可以完成启动、停止、正反转、变速以及互锁等基本控制。通常每一个按钮开关有两对触点。每对触点由一个常开触点和一个常闭触点组成。当下按钮,两对触点同时动作,常闭触点断开,常开触点闭合。其电路如图2.9

图3.10 按键电路

17

基于单片机温湿度测量电路的设计

4 设计总结

4.1 传感器的选择

方案一 基于DHT11温湿度传感器和Visual Basic上位机界面的设计由于使所检测的温湿度更具有实际用途,我们决定将温湿度值和万年历一起以汉字的形式显示出来,这样就能实际应用在仓库检测中,工作人员能实时通过万年历来记录产品的温湿度值,并通过串口通信将数据传送到PC机上,管理人员就能“足不出户”地监测各个仓库的情况。通过所检测的温湿度值,我们能通过文字的形式实时显示三种报警状态:温报警、湿报警、温湿报警。

由于shtX系列的温湿度传感器价格在25-80元/个之间,而dht系列普遍较为便宜,一般在10元/个以下,故经过相关资料的查询,最终选择了性价比较高的dht11作为此次设计的温湿度传感器。有利就有弊,dht11然而在最为常用的电路仿真软件Proteus中都没有其仿真元件,也就是说只有直接通过硬件仿真来实现了,这无疑增加了设计的难度,因为直接通过硬件仿真并不能确保硬件焊接的电路没有一点错误,而用电路仿真软件Proteus就只要考虑程序的问题,大大减少了设计的困难,降低了难度。

4.2 具体设计的步骤。

在网上和图书馆查阅有关温湿度传感器的相关资料及有关参考程序; 结合有关dht11温湿度传感器的相关典型硬件连接电路来焊接网购的dht11元件,组成一个小型功能模块;

根据所查资料,编写相应程序,用能写汉字的1602液晶来即时显示检测传回的数据,然后就下载到硬件中不断调试程序直到传回的数据稳定显示为止;

考虑到数据的实时性,因此将液晶万年历也集成显示在1602液晶上,同时将温湿度和时间的信息显示出来。为了更好的管理仓库,设定了温湿度报警装置,当温度和湿度其中有一种超过设定的范围时就会使流水灯的一旁的四个灯全闪烁,温湿度分别各四个为一排灯,同时蜂鸣器滴答报警。当两者共同超过时就会同时报警。

同时也考虑到温湿度传感器的串口通信功能和在实际远程控制温湿度中的应用,又通过查阅相关书籍,自学了Visual Basic来用电脑的上位机界面显示

18

基于单片机温湿度测量电路的设计

1602液晶上温湿度数据,进行远程监控。

4.3 遇到的问题以及解决办法

步骤1:由于dht11远没有shtX系列的温湿度传感器应用广泛,因此查阅资料既困难又极其重要,因为这是对新事物从陌生到熟悉的过程。只有了解它,我们才能操作它,用它来为我们服务。最后将百度的相关信息查询完后终于苦尽甘来,一两个程序和元件资料包让我逐渐一点一点了解了它,操作它就指日可待了。

步骤2:在图4.1所示的电路图中,由于电路简单,我们直接用电烙铁将dht11焊接起来,没有用到软件制板。经过万用表的检测线路是否连接错误后,形成了温湿度检测的小模块。

图4.1 传感器电路图

步骤3、4:由于编写程序时,没有考虑到串口通信中传回PC的数据的十六进制与显示字符之间的数据处理关系,导致在串口助手软件中只显示了传回的最后一个十六进制数所对应的ASCⅡ的字符,找到问题的解决关键所在后,经过数的分位与字符显示后,成功的显示了传回的温度、湿度的数据,让我们距离成功只差一小步了。接下来的任务就是显示在12864液晶上,根据之前单独在其上显示过液晶万年历的基础,知道只要将dht11检测的数据进行相应处理后并且与液晶万年历的显示集成一起送显示就行了。理论虽简单,但实际在下载到芯片中检测现象时,我们发现分别单独显示两者的数据没有问题,但集成在一块显示不久

19

基于单片机温湿度测量电路的设计

就会花屏的现象,问题出在刷新汉字时,指针光标的位置修改错误所导致的。之后经过重新写回指针后就达到了较为满意的效果。在报警程序的设置上,主要解决蜂鸣器报警间隔和流水灯闪烁的时间匹配问题,让两者现象统一。

步骤5:根据查阅相关Visual Basic的书籍后知道,只要将传到串口助手上的数据经过在Visual Basic的相关控件中编写代码就能将数据通过Visual Basic软件显示出来,并且能实现高层管理人员对工厂运作情况的一个远程控制。在具体编写中,学习到由于程序中的一个MSComm控件只能对应一个串行端口,故在绘制VB的界面图时,只能在一个MSComm中显示温度与湿度两个数据,这就使得在两个MSComm中分别显示温度与湿度成为泡影,因为只有一个串口上传,但又要很明显的区分出来,而不能将两者紧挨着显示以免误看,故将MSComm控件的MultiLine属性设置为Ture即可,这样方框就调整为刚好在两行分别显示数据的形式便达到了目的。

4.4 DHT11的Visual C++上位机界面的设计

由于DHT11的温度误差为±2℃,仓库温度要求不高因此我们设计了适用范围一般的DHT11来检测温度和湿度,避免了精度不高,提高了检测的准确性。

遇到的问题和解决的方法:

由于要将温度值和液晶万年历同时在12864的液晶上显示,这就会使两者的显示数据出现混叠的现象,因为液晶万年历每一秒的刷新频率和DHT11的检测数据刷新频率不一致所导致的,为此我们只要检测的温度值每一秒钟刷新一次即可。

20

基于单片机温湿度测量电路的设计

结束语

三年的大学生活就快走入尾声,我们的校园生活就要画上句号,心中是无尽的难舍与眷念。从这里走出去,对我的人生来说,将是踏上新的征程,要把所学的知识应用到实际工作中去。

踉踉跄跄地忙碌了几个月,我的毕业设计课题也终将告一段落。本次设计作业中是以电子系统为主要方向来定方案的,是电子和电工的结合,使得设计更加有挑战性和先进性。更能增加和提高我们的设计能力。

本设计中的温湿度测量仪可以显示温湿度。对其的使用方便,单片的控制和电路的改造使其在普通测量仪上大大增加优势,而且外形体积也没有增大或改变。在市场不断要求产品的功能多元化和使用方便、人性化中,经过这样改进和更具有潜力的产品无疑是风和要求的。基本达到预期的效果,虚荣的成就在没人的时候总会冒上心头,但由于能力和时间的关系,总是觉得有很多不尽人意的地方,譬如,功能不全,外观粗糙等。可是我又会有点自恋的安慰自己:做一件事情,不必过于在乎最终的结果,可贵的是过程中的收获,以此来安抚我尚没平复的心。毕业设计,也是我在大学生涯交上的最后一个作业了。

回首这几年,取得了一些成绩,生活中有快乐也有艰辛。感谢老师对我孜孜不倦的教诲,对我成长的关心和爱护。学友情深,情同姐妹,三年的风风雨雨我们一同走过,充满着关爱,给我留下了值得珍藏的最美好的记忆。

在我的十几年求学历程里,离不开父母的鼓励和支持,是他们辛勤的劳作,无私的付出,为我创造良好的学习条件,我才能顺利完成学业,感激他们一直以来对我的富阳与培育。

最后,我要特别感谢赵老师。是他在我毕业的最后关头给了我巨大的帮助与鼓励,使我能够顺利完成毕业设计,在此表示衷心的感谢。张老师认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我受益匪浅。他无论在理论上还是实践中,都给予我很大的帮助,使我得到不少的提高这对于我以后的工作和学习都有一种巨大的帮助,感谢他耐心的辅导。

21

基于单片机温湿度测量电路的设计

致 谢

在本次论文设计过程中,赵明冬老师对该论文从选题,构思到最后定稿的各个环节给予细心指引与教导,使我得以最终完成毕业论文设计。在学习中,老师严谨的治学态度、丰富渊博的知识、敏锐的学术思维、精益求精的工作态度以及侮人不倦的师者风范是我终生学习的楷模,导师们的高深精湛的造诣与严谨求实的治学精神,将永远激励着我。这三年中还得到众多老师的关心支持和帮助。在此,谨向老师们致以衷心的感谢和崇高的敬意!

最后,我要向百忙之中抽时间对本文进行审阅,评议和参与本人论文答辩的各位老师表示感谢。

22

基于单片机温湿度测量电路的设计

参考文献

[1] 余发山 单片机原理及应用技术,徐州:中国矿业大学出版社,2003 [2] 杨刚,周群.电子系统设计与实践.电子工业出版社.2004

[3] 涂时亮,张友德.单片微机控制技术.清华大学出版社.1994:86-87 146-147 [4] 《融会贯通 Protel99电路设计》 弘道工作室 北京 人民交通出版设,

2000.

[5] 《单片机原理及接口技术实验》 朱定华 北京 北方交通大学出版社2002.11 [6] 陈明荧.8051单片机课程设计实训教材[M]. 北京:清华大学出版社,

2003.

[7] 徐新艳.单片机原理、应用与实践[M]. 北京:高等教育出版社,2005. [8] 吴金戌,沈庆阳,郭庭吉.8051单片机实践与应用[M]. 北京:清华大学出版社,

[9]V. Yu. Teplov,A. V. Anisimov. Thermostatting System Using a Single-Chip Microcomputer

and Thermoelectric Modules Based on the Peltier Effect[J] ,2002

[10] Yeager Brent.How to troubleshoot your electronic scale[J].. Powder and Bulk Engineering.

1995

[11] Meehan Joanne,Muir Lindsey.SCM in Merseyside SMEs:Benefits and barriers[J].. TQM

Journal. 2008

23

基于单片机温湿度测量电路的设计

附 录

附录1

24

基于单片机温湿度测量电路的设计

附录2.源程序

#include #include #define uint unsigned int #define uchar unsigned char #include\#include

uchar temp[] =\设置 的湿度值显示 uchar temp_s[] =\//实时湿度显示 sbit sw3=P1^5; //按键定义 sbit sw1=P1^3; sbit sw2=P1^4; sbit baojing=P3^3; //sbit led=P3^5; uchar set; //变量定义 uchar num1; uchar getdata=55; uint shangxian=34; uchar temp_h,temp_t; void conv(); yunxing(); void key(); void kongzhi();

void zhuanhuan()//扫描数据转换 {

temp[7]=shangxian/10+0x30; temp[8]=shangxian+0x30; temp_s[3]=temp_h/10+0x30; temp_s[4]=temp_h+0x30;

25

基于单片机温湿度测量电路的设计

temp_s[3]=temp_h/10+0x30; temp_s[4]=temp_h+0x30; temp_s[12]=temp_t/10+0x30;

temp_s[13]=temp_t+0x30; temp_s[14]=0xdf; temp_s[15]='C'; }

//------------------------------------------------------------ main() {

baojing=0;

delay(500); baojing=1; // led=0;

LCD_Initial(); //液晶初始化 while(1) {

RH();

temp_t=U8T_data_H; temp_h=U8RH_data_H;

zhuanhuan(); key();// 按键检测 kongzhi();

GotoXY(0,0);//显示起始位置 Y=0,第一行,Y=1 第二行//显示第一行 Print(temp);// 内容

GotoXY(0,1);//显示起始位置 Y=0,第一行,Y=1 第二行 显示第二行 Print(temp_s);// 内容

26

基于单片机温湿度测量电路的设计

delay(1);

//getdate= GetADCResult(0)*3.9; } }

void key() //按键检测程序 {

if(set==1)//上限设置

{

if(sw1==0) {

delay(50);

if(sw1==0)

//上限 减功能

{ //while(sw1==0);

if(shangxian>0) shangxian--; else( shangxian=255); } }

if(sw2==0) //上限 加功能 {

delay(50); if(sw2==0)

{ //while(sw2==0) ;

if(shangxian<255) shangxian++;

else( shangxian=0);

}

}

}

27

基于单片机温湿度测量电路的设计

}

void kongzhi() //控制报警 {

if((temp_h>=shangxian)|(temp_t>32)) //此处 设定预设温度 { //led=1; num1++; if(num1>=20) { num1=0;

baojing=~baojing; } }

else {baojing=1; } } DHT11

传感器接受和发送信息,然后将接收来的信息作出相应的判断和处理,然后反馈到显示器。

#include #include //

aem

typedef unsigned char U8; /* defined for unsigned 8-bits integer variable

无符号8位整型变量 */

typedef signed char S8; /* defined for signed 8-bits integer variable

有符号8位整型变量 */

typedef unsigned int U16; /* defined for unsigned 16-bits integer variable

无符号16位整型变量 */

28

基于单片机温湿度测量电路的设计

typedef signed int S16; /* defined for signed 16-bits integer variable

有符号16位整型变量 */

typedef unsigned long U32; /* defined for unsigned 32-bits integer variable

无符号32位整型变量 */

typedef signed long S32; /* defined for signed 32-bits integer variable

有符号32位整型变量 */

typedef float F32; /* single precision floating point variable (32bits) 单精度浮点数(32位长度) */

typedef double F64; /* double precision floating point variable (64bits) 双精度浮点数(64位长度) */ //

#define uchar unsigned char #define uint unsigned int

#define Data_0_time 4 //相当于用Data_0_time代替4.

//----------------------------------------------//

//----------------IO口定义区--------------------// //----------------------------------------------// sbit DQ = P3^0 ;

//----------------------------------------------//

//----------------定义区--------------------// //----------------------------------------------// U8 U8FLAG,k; U8 U8count,U8temp;

U8 U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;

29

基于单片机温湿度测量电路的设计

U8

U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;

U8 U8comdata;

U8 outdata[5]; //定义发送的字节数 U8 indata[5]; U8 count, count_r=0; U16 U16temp1,U16temp2; //以上为变量的定义. void COM(void);

void Delay2(U16 j) //延时函数 { U8 i;

for(;j>0;j--) { }

for(i=0;i<27;i++);

}

void Delay_10us(void) //延时10us的延时函数. { U8 i; i--; i--; i--;

i--; i--; i--; }

30

基于单片机温湿度测量电路的设计

void COM(void) {

U8 i;

for(i=0;i<8;i++) 中.

} }

//-------------------------------- //-----湿度读取子程序 ------------ //-------------------------------- //----以下变量均为全局变量--------

//----温度高8位== U8T_data_H------

{

U8FLAG=2;

while((!DQ)&&U8FLAG++);

Delay_10us();

Delay_10us();

Delay_10us(); U8temp=0;

if(DQ)U8temp=1;

U8FLAG=2;

while((DQ)&&U8FLAG++);

//超时则跳出for循环 if(U8FLAG==1)break;

//判断数据位是0还是1

// 如果高电平高过预定0高电平值则数据位为 1 U8comdata<<=1; //左移1位

U8comdata|=U8temp; //U8comdata与U8temp相或,结果保存在U8comdata

//----温度低8位== U8T_data_L------

31

基于单片机温湿度测量电路的设计

//----湿度高8位== U8RH_data_H----- //----湿度低8位== U8RH_data_L----- //----校验 8位 == U8checkdata----- //----调用相关子程序如下---------- //---- Delay();, Delay_10us();,COM(); //--------------------------------

void RH(void)

{

//主机拉低18ms

DQ=0;

Delay2(180); DQ=1;

//总线由上拉电阻拉高 主机延时20us Delay_10us(); Delay_10us(); Delay_10us(); Delay_10us();

//主机设为输入 判断从机响应信号 DQ=1;

//判断从机是否有低电平响应信号 如不响应则跳出,响应则向下运行 if(!DQ) { U8FLAG=2;

//判断从机是否发出 80us 的低电平响应信号是否结束 while((!DQ)&&U8FLAG++); U8FLAG=2;

//判断从机是否发出 80us 的高电平,如发出则进入数据接收状态 while((DQ)&&U8FLAG++); //数据接收状态

//T !

COM(); //调用COM函数

32

基于单片机温湿度测量电路的设计

U8RH_data_H_temp=U8comdata;

COM();

U8RH_data_L_temp=U8comdata;

COM();

U8T_data_H_temp=U8comdata; COM();

U8T_data_L_temp=U8comdata; COM();

U8checkdata_temp=U8comdata; DQ=1; //数据校验

U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp);

if(U8temp==U8checkdata_temp) {

U8RH_data_H=U8RH_data_H_temp; U8RH_data_L=U8RH_data_L_temp;

U8T_data_H=U8T_data_H_temp;

U8T_data_L=U8T_data_L_temp; U8checkdata=U8checkdata_temp; }//对数据作出相应的处理与运算. } }

33

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

Top