基于单片机的温湿度检测及显示.docx
《基于单片机的温湿度检测及显示.docx》由会员分享,可在线阅读,更多相关《基于单片机的温湿度检测及显示.docx(31页珍藏版)》请在冰豆网上搜索。
![基于单片机的温湿度检测及显示.docx](https://file1.bdocx.com/fileroot1/2023-5/22/0a0e8e0e-066d-427a-984a-70034d9be272/0a0e8e0e-066d-427a-984a-70034d9be2721.gif)
基于单片机的温湿度检测及显示
1设计的意义
最近几年来,随着科技的飞速开展,单片机领域正在不断的走向社会各个角落,还带动传统控制检测日新月异更新。
在实时运作和自动控制的单片机应用到系统中,单片机如今是作为一个核心部件来使用,仅掌握单片机方面知识是不够的,还应根据其具体硬件构造,以及针对具体应用对象特点的软件结合,加以完善。
“单片机原理及应用课程设计〞是电子类专业的学科根底科,它是继“汇编语言程序设计〞,“接口技术〞等课程之后开出的实践环节课程。
与此同时,现代社会越来越多的场所会涉及到温度与湿度并将其显示。
由于温度与湿度不管是从物理量本身还是在实际人们的生活中都有着密切的关系,例如:
冬天温度为18至25℃,湿度为30%至80%;夏天温度为23至28℃,湿度为30%至60%。
在此X围内感到舒适的人占95%以上。
在装有空调的室内,室温为19至24℃,湿度为40%至50%时,人会感到最舒适。
如果考虑到温、湿度对人思维活动的影响,最适宜的室温度应是工作效率高。
18℃,湿度应是40%至60%,此时,人的精神状态好,思维最敏捷。
所以,本课程设计就是通过单片机驱动LCD1602,液晶显示温湿度,通过此设计,可以发现本设计有一定的扩展性,而且可以作为其他有关设计的根底。
2设计原理
2.1设计目标
2.1.1根本功能
检测温度、湿度
显示温度、湿度
过限报警
2.1.2主要技术参数
温度检测X围:
-30℃至+55℃
测量精度:
2℃
湿度检测X围:
20%-90%RH
检测精度:
5%RH
显示方式:
温度:
四位显示湿度:
四位显示
报警方式:
三极管驱动的蜂鸣器报警
2.2设计原理
温湿度监测系统要满足以下条件:
温湿度监测系统能完成数据采集和处理、显示、串行通信、输出控制信号等多种功能。
由数据采集、数据调理、单片机、数据显示等4个大的局部组成。
该测控系统具有实时采集〔检测粮库内的温湿度〕、实时显示〔对监测到的进展显示〕、实时警报〔根据监测的结果,超出预设定的值的进展蜂鸣警告〕的功能。
传感器是实现测量首要环节,是监测系统的关键部件,如果没有传感器对原始被测信号进展准确可靠的捕捉和转换,一切准确的测量和控制都将无法实现。
工业生产过程的自动化测量和控制,几乎主要依靠各种传感器来检测和控制生产过程中的各种参量,使设备和系统正常运行在最正确状态,从而保证生产的高效率和高质量。
一般温湿度控制系统中的温湿度测量均采用热敏电阻与湿敏电容,这种传统的模拟式温湿度传感器一般都需要设计信号调理电路并经过复杂的校准和标定过程,因此测量精度难以保证,且在线性度、重复性、互换性等方面也存在一定问题。
这种传感器只适合那些测量点数较少,对精度要求不高的场合。
因此设计出一款精度高、稳定性好、本钱低的温湿度检测控制系统将具有一定的市场。
2.2.1温湿度传感器的选择
DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。
它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。
传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。
因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。
每个DHT11传感器都在极为准确的湿度校验室中进展校准。
校准系数以程序的形式储存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。
单线制串行接口,使系统集成变得简易快捷。
超小的体积、极低的功耗,信号传输距离可达20米以上,使其成为各类应用甚至最为苛刻的应用场合的最正确选那么。
产品为4针单排引脚封装。
连接方便,特殊封装形式可根据用户需求而提供。
2.2.2信号采集通道的选择
在本设计系统中,温度输入信号为4路的模拟信号,这就需要多通道构造采用多路分时的模拟量输入通道。
这种构造的模拟量通道特点为:
对ADC、S/H要求高。
处理速度慢。
硬件简单,本钱低。
软件比拟复杂。
如图1所示:
2.2.3系统的总体框图
系统的总体设计框图如图2所示:
本设计由信号采集、信号分析和信号处理三个局部组成的。
〔一〕信号采集由DHT11温湿度传感器和多路模式选择开关组成;
〔二〕信号分析由A/D转换器和单片机80C51组成;
〔三〕信号处理由串行口LCD显示器和报警系统等组成。
3主要芯片简介
3.1DHT11数字传感器
3.1.1主要特性
DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。
它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。
传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。
因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。
每个DHT11传感器都在极为准确的湿度校验室中进展校准。
校准系数以程序的形式储存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。
单线制串行接口,使系统集成变得简易快捷。
超小的体积、极低的功耗,信号传输距离可达20米以上,使其成为各类应用甚至最为苛刻的应用场合的最正确选那么。
产品为4针单排引脚封装。
连接方便,特殊封装形式可根据用户需求而提供。
3.1.2应用领域
该DHT11可以用于暖通空调、测试及检测设备、汽车、数据记录器、消费品、自动控制、湿度调节器及医疗等应用领域。
3.1.3引脚图
DHT11有四个引脚,3号引脚一般悬空,如图3所示。
DHT11的供电电压为3—5.5V。
传感器上电后,要等待1s以越过不稳定状态在此期间无需发送任何指令。
电源引脚〔VDD,GND〕之间可增加一个100nF的电容,用以去耦滤波。
建议连接线长度短于20米时用5K上拉电阻,大于20米时根据实际情况使用适宜的上拉电阻。
3.1.4封装信息
封装图如图4所示:
3.2液晶显示器LCD1602
在日常生活中,我们对液晶显示器并不陌生。
液晶显示模块已作为很多电子产品的通过器件,如在计算器、万用表、电子表及很多家用电子产品中都可以看到,显示的主要是数字、专用符号和图形。
在单片机的人机交流界面中,一般的输出方式有以下几种:
发光管、LED数码管、液晶显示器。
发光管和LED数码管比拟常用,软硬件都比拟简单,在前面章节已经介绍过,在此不作介绍,本章重点介绍字符型液晶显示器的应用。
在单片机系统中应用晶液显示器作为输出器件有以下几个优点:
〔一〕显示质量高
〔二〕数字式接口
〔三〕体积小、重量轻
〔四〕功耗低
3.2.1液晶显示原理
液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进展控制,有电就有显示,这样即可以显示出图形。
液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、PDA移动通信工具等众多领域。
3.2.2液晶显示器的分类
液晶显示的分类方法有很多种,通常可按其显示方式分为段式、字符式、点阵式等。
除了黑白显示外,液晶显示器还有多灰度有彩色显示等。
如果根据驱动方式来分,可以分为静态驱动〔Static〕、单纯矩阵驱动〔SimpleMatrix〕和主动矩阵驱动〔ActiveMatrix〕三种。
3.2.3液晶显示器各种图形的显示原理
首先是液晶的线段的显示。
点阵图形式液晶由M×N个显示单元组成,假设LCD显示屏有64行,每行有128列,每8列对应1字节的8位,即每行由16字节,共16×8=128个点组成,屏上64×16个显示单元与显示RAM区1024字节相对应,每一字节的内容和显示屏上相应位置的亮暗对应。
例如屏的第一行的亮暗由RAM区的000H——00FH的16字节的内容决定,当〔000H〕=FFH时,那么屏幕的左上角显示一条短亮线,长度为8个点;当〔3FFH〕=FFH时,那么屏幕的右下角显示一条短亮线;当〔000H〕=FFH,〔001H〕=00H,〔002H〕=00H,......〔00EH〕=00H,〔00FH〕=00H时,那么在屏幕的顶部显示一条由8段亮线和8条暗线组成的虚线。
这就是LCD显示的根本原理。
其次是液晶字符的显示。
用LCD显示一个字符时比拟复杂,因为一个字符由6×8或8×8点阵组成,既要找到和显示屏幕上某几个位置对应的显示RAM区的8字节,还要使每字节的不同位为“1〞,其它的为“0〞,为“1〞的点亮,为“0〞的不亮。
这样一来就组成某个字符。
但由于内带字符发生器的控制器来说,显示字符就比拟简单了,可以让控制器工作在文本方式,根据在LCD上开场显示的行列号及每行的列数找出显示RAM对应的地址,设立光标,在此送上该字符对应的代码即可。
3.2.4LCD1602的根本参数及引脚功能
1602LCD分为带背光和不带背光两种,基控制器大局部为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差异,两者尺寸差异如下列图5所示:
图5LCD1602尺寸图
LCD1602的主要技术参数:
1、显示容量:
16×2个字符
2、芯片工作电压:
4.5—5.5V
3、工作电流:
2.0mA(5.0V)
4、模块最正确工作电压:
5.0V
5、字符尺寸:
2.95×4.35(W×H)mm
引脚功能说明
LCD1602采用标准的14脚〔无背光〕或16脚〔带背光〕接口,各引脚接口说明如图6所示:
编号
符号
引脚说明
编号
符号
引脚说明
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
背光源负极
图6引脚接口说明
图6:
引脚接口说明表
第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脚:
背光源负极。
3.2.5LCD1602的指令说明及时序
1602液晶模块内部的控制器共有11条控制指令,如图7所示:
序号
指令
RS
R/W
D7
D6
D5
D4
D3
D2
D1
D0
1
清显示
0
0
0
0
0
0
0
0
0
1
2
光标返回
0
0
0
0
0
0
0
0
1
*
3
置输入模式
0
0
0
0
0
0
0
1
I/D
S
4
显示开/关控制
0
0
0
0
0
0
1
D
C
B
5
光标或字符移位
0
0
0
0
0
1
S/C
R/L
*
*
6
置功能
0
0
0
0
1
DL
N
F
*
*
7
置字符发生存贮器地址
0
0
0
1
字符发生存贮器地址
8
置数据存贮器地址
0
0
1
显示数据存贮器地址
9
读忙标志或地址
0
1
BF
计数器地址
10
写数到CGRAM或DDRAM〕
1
0
要写的数据内容
11
从CGRAM或DDRAM读数
1
1
读出的数据内容
图7控制命令表
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的点阵字符。
指令7:
字符发生器RAM地址设置。
指令8:
DDRAM地址设置。
指令9:
读忙信号和光标地址BF:
为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。
指令10:
写数据。
指令11:
读数据。
3.2.6LCD1602的RAM地址映射及标准字库表
液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否那么此指令失效。
要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,图8是1602的内部显示地址。
例如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢.这样不行,因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是01000000B〔40H〕+10000000B(80H)=11000000B(C0H)。
在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干预。
每次输入指令前都要判断液晶模块是否处于忙的状态。
1602液晶模块内部的字符发生存储器〔CGROM〕已经存储了160个不同的点阵字符图形,这些字符有:
阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比方大写的英文字母“A〞的代码是01000001B〔41H〕,显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A〞。
3.2.7硬件原理图
1602液晶显示模块可以和单片机AT89C51直接接口,电路如图9所示:
3.3单片机89C51
为了设计此系统,我们采用了80C51单片机作为控制芯片。
89C51是MCS-51系列单片机中CHMOS工艺的一个典型品种;其它厂商以8951为基核开发出的CMOS工艺单片机产品统称为89C51系列。
该系列单片机是采用高性能的静态89C51设计由先进CMOS工艺制造并带有非易失性Flash程序存储器全部支持12时钟和6时钟操作P89C51X2和P89C52X2/54X2/58X2分别包含128字节和256字节RAM32条I/O口线3个16位定时/计数器6输入4优先级嵌套中断构造1个串行I/O口可用于多机通信I/O扩展或全双工UART以及片内振荡器和时钟电路。
此外,由于器件采用了静态设计,可提供很宽的操作频率X围,频率可降至0。
可实现两个由软件选择的节电模式,空闲模式和掉电模式,空闲模式冻结CPU但RAM定时器,串口和中断系统仍然工作,掉电模式保存RAM的内容,但是冻结振荡器导致所有其它的片内功能停顿工作。
由于设计是静态的时钟可停顿而不会丧失用户数据,运行可从时钟停顿处恢复。
3.3.189C51的根本构造
89C51的微处理器〔CPU〕;
运算器;
累加器ACC;
存放器B;
程序状态字存放器PSW;
控制器;
程序计数器PC;
指令存放器IR;
定时与控制逻辑;
89C51的片内存储器;
内部ROM容量4K字节;
内部RAM容量128字节;
89C51的I/O口及功能单元;
四个8位的并行口,即P0~P3。
它们均为双向口,既可作为输入,又可作为输出。
每个口各有8条I/O线;
有一个全双工的串行口〔利用P3口的两个引脚P3.0和P3.1〕;
有2个16位的定时/计数器;
有1套完善的中断系统;
89C51的特殊功能存放器〔SFR〕;
低功耗的闲置和掉电模式;
片内振荡器和时钟电路;
3.3.289C51的引脚图
89C51的引脚图如图10所示:
89C51的制作工艺为CMOS,采用40管脚双列直插DIP封装,引脚说明如下:
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进展校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进展存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进展读写时,P2口输出其特殊功能存放器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流〔ILL〕这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下所示:
P3.0RXD〔串行输入口〕;
P3.1TXD〔串行输出口〕;
P3.2/INT0〔外部中断0〕;
P3.3/INT1〔外部中断1〕;
P3.4T0〔记时器0外部输入〕;
P3.5T1〔记时器1外部输入〕;
P3.6/WR〔外部数据存储器写选通〕;
P3.7/RD〔外部数据存储器读选通〕;
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想制止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE制止,置位无效。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,那么在此期间外部程序存储器〔0000H-FFFFH〕,不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源〔VPP〕。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
3.3.389C51的存储器配置
89C51的存储器配置如图11所示:
对于程序存储器,与ROM密切相关的两个引脚是地址锁存允许信号端和外部程序存储器允许输出信号端。
当ROM容量不够时,尽量选择高容量存储器空间的单片机,如89C52,89C54,89C58等,应防止外扩程序存储器,因为会增加硬件负担,通过16位PC寻址,最大可寻址64kB地址空间。
数据存储器用于存放运算中间的结果、数据暂存、缓冲、标志位、待测程序等功能。
片内的128B的RAM地址为00H~7FH,供用户做RAM用,但是在这中间的前32单元,00H~1FH即引用地址寻址做用户RAM用,常常做工作存放器区,分做四组,每组由8个单元组成通用存放器R0~R7,任何时候都由其中一组作为当前工作存放器,通过RS0,RS1的内容来决定选择哪一个工作存放器。
低128字节中的20H~2FH共16字节可用位寻址方式访问各位,共128个位地址,30H~7FH共80个单元为用户RAM区,作堆栈或数据缓冲用,片内RAM不够用时,须扩展片外数据存储器。
此时单片机通过P2口和P0口选出6位地址,使用ALE作低8位的锁存信号,再由P0口写入或读出数据。
写时用
,读时用
做外部数据存储器的选通信号。
3.3.489C51的工作模式
89C51有四种工作模式:
模式0,模式1,模式2,模式3。
模式0:
选择定时器的高8位和低5位组成一个13位定时器/计数器。
TL低5位溢出时向TH进位,TH溢出时向中断标志位TF进位,并申请中断。
定时时间t=(213-初值)×振荡周期×12;计数长度位213=8192个外部脉冲。
模式1:
与模式0的唯一差异是存放器TH和TL以全部16位参与操作。
定时时间t=(216-初值)×振荡周期×12;计数长度位216=65536个外部脉冲。
模式2:
把TL0和TL1配置成一个自动重装载的8位定时器/计数器。
TL用作8位计数器,TH用以保存初值。
TL计数溢出时不仅使TF0置1,而且还自动将TH中的内容重新装载到TL中。
定时时间t=(28-初值)×振荡周期×12;计数长度位28=256个外部脉冲。
模式3:
对T0和T1不大一样。
假设设T0位模式3,TL0和TH0被分为两个相互独立的8位计数器。
TL0为8位计数器,功能与模式0和模式1一样,可定时可计数。
TH0仅用作简单的内部定时功能,它占用了定时器T1的控制位TR1和中断标志位TF1,启动和关闭仅受TR1控制。
定时器T1无工作模式3,但T0在工作模式3时T1仍可设置为0~2。
3.3.589C51的系统时钟设计
时钟电路是用来产生89C51单片机工作时所必须的时钟信号,89C51本身就是一个复杂的同步时序电路,为保证工作方式的实现,89C51在唯一的时钟信号的控制下严格的按时序执行指令进展工作,时钟的频率影响单片机的速度和稳定性。
通常时钟由于两种形式:
内部时钟和外部时钟。
我们系统采用内部时钟方式来为系统提供时钟信号。
89C51内部有一个用于构成振荡器的高增益反向放大器,该放大器的输入输出引脚为XTAL1和XTAL2,它们跨接在晶体振荡器和用于微调的电容,便构成了一个自鼓励振荡器。
电路中的C1、C2的选择在30PF左右,但电容太小会影响振荡的频率、稳定性和快速性。
晶振频率为在1.2MHZ~12MHZ之间,频率越高单片机的速度就越快,但对存储器速度要求就高。
为了提高稳定性我们采用温度稳定性好的NPO电容,采用的晶振频率为12MHZ。
时钟电路如图12所示:
4硬件与软件
4.1硬件设计
4.1.1硬件要求
根据设计要求确定了系统