数字湿度检测控制装置论文.docx
《数字湿度检测控制装置论文.docx》由会员分享,可在线阅读,更多相关《数字湿度检测控制装置论文.docx(30页珍藏版)》请在冰豆网上搜索。
![数字湿度检测控制装置论文.docx](https://file1.bdocx.com/fileroot1/2023-1/25/6b5d5cad-887b-4ff3-9cc8-c45667ca113d/6b5d5cad-887b-4ff3-9cc8-c45667ca113d1.gif)
数字湿度检测控制装置论文
郑州轻工业学院
课程设计任务书
题目数字温度检测控制装置
专业学号姓名
主要内容、基本要求、主要参考数据等:
主要内容:
1、查阅与课题设计内容相关的科技文献数据;
2、熟悉数字温度检测控制装置的结构、功能和工作过程;
3、确定系统硬件及软件设计方案;
4、进行电气原理图的绘制和微控制器内部程序的编写;
5、完成课程设计说明书一份。
基本要求:
1、设计方案符合课题要求、结构严谨、功能完善;;
2、系统结构模型绘制规范、标注简约明确;
3、系统控制电气原理图绘图准确、布局合理;
4、微控制器内部程序主要功能基本调试通过;
5、课程设计说明书严格按照“课程设计报告撰写格式”书写。
主要参考数据
1、《单片微型计算机原理及应用》,西安电子科技大学出版社,张毅坤主编;
2、《单片机原理与接口技术》,北京邮电大学出版社,马淑华等编着;
3、《现代传感器集成电路》,人民邮电出版社,赵负图主编;
4、《单片机典型外围器件应用实例》,人民邮电出版社,求是科技编着。
完成期限:
2011年12月19日-2012年1月9日
指导教师签名:
课程负责人签名:
目录
1.概述1
1.1设计题目的意义及简介1
1.2系统组成总体结构1
2.系统硬件设计2
2.1单片机最小系统设计2
2.1.1单片机选择2
2.1.2时钟电路设计2
2.1.3复位电路设计2
2.2温度采集电路设计2
2.2.1AD590温度传感器2
2.2.2测温电路的设计
2.2.3信号调整电路
2.3LED显示2
2.4键盘接口
2.5控制电路
3.系统软件设计
3.1程序初始化
3.2主程序
3.3A/D转换子程序
3.4标度转换子程序
3.5显示子程序
3.6控制子程序
3.7键盘子程序
4.结论
参考文献
附录A系统硬件原理图
附录B程序清单
摘要
本次设计是采用单片机中的STC89C52和DHT11构成的低成本的湿度的检测控制系统。
单片机STC89C52是一款有强大的功能、低消耗,高效率的单片机,因此在很多领域都是用它。
DHT11是一款复合型温湿度传感器,并且含有以校准好的数字输出。
,DHT11传感器包括一个电阻式感湿原件和一个NTC测温元件,该产品具有超快响应、品质卓越、抗干扰能力强、性价比极高等优点。
本设计主要包括系统软件的设计和硬件电路的设计。
硬件电路主要包括单片机、湿度传感器、显示模块、报警器以及控制设备等5部分。
其中由DHT11温湿度传感器及1602字符型液晶模块构成系统显示模块;用户根据需要预先输入预设值,当实际测量的温湿度不符合预设的温湿度标准时,发出报警信号(蜂鸣器蜂鸣),动相应控制。
软件部分包括了主程序、显示子程序、测湿度子程序。
关键词:
STC89C52;DHT11;湿度传感器。
1.概述
1.1设计题目的意义及简介
随着生活的不断发展,人们对环境的要求也不断的提高,居住的环境成为人们关心的话题。
为了满足人们对适宜适宜环境要求,设计一种低成本、高性能、简单、便于提醒和控制湿度的装置。
人们可以根据季节和天气的需要进行湿度的调节,使人居住在一个更加舒适的环境。
此设计不仅可以应用到家庭中,也可应用到工厂中,这样大大减少了看护和相应的人工费用。
此设计有点在于成本低,操作简单、相应快,并且当超出人们设定值时可自动报警。
1.2系统组成总体结构
本次的数字湿度控制器主要是由单片机系统组成,其系统组成框图如图1-1所示。
图1-1系统总体框图
其工作流程为湿度传感器采集湿度信号,湿度信号被信号转换器转换成系统所能识别的电信号,采集信号被送入单片机后经过单片机的控制进行分析整理,根据设定值进行湿度调节,再经过湿度反馈环节做进一步调整。
2.系统硬件设计
2.1单片机最小系统设计
2.1.1单片机选择
STC89C52是一种带8K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,俗称单片机。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,stc的stc89c52是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
STC89C52引脚如图所示
图2-1STC89C52单片机引脚
2.1.2时钟电路设计
单片机是在统一的脉冲信号控制下工作的。
这个脉冲就是时钟电路产生的。
时钟电路选择晶振为12Mhz,两个电容选择60pf作为CPU的内部时钟电路,其电路图如下所示:
图2-2由晶振构成时钟电路
2.1.3复位电路设计
复位电路可以让单片机初始化,也可以使死机状态下的单片机重新启动,因此非常重要。
该设计采用的是按键复位和上电自动复位电路。
这样
图2-3上电复位电路
使用起来比较方便,即每当CPU通电时,CPU自动进行复位操作。
省去了人工操作的繁琐,当程序跑飞时,可以手动复位,按下按键后,使RESET端产生高电平,电路设计如图2-3(其中电阻为1K,电容为22uf)
2.2温度采集电路设计
2.2.1AD590温度传感器
温度采集元件采用AD590温度传感器,AD590是美国模拟器件公司生产的单片集成两端感温电流源。
AD590具有线性优良、性能稳定、灵敏度高、无需补偿、热容量小、抗干扰能力强、可远距离测温且使用方便等优点。
可广泛应用于各种冰箱、空调器、粮仓、冰库、工业仪器配套和各种温度的测量和控制等领域。
AD590是电流型温度传感器,通过对电流的测量可得到所需要的温度值。
其电路外形如图2-4所示,它采用金属壳3脚封装,其中1脚为电源正端V+;2脚为电流输出端I0;3脚为管壳,一般不用。
集成温度传感器的电路符号如图2-5所示。
图2-4AD590封装形式图2-5集成温度传感器电路符号
AD590的主特性参数如下:
●工作电压:
4~30V。
●工作温度:
-55~+150℃。
●正向电压:
+44V。
●反向电压:
-20V。
●输出电阻为710M。
●精度高。
AD590共有I、J、K、L、M五档,其中M档精度最高,在-55℃~+150℃范围内,非线性误差为±0.3℃。
AD590的工作原理:
在被测温度一定时,AD590相当于一个恒流源,把它和5~30V的直流电源相连,并在输出端串接一个1k的恒值电阻,那么,此电阻上流过的电流将和被测温度成正比,此时电阻两端将会有1mV/K的电压信号。
2.2.2测温电路的设计
在设计测温电路时,首先应将电流转换成电压。
由于AD590为电流输出元件,它的温度每升高1K,电流就增加1μA。
当AD590的电流通过一个10k的电阻时,这个电阻上的压降为10mV,即转换成10mV/K,为了使此电阻精确,可用一个9.6k的电阻与一个1k电位器串联,然后通过调节电位器来获得精确的10k。
图2-6所示是一个电流/电压和绝对/摄氏温标的转换电路,其中运算放大器A1被接成电压跟随器形式,以增加信号的输入阻抗。
而运放A2的作用是把绝对温标转换成摄氏温标,给A2的同相输入端输入一个恒定的电压(如1.235V),然后将此电压放大到2.73V。
这样,A1与A2输出端之间的电压即为转换成的摄氏温标。
图2-6绝对摄氏温标转换电路
将AD590放入0℃的冰水混合溶液中,A1同相输入端的电压应为2.73V,同样使A2的输出电压也为2.73V,因此A1与A2两输出端之间的电压:
2.73-2.73=0V即对应于0℃。
2.2.3信号调整电路
单片机处理的信号是数字信号,因此,在送往单片机处理之前应对该信号进行放大转换。
本系统所采用的A/D转换器为ADC0809,由于ADC0809的输入信号应在0~5V之间,因此,经过放大电路放大的信号进入A/D转换器的电压信号应控制在0~5V之间,根据此原则可设计合适的放大倍数。
信号调整电路主要由运算放大器0P07等组成。
为了使温度检测电路的输出电压能够适合于A/D转换器的参考电压,利用超低温漂移高精度运算放大器0P07将温度电压信号进行放大到0~5V的范围之内,便于A/D进行转换,以提高温度采集电路的可靠性。
本设计中,信号调理电路部分由集成运放OP07分别构成一个电压跟随器,电压比较器和一个同相输入放大器用于对AD590输出的小电压信号进行放大处理。
信号调整电路如图2-7所示
在该放大电路中,电压跟随器起阻抗匹配的作用。
反馈电阻为零时,放大倍数为1,电压跟随器的输入电压等于输出电压。
电压比较器用于对输出电压小信号电压进行调零,在上述电路图中的电压比较器部分由于R2=R4R3=R5可得电压比较器的输出电压
根据电压跟随器的输出电压
调节电位计R9就改变电压比较器的输入电压
。
使得当温度为温度测量下限时电压比较器的输出电压为零。
起放大作用的是同相输入放大器OP07。
其放大倍数:
因此放大器的输出电压
ADC0809是一种8位逐次逼近式A/D转换器,其内部有一个8位“三态输出锁存器”可以锁存A/D转换后的数字量,故它本身既可看作一种输入设备,也可以认为是并行I/O接口芯片。
故ADC0809可以和微机直接接口,本设计就是用8051和ADC0809直接相连的。
AT89C51与ADC0809的连接方法如图2-8所示,AT89C51通过地址线P2.7和写控制信号线
用一个或非门联合控制启动转换信号端(START)和地址锁存信号端(ALE)。
地址线P2.7和读控制信号线
用一个或非门联合控制输出允许控制端(EOC)。
低三位地址线加到ADC0809的ADDA、ADDB、ADDC端,所以选中ADC0809的IN0通道的地址为7FF8H。
转换结束信号EOC通过一个反相器接到INT1。
图2-8AT89C51与ADC0809连接图
AT89C51和ADC0809连接通常可以采用查询和中断两种方式。
本系统采用中断方式传送数据,EOC线作为CPU的中断请求输入线。
CPU线响应中断后,应在中断服务程序中使OE线变为高电平,以提取A/D转换后的数字量。
对ADC0809地址的确定:
根据系统硬件连接图可知所选定模拟电压路数为IN0,其对应的地址为ABC=000,即P0.0、P0.1、P0.2=000;又P2.7=0时才能启动ADC0809工作和使AT89C51从ADC0809接收A/D转换电压的数字量。
故确定ADC0809其中一个地址为:
0111111111111000B=7FF8H,其中“__”表示固定量。
ADC0809的IN0和变送器输出端线连,故IN0上输入的0V~+5V范围的模拟电压经A/D转换后可由AT89C51通过程序从P0口输入到它的内部RAM单元。
ADC0809所需时钟信号可以由AT89C51的ALE信号提供。
AT89C51的ALE信号通常是每个机器周期出现两次,故它的频率是单片机时钟频率的1/6。
本系统AT89C51主频是12MHZ,ALE信号频率为2MHZ,使AT89C51的ALE上信号经过4分频后接到ADC0809的CLOCK输入端,就可获得500KHZ的A/D转换脉冲,当然,ALE上脉冲会在MOVX指令的每个机器周期少出现一次,但通常情况下影响不大。
为了给OE线分配一个地址,把AT89C51RD和P2.7经或门和OE相连。
平时,使OE处于低电平封锁状态,在响应中断后,AT89C51执行中断服务程序中如下两条指令就可以使OE变为高电平,从而打开三态输出锁存器,让CPU提取A/D转换后的数字量。
AT89C51执行如下程序可以启动ADC0809工作。
MOVDPTR,#7FF8H
MOVXA,@DPTR;OE变为高电平,数字量送A
2.3LED显示
本设计显示采用LED串行静态显示。
MCS-51系列单片机的串行口RXD,TXD为一个全双工串行通信口,当工作在方式0下可作同步移位寄存器用,其数据由RXD(P3.0)端串行输入或输出;而同步移位时钟由TXD(P3.1)串行输出,在同步时钟的作用下,实现由串行到并行的数据通信。
在不需要使用串行通信的场合,利用串行口加外围芯片74LS164就可以构成一个或多个并行输入/输出口,用于显示器LED驱动。
波特率(每秒传输的位数)固定在fosc/12,即当晶振为12MHZ时,波特率为1MBPS。
在CPU将数据写入SBUF寄存器后,立即启动发送。
待8位数据输完后,硬件将状态寄存器的TI位置1,TI必须由软件清零。
单片机与4片串入并出移位寄存器74LS164相连。
其中,RXD作为164的数据输入,TXD作为4片164的同步时钟。
程序运行时,单片机将4个数码管的段码(4个字节)连续发送出来,通过串行口送给164。
4位字型码送完后,TXD保持高电平。
此时每片164的并行输出口将送出保存在内部移位寄存器中的8位的段码给数码管,令数码管稳定地显示所需的字符。
74LS164是8位串入并出移位寄存器。
A、B为串行输入端,QA~QH为串行输出端,CLK为串行时钟输入端,
为串行输出清零端,VCC为+5V电源输入端,GND为接地端。
具体输入输出关系如表2-1所示。
X代表任意状态;QA0、QB0~QH0代表在稳态输入条件建立之前QA、QB~QH的输出状态;QAn、QBn~QHn代表在最近的时钟上升沿↑转换之前QA、QB~QH的输出状态;H/L、QAn~QBn代表在最近的时钟上升沿↑转换之后QA、QB~QH的输出状态。
表2-174LS164输入输出关系如所示
输入
输出
清除时钟AB
QAQB~QH
LXXX
HLXX
H↑HH
H↑LX
H↑XL
LL~L
QA0QB0~QH0
HQAn~QGn
LQAn~QGn
LQAn~QGn
图2-974LS164引脚如图
串行显示电路属于静态显示,比动态显示亮度更大一些。
由于74LS164在低电平输出时,允许通过的电流达8mA,故不必添加驱动电路,亮度也比较理想。
与动态扫描相比较,无需CPU不停的扫描,频繁地为显示服务,节省了CPU时间,软件设计也比较简单。
由于本设计采用的是共阳极数码管,所以相应的亮段必须送0,相应的暗段必须送1。
原理图如图2-10所示:
图2-10LED串行静态显示
2.4键盘接口
键盘的工作方式选取的原则是:
既要保证能及时响应按键的操作,又不过多的占用CPU的工作时间。
键盘的工作方式有:
查询方式(编程扫描,定时扫描方式)、中断扫描方式。
独立式按键接口就是各按键相互独立,每个按键单独占用一根I/O口线,每根I/O口线的按键工作状态不会影响其他I/O口线上的工作状态。
因此,通过检测输入线的电平状态可以很容易判断哪个按键被按下了。
优点就是电路配置灵活,软件结构简单;缺点就是每个按键需占用一根I/O口线,在按键数量较多时,I/O口浪费大,电路结构显得复杂。
因此,此键盘是用于按键较少或操作速度较高的场合。
本设计中由于所用键盘不多,所以采用独立连接式的查询式键盘就能够满足设计要求。
在本次设计中采用了软件扫描的方法。
通过对键盘接口P1.0和P1.1的查询判断是否有键按下。
本次设计采用了软件去抖动的方法。
当有键按下时,按键的触点在闭合和断开时均会产生抖动,这时触点的逻辑电平是不稳定的,如果不妥善处理,将会使按键命令的错误执行和重复执行。
采用软件延时的方法来避开抖动阶段,这一延时过程一般大于5ms。
2.5控制电路
在本设计中,被测温度信号经采样处理后,还需要通过单片机系统的P1.2口输出用以控制温度,控制的方式主要有模拟量控制和开关量控制。
本系统采用的是开关量控制。
所谓的开关量控制就是通过控制设备的“开”或“关”状态的时间来达到控制的目的。
由于输出设备往往需要大电压来控制,而单片机系统输出的为TTL电平,这种电平不能直接驱动外部设备的开启和关闭。
另一方面,许多外部设备在开关过程中会产生很强的电磁干扰信号,如果不隔离会使系统进行错误的处理。
因此在开关量的输出控制过程中要考虑到两个问题,一要隔离;二要放大。
本设计采用继电器作为控制电路的主要器件,继电器具有一定的隔离作用,在继电器前面加一个三极管用以放大输出信号就可以驱动继电器的闭合和断开,从而实现弱电控制强电的效果。
固态继电器和MCS-51系列单片机组成的控制系统,具有抗干扰性强、编程简单、系统兼容性好等特点。
继电器一般由通电线圈和触电组成。
当线圈通电时,由于磁场作用,使开关触电闭合。
当不通电时,则开关触点断开。
一般线圈可用直流低电压控制(+5V,+9V,+12V)。
继电器的特性参数包括输入和输出参数,主要的参数为额定输入电压、额定输出电流、浪涌电流。
根据输入电压参数值大小,可确定工作电压大小。
如采用TTL或CMOS等逻辑电平控制时,采用有足够带载能力的低电平驱动,并尽可能使“0”电平低于0.8V。
本设计就是采用直流驱动电压为+5V的继电器。
触电输出部分可以直接与市电连接。
继电器控制电路如图2-11所示。
2-11继电器控制电路
3.系统软件设计
本次单片机温控系统的功能是由硬件电路配合软件来实现的,当硬件基本定型后,软件的功能也就基本定下来了。
系统软件的功能又可分为两大类:
一是监控软件,它是整个控制系统的核心,专门用来协调各执行模块和操作者的关系。
二是执行软件,它是用来完成各种实质性的功能如测量、显示等功能。
本系统程序设计包括温度采集子程序、显示子程序、标度转换资程序、键盘子程序、控制子程序。
程序流程图如图3-1所示。
小于等于-2大于等于2
图3-1系统流程图
3.1程序初始化
程序初始化部分根据系统硬件原理图及设计要求对单片机系统进行系统资源分配、参数的设置以及定义。
系统内部资源分配和参数设置如下:
A/D端口地址(ADPORT):
7FF8H
显示缓冲起始地址:
(LEDBUF):
30H
段码存储起始地址(TEMP):
40H
设定温值存储地址(SETTEMP):
50h
测量温度存储地址(CURTEMP):
51H
温度设定上限(HIGHLIMIT):
80
温度设定下限(LOWLIMIT):
25
温度测量上限(HIGHTEMP)107
温度测量下限(LOETEMP)21
初始化程序代码如下:
ADPORTEQU7FF8H;A/D端口地址
LEDBufequ30H;显示缓冲
TEMPEQU40H;段码存储
UPequ1;增温
DOWNequ2;减温
LowLimitequ25;设定值下限
HighLimitequ80;设定值上限
LowTempequ21;A/D0
HighTempequ107;A/D255
SetTempequ50h;设定温值
CurTempequ51h;测量温度
DINBIT0B0H;P3.0
CLKBIT0B1H;P3.1
ORG0000H
ljmpStart
3.2主程序
主程序代码如下:
Start:
movSetTemp,#20;初始恒温值为20℃
MLoop:
callTestKey;测试有无键入
jnzKeyPressed;更改设定值
callDisplayResult;数制转换
callDisplayLED;显示
callReadTemp;读入温度
CONTROL:
......;控制子程序
KeyPressed:
......;键盘子程序
END
3.3A/D转换子程序
根据系统硬件连接图可知,在系统中将ADC0809作为一个外部扩展并行I/O口,采用线选寻址。
由P2.7和
联合控制启动转换信号端(ATART)和ALE端,低三位地址线架到ADC0809和ADDA,ADDB,ADDC端,所以选中ADC0809的IN0通道的地址为7FF8H。
启动DAC0809的工作过程是:
先送通道号地址到ADDA,ADDB,ADDC,由ALE信号锁存通道号地址,后让ATART有效,启动A/D转换,即执行一道“MOVX@DPTR,A”指令产生
信号,使ALE,START有效,锁存通道号并启动A/D转换,A/D转换完毕后,EOC端发出一正脉冲,申请中断。
在中断服务程序中,“MOVA,@DPTR”指令产生
信号,使OE端有效,打开输出锁存器三态门,8位数据便读入到CPU中。
A/D转换子程序代码如下:
ReadAD:
movdptr,#ADPORT
clra
movx@dptr,a;startA/D
JNBP3.3,$
MOVXA,@DPTR;读入结果
ret
3.4标度转换子程序
系统温度测量范围的计算原理:
根据温度标定结果选取两个温度状态T1T2,模拟输出电压V1V2;根据0809的输入范围在0到5伏,即可计算出温度极限。
计算公式如下:
0伏时对应的温度TL:
T1-(V1-0)(T2-T1)/(V2-V1)
5伏时对应的温度TH:
T1-(V1-5)(T2-T1)/(V2-V1)
根据所得结果采用在温度为50℃和60℃下所测量的电压输出1.6V和2.2V为计算温度测量范围的参数,根据上式可得:
TL=50-(1.68-0)(50-40)/(2.26-1.68)=21
TH=50-(1.68-5)(50-40)/(2.26-1.68)=107
所以A/D转化的极限范围为21℃-107℃之间,而根据系统要求温度的控制范围为25℃-80℃之间,符合系统要求。
程序中温度的计算原理:
首先用温度范围除以0到256(即每个十六进制数的温度增长率),然后乘以模拟转换的数字量,即得到升高的温度,再和最低温度相加,就可以得到实际的温度值。
其公式为:
TL+AX(TH-TL)/256
TL:
显示的最低温度
TH:
显示的最高温度
AX:
模拟电压所转换的数字量
标度转换代码如下:
ReadTemp:
callReadAD
movb,#(HighTemp-LowTemp);温度值计算
mulab
mova,b;/256
adda,#LowTemp
movCurTemp,a
ret
3.5显示子程序
显示模块包括数制转换和LED串口静态显示两部分。
显示内容包括当前温度和设定温度两个参数。
在数制转换程序中将十六进制数的数据转换为十进制数数据,各分为十位数和个位数。
在编写显示程序时,先送高位再送低位。
显示模块程序流程图如图3-2所示
数制转换子程序代码如下:
DisplayResult:
mova,CurTemp;实际值
movb,#10
divab
movdptr,#LEDMAP;显示码首址
movca,@a+dptr;取显示码
movLEDBuf,a;存显示缓冲
mova,b
movca,@a+dptr
movLEDBuf+1,a
mova,SetTemp;设定的恒温值
movb,#10
divab
movLEDBuf+2,A
mova,b
movLEDBuf+3,A
ret
显示子程序代码如下:
DisplayLED:
;显示子程序
MOVR0,#LEDBUF;置存储区首地址
MOVR1,#TEMP;置缓冲区首地址
MOVR2,#4;制段码字节数
DP10:
MOVDPTR,