湿度测试器带计时器毕业设计论文Word格式.docx
- 文档编号:21309479
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:53
- 大小:1.16MB
湿度测试器带计时器毕业设计论文Word格式.docx
《湿度测试器带计时器毕业设计论文Word格式.docx》由会员分享,可在线阅读,更多相关《湿度测试器带计时器毕业设计论文Word格式.docx(53页珍藏版)》请在冰豆网上搜索。
2.2设计步骤
基于单片机的温湿度控制系统的设计步骤如下:
掌握基于AT89c52单片机测温控制系统的基本原理和各部分性能;
确定系统总体设计框图,合理划分模块,确定每个模块的组成以及各个模块之间的关系;
运用protel99SE软件完成系统的原理图设计,PCB设计;
将画好的PCB制作电路板,并焊接上元件进行调试;
运用KeiluVision4软件完成系统各模块的软件设计,并进行调试;
将调试好的代码烧入做好的电路板中,进行硬软调试。
3系统各模块的硬件设计
本系统主要以AT89S52单片机为核心,组成一个集湿度的采集、处理、显示、自动控制为一体的闭环控制系统,其原理框图如图3.1所示。
图中硬件组成主要由单片机最小系统、湿度采集、实时时钟、显示、按键及控制部分构成,硬件部分还另外包含模拟室温大棚环境的电路板。
图3.1系统原理框图
温湿度传感器负责采集温度和湿度数据,实时时钟给单片机提供时钟基准。
单片机不断读取2个温湿度传感器的数据并对之进行滤波处理,当发现湿度超过上限或下限值时立刻报警,若是超过上限值在报警的同时还会启动风扇进行除湿。
每经过一个采样周期的时间,单片机将数据存储以供查询,计算10个采样周期内的湿度平均值。
按键和显示部份构成系统的人机接口,使用者可以通过按键进行设定上下限值、设定系统时间、设定采样周期和查询历史湿度等操作。
3.1单片机最小系统
3.1.1单片机AT89S52
本设计的单片机采用常用的AT89S52。
AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
它使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
AT89S52具有以下标准功能:
8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
AT89S52的各端口说明如下:
P0口:
P0口是一个8位漏极开路的双向I/O口。
作为输出口,每位能驱动8个TTL逻辑电平。
对P0端口写“1”时,引脚用作高阻抗输入。
当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。
在这种模式下,P0具有内部上拉电阻。
在flash编程时,P0口也用来接收指令字节;
在程序校验时,输出指令字节。
程序校验时,需要外部上拉电阻。
P1口:
P1口是一个具有内部上拉电阻的8位双向I/O口,p1输出缓冲器能驱动4个TTL逻辑电平。
对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和定时器/计数器2的触发输入(P1.1/T2EX)。
在flash编程和校验时,P1口接收低8位地址字节。
P2口:
P2口是一个具有内部上拉电阻的8位双向I/O口,p2输出缓冲器能驱动4个TTL逻辑电平。
对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX@DPTR)时,P2口送出高八位地址。
在这种应用中,P2口使用很强的内部上拉发送1。
在使用8位地址(如MOVX@RI)访问外部数据存储器时,P2口输出P2锁存器的内容。
在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。
P3口:
P3口是一个具有内部上拉电阻的8位双向I/O口,p2输出缓冲器能驱动4个TTL逻辑电平。
对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
P3口亦作为AT89S52特殊功能(第二功能)使用。
在flash编程和校验时,P3口也接收一些控制信号。
RST:
复位输入。
晶振工作时,RST脚持续2个机器周期高电平将使单片机复位。
看门狗计时完成后,RST脚输出96个晶振周期的高电平。
特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。
DISRTO默认状态下,复位高电平有效。
ALE/PROG:
地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。
在flash编程时,此引脚(PROG)也用作编程输入脉冲。
在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。
然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。
如果需要,通过将地址为8EH的SFR的第0位置“1”,ALE操作将无效。
这一位置“1”,ALE仅在执行MOVX或MOVC指令时有效。
否则,ALE将被微弱拉高。
这个ALE使能标志位(地址为8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。
PSEN:
外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。
当AT89S52从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN将不被激活。
EA/VPP:
访问外部程序存储器控制信号。
为使能从0000H到FFFFH的外部程序存储器读取指令,EA必须接GND。
为了执行内部程序指令,EA应该接VCC。
在flash编程期间,EA也接收12伏VPP电压。
XTAL1:
振荡器反相放大器和内部时钟发生电路的输入端。
XTAL2:
振荡器反相放大器的输出端。
VCC:
电源;
GND:
地。
3.1.2单片机及其外围接口电路
本设计的单片机最小系统主要包括复位电路和晶振电路以及单片机本身,其电路如图3.2所示。
图3.2单片机最小系统
AT89S52单片机是高电平复位,当复位引脚(REST)上持续2个机器周期高电平时,单片机复位。
C5和R8组成单片机的上电复位电路。
上电时,电源通过R8给C5充电,会在R8上形成高脉冲,使得单片机复位。
按键S3用于单片机手动复位,当S3按下时,复位引脚接VCC,使得单片机复位。
CY1、C6和C7组成晶体振荡电路,给单片机提供电钟。
CY1是12MHz晶振,C6和C7对晶振的振荡频率进行微调,微调电容取27pF。
由于AT89S52的P0口是开漏极输出,不能输出有效的高电平,须加排阻上拉方能使用。
3.2温湿度采集模块
3.2.1湿度传感器DHT11
DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传
感器。
它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高
的可靠性与卓越的长期稳定性。
传感器包括一个电阻式感湿元件和一个NTC测
温元件,并与一个高性能8位单片机相连接。
因此它具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。
每个DHT11传感器都在极为精确的湿度校验室中进行校准。
校准系数以程序的形式储存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。
DHT11集成单线制串行接口,超小的体积、极低的功耗,4针单排引脚封装,信号传输距离可达20米以上,使其成为本设计应用的最佳选择。
1.湿度传感器DHT11的应用
DHT11的典型应用电路如图3.3所示。
图3.3DHT11的典型应用电路
本设计的传感器应用如图3.4所示,采用2个含有已校准数字信号输出的温湿度传感器DHT11,测量范围为20%——90%RH(0-50℃),并根据其典型应用电路设计出的原理图如图所示。
DATE1和DATE2分别为点1和点2的数据线,单片机通过这两根线分别读取2个DHT11的数据。
因为从单片机到传感器的线比较长,比较容易受干扰,须加R10和R15作为数据线上的上拉电阻,提高单片机的驱动能力和数据线的噪声容限。
上拉电阻R10和R15的值依典型应用的设计取值5KΩ。
图3.4传感器应用图
3.3显示模块
系统采用LCD1602液晶显示器显示从温湿度传感器中采集到温湿度数据和实时时钟产生的时间。
3.3.1液晶显示器1602
液晶显示器的分类方法有很多种,通常可按其显示方式分为段式、字符式和点阵式等。
1602字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,分为上下2行,每行显示16个字符,通常称为1602字符型液晶显示器。
1602LCD采用标准的14Pin(无背光)或16Pin(带背光)接口,本设计选用16Pin(带背光)接口。
1602管脚图如图3.5所示。
图3.5LCD1602芯片管脚图
1602引脚解释说明如下:
·
1GND为电源地。
2VCC接+5V。
3VO为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个1KΩ的电位器设定对比度。
4RS为寄存器选择端,高电平时选择数据寄存器、低电平时选择指令寄存器。
5R/W为读/写信号线,高电平时进行读操作,低电平时进行写操作。
当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平、R/W为高电平时可以读忙信号,当RS为高电平、R/W为低电平时可以写入数据。
6E为使能端,当E端由高电平跳变成低电平时,液晶显示器执行命令。
7~14DB0~DB7为8位双向数据线。
5A背光源正极。
16K背光源负极。
3.3.2显示器电路
系统采用LCD1602液晶显示器做为显示接口,其电路如图3.6所示。
R9为LCD1602的背光调节电阻,调节R9的大小可以控制LCD1602的背光亮度。
EN、RW和RS是LCD1602的使能、读\写和数据\命令控制端。
DATA0——DATA7是LCD1602的数据总线,单片机通过该总线向LCD1602读写数据和命令。
图3.6显示接口电路
3.4实时时钟
3.4.1实时时钟DS1302
DS1302是美国DALLAS公司推出的一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。
实时时钟可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。
工作电压宽达2.5~5.5V。
采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后背电源进行涓细电流充电的能力。
DS1302用于数据记录,特别是对某些具有特殊意义的数据点的记录上,能实现数据与出现该数据的时间同时记录,因此广泛应用于测量系统中。
3.4.2实时时钟DS1302的应用
DS1302与单片机的连接也仅需要3条线:
CE引脚、SCLK串行时钟引脚、I/O串行数据引脚,Vcc2为备用电源,外接32.768kHz晶振,为芯片提供计时脉冲,其典型应用电路如图3.7所示。
图3.7DS1302的典型应用电路图
本设计的实时时钟电路如图3.8所示,CLK、SDA和RST分别是DS1302的串行时钟、双向数据和复位引脚,单片机通过这三个引脚读写DS1302的数据。
X1和X2是32.768KHz晶振输入引脚,VCC1是接备用电池,当系统掉电时由备用电池给DS1302供电,保证系统时间不会错乱。
图3.8实时时钟电路图
3.5按键模块
本设计中,按键和显示部份构成系统的人机接口如图3.9所示,可以通过按键进行设定上下限值、设定系统时间、设定采样周期和查询历史湿度等操作。
按键部份如图所示。
当有按键按下后,74LS148的GS端变成低电平,引发单片机外部中断1,同时对按键进行8-3线编码等待单片机读取。
其中,74LS148为8线-3线优先编码器,将8条数据线(0-7)进行3线(4-2-1)二进制(八进制)优先编码,即对最高位数据线进行译码,利用选通端(EI)和输出选通端(EO)可进行八进制扩展。
图3.9按键电路
3.6控制模块
控制模块的电路如图3.10所示,Fan1、Fan2分别接到单片机的IO口上,当湿度过高时,对应的单片机IO口变高电平,驱动光耦,再由光耦TLP251驱动三极管,使三极管导通,启动风扇进行除湿操作。
风扇转动时,产生的噪声比较大,为不影响单片机系统的正常工作,风扇与单片机系统分开供电,用光耦隔离驱动。
图3.10控制模块电路图
3.7报警电路
当湿度过高或过低时,单片机驱动三极管导通,蜂鸣器发出声音报警,同时发光二极管D2-D4指示报警类型。
所设计的报警电路如图3.11所示。
图3.11报警电路
3.8系统电源
系统电源如图3.12所示。
R2、D1是电源指示电路,二极管D1为防接反二极管,防止电源正负极意外接反时造成实验板上其他芯片的损坏。
J2输入6V直流电压,经过稳压芯片ASM1117-5后输出稳定的5V直流电压,供给单片机系统。
J3接12V直流电压,供给风扇。
C1~C4为电源滤波电容。
图3.12系统电源
3.9电路硬件制作
本设计是利用Protel99SE软件平台完成硬件电路设计和制作的。
Protel99SE是应用于Windows9X/2000/NT操作系统下的EDA设计软件,采用设计库管理模式,可以进行联网设计,具有很强的数据交换能力和开放性及3D模拟功能,是一个32位的设计软件,可以完成电路原理图设计,印制电路板设计和可编程逻辑器件设计等工作,可以设计32个信号层,16个电源—地层和16个机加工层。
(1)先用电路板图设计软件protel99SE画出电路原理图。
在画原理图时要注意除了画元件和连线之外,还要注意电源正极、接地的接口和相关输入输出端的连接的正确性。
另外,若所需元件在元件库里不能找到的话,可以自己画其原理图库文件和封装库文件。
(2)画好原理图后将其导入为PCB图。
在画PCB时,需要注意方面有:
第一,设置电源线和信号线的走线宽度、电气安全间隔。
第二,还有各元件的封装的正确性。
第三,布线时在一些区域设置敷铜时注意接地线与否。
第四,合理设置所有的焊盘大小和阻焊层间隙。
(3)画好PCB检查无误后就可以打印出来,进行铜板腐蚀,最后装上元器件。
接下来就可以开始焊接电路,对于贴片元件要仔细焊接,注意尽量使用恒温焊台焊接。
焊接主芯片和其它次要芯片时要注意手上静电的消除,以免手上所带静电击穿芯片。
焊接后要进行线路测试,为避免有断线的情况出现,最好是自己用万用表测试一遍。
4系统各模块的软件设计
软件设计中一个重要的思想就是采用模块化设计,把一个大的任务分解成若干个小任务,分别编制实现这些小任务的子程序,然后将子程序按照总体要求组装起来,就可以实现这个大任务了。
这种思路对于可重复使用的子程序显得尤为优越,因为不仅程序结构清晰,而节约程序存储空间。
系统整体软件设计包括管理程序和控制程序两部分,管理程序包括LCD显示的动态刷新、控制指示灯、处理键盘的扫描和响应,执行中断服务操作等。
控制程序是对被控对象进行采样、数据处理、上下限报警处理等。
系统程序主要包括主程序、数据采样程序、定时器中断服务程序、键盘扫描程序、显示程序等,这些程序主要由KeilC51实现。
KeilC5l是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,Windows界面。
另外重要的一点,KeilC51软件编译后生成的汇编代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。
在开发大型软件时更能体现高级语言的优势L44J。
uVision4是keilc的Windows集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。
开发人员可用IDE本身或其它编辑器编辑C或汇编源文件;
然后分别由C51或A51编译器编译生成目标文件(.OBJ);
目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS);
ABS文件由OH51转换成标准的Hex文件,可以直接写入程序存贮器如EPROM中。
4.1主程序软件流程
4.1.1系统总流程图
图4.1系统总流程图
软件选择温湿度监控系统为控制对象,控制湿度。
当选择湿度控制时,系统在上电复位后可以用按键设置预置湿度,LCD显示器显示预置湿度。
湿度设定好后,按启动键启动系统工作,湿度检测系统不断定时检测当前湿度并进行平滑滤波处理,并送往显示器显示,达到预定值后系统会报警,并读取当时时间送往显示器显示,到达采样时间后存储数据并求10个采样周期内的平均湿度,确定所采样的数据到达预置值,即启动风扇进行通风干燥,处理并显示当前值。
这样,不断重复上述过程,使湿度保持在预置湿度范围之内。
启动后不能再修改预制湿度,必须按复位/停止键,回到停止加湿状态再重新设定预置湿度。
系统总流程图如图4.1所示。
4.1.1主程序
在系统进行一系列的准备工作即初始化之后,程序就进入主循环,主循环的工作是进行采样时间控制、控制测量过程、LCD显示循环、按键检测并且处理、数据处理、数据显示,然后周而复始地进行主循环程序。
在主程序循环的过程中随时响应按键中断,进入中断响应。
主程序见附录。
4.1.2初始化程序
系统初始化程序是为了在进入主程序循环之前,做好必要的准备工作。
在整个系统设计中,用到了3个单片机基本功能模块:
时钟模块、外部中断模块和普通I/O模块。
根据系统实际需求,对各个模块进行了初始化配置,通过对相应数据寄存器或状态寄存器的读写,实现相应的功能。
初始化部分:
函数定义:
Init_DS1302();
init_lcd();
功能:
对时钟芯片DS1302,液晶显示器LCD进行初始化。
4.2各模块程序
4.2.1显示部分
系统可用按键选择所包含的10种显示界面:
第0个界面显示点1的实时湿度,第1个界面显示点2的实时湿度;
第2个界面显示点1的历史记录,第3个界面显示点2的历史记录;
第4个界面显示点1的10个采样周期内的平均值,第5个界面显示点2的10个采样周期内的平均值;
第6个界面显示所设置的点1的上下限值,第7个界面显示所设置的点2的上下限值;
第8个界面显示采样周期;
特殊界面:
显示设定系统时钟。
voidInf_test(ucharCount);
功能:
进入显示界面;
即将按键控制选择的显示界面显示在LCD上。
voidInf_test(ucharCount)
{
uchari,x;
x=Count&
0x01;
//Count为按键控制输入
Count>
>
=1;
Wr_LCD_COM(0x80);
//将1602指针指向第一行第一个
for(i=0;
i<
16;
i++)Wr_LCD_Date(Interface_test[Count][i]);
//将所选择的界面显示在1602上
Wr_LCD_COM(0xc0);
//将1602指针指向第二行第一个
i++)Wr_LCD_Date(Interface_test[3][i]);
Wr_LCD_COM(0xc2);
//将1602指针指向第二行第二个
Wr_LCD_Date(M[x]);
//显示第x个点
if(Count==1)//显示历史记录界面
{Wr_LCD_COM(0x8b);
Wr_LCD_Date(M[Count_record]);
}
}
voidInf_time(ucharadr,ucharh,ucharm,uchars);
显示在时间LCD上;
voidInf_time(ucharadr,ucharh,ucharm,uchars)
{Wr_LCD_COM(adr+2);
//1602指针指向地址
Wr_LCD_Date(M[10]);
//写入冒号
Wr_LCD_COM(adr+5);
Wr_LCD_Hex(adr,h);
//写入时
Wr_LCD_Hex(adr+3,m);
//写入分
Wr_LCD_Hex(adr+6,s);
//写入秒
voidInf_set(ucharCount);
功能:
显示温湿度设定的上下限值;
voidInf_set(ucharCount)
{uchari;
if(Count!
=8)//选择上下值设定显示界面
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 湿度 测试 计时器 毕业设计 论文