当前位置:文档之家› 室内温湿度控制系统报告

室内温湿度控制系统报告

室内温湿度控制系统报告
室内温湿度控制系统报告

室内温湿度控制系统报告

室内温湿度控制系统

设计报告

室内温湿度控制系统

摘要本文利用89C52单片机设计一个温室大棚的温湿度检测控制系统对室内的温湿度进行检测控制并实时显示其中温湿度传感器采用DHT11数字温湿度传感器通过89C52单片机的处理把温湿度值显示在1602A液晶上并实时判断温湿度值是否满足设定的温湿度范围若超出设定范围通过89C52启动温湿度控制系统达到恒温恒湿的目的

关键字89C52DHT111602A液晶显示温湿度控制系统

目录

摘要 1

1本系统主要研究内容 3

11基本要求 3

1.2发挥部分 3

2 系统总体设计 3

21系统的组成 3

22系统的工作原理4

3 单元电路设计 6

31单片机系统设计6

32传感器的设计8

33 液晶显示装置设计9

34 光声报警系统与温湿度控制系统设计12

35温湿度系统设计13

4 软件设计14

41初始化模块 14

42温湿度检测模块14

43 温湿度判断控制模块15

44 1602液晶显示模块 15

45报警模块15

46 系统整体软件程序16

5 系统测试16

6总结17

参考文献17

附录18

1本系统主要研究内容

设计一个室内温湿度检测装置检测和显示室内的温度湿度并在温度湿度超过设置的范围是采取相应的措施使得温度达到设置的范围

11 基本要求

1采集温度传感器数据在显示器上显示室内的温度

2采集湿度传感器数据在显示器上显示室内的湿度

3可以通过按键来设定目标温度和湿度的范围

12 发挥部分

1当温度和湿度超过设置的范围时用蜂鸣器发出不同的声音报警并且用LED 灯指示是温度还是湿度超出了预设的范围

2用两个电机模拟对温度和湿度的控制当温度和湿度超出设置范围时控制两个电机动作调节温度和湿度达到预设的范围电机1正转顺时针表示加热反转逆时针表示制冷电机2正转顺时针表示加湿反转逆时针表示干燥3用电机的转速表示控制作用的强弱程度并与温度湿度的偏差大小相关

2 系统的总体设计

21 系统的组成

以单片机为控制核心采用温湿度测量通信技术控制技术等技术以温湿度传感器作为测量元件构成智能温湿度测量控制系统可分为温湿度测量电路显示电路声光报警电路温湿度控制电路选用的主要器件有 89C52温湿度传感器DHT111602A显示模块红绿白LED灯报警装置蜂鸣器等

系统原理图

22 系统的工作原理

本系统以单片机89C52为核心数据采集传输显示报警都要通过单片机数据采集通过单总线的智能数字温湿度传感器DHT11完成通过单片机把采集的数据显示在1602A上当采集的数据超出给定范围时有蜂鸣器实时报警并显示红灯提

示并进行相应的控制处理在整个系统中采用了DHT11单总线技术单片机采用C 语言编程

· 89C52作为中央控制装置负责中心运算和控制协调系统各个模块的工作·电机1反转实现系统的降温工作

·电机1正转实现系统的加热工作

·电机2正转实现系统的加湿工作

·电机2反转实现系统的干燥工作

·两盏灯报警模块负责系统的报警功能如果当前的温度超过用户设定的界限值时系统将自动报警灯在单片机的控制下有规律的闪烁同时报警模块发出报警声通知用户采取相应的措施

系统工作流程图

系统的工作流程图

3 单元电路设计

31 单片机系统设计

经过上面的总体方案和实施措施的讨论后可以开始着手硬件系统的设计硬件系统是应用系统的基础软件系统设计的依据

根据总体功能和性价比及其运行速度等因素的考虑选用STC89C52为主机满足上面的要求而且设计方便不需要再存储扩展

STC89C52单片机概述

STC89C52是一种低功耗高性能CMOS8位微控制器具8K在系统可编程Flash 存储器在单芯片上拥有灵巧的8位CPU和在系统可编程Flash使得STC89C52为众多嵌入式控制应用系统提供高灵活超有效的解决方案具有以下标准功能8k字节Flash512字节RAM32位IO口线看门狗定时器内置4KB EEPROM810复位电路2个16位定时器计数器一个6向量2级中断结构全双工串行口另外STC8952可降至0Hz静态逻辑操作支持2种软件可选择节电模式空闲模式下CPU停止工作允许RAM定时器计数器串口中断继续工作掉电保护方式下RAM内容被保存振荡器被冻结单片机一切工作停止直到下一个中断或硬件复位为止最高运作频率35MHz6T12T可选

相关参数工作电压55V~33V5V单片机8V~20V3V单片机工作频率范围0~40MHz相当于普通8051的0~80MHz实际工作频率可达48MHz 用户应用程序空间为8K字节片上集成512字节RAM 通用IO口32个复位后为P0P1P2P3是准双向口上拉P口是漏极开路输出作为总线扩展用时不用加上拉电阻作为IO 口用时需加上拉电阻ISP在系统可编程IAP在应用可编程无需专用编程器无需专用仿真器可通过串口RxDP30TxDP31直接下载用户程序数秒即可完成具有EEPROM功能具有看门狗功能共3个16位定时器计数器即定时器T0T1T2 10外部中断4路下降沿中断或低电平触发电路PowerDown模式可由外部中断低电平触发中断方式唤醒11通用异步串行口UART还可用定时器软

件实现多个UART 12工作温度范围-40~85℃工业级0~75℃商业级13PDIP封装

89C5

32 传感器的设计

DHT11产品概述

DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器它应用专用的数字模块采集技术和温湿度传感技术确保产品具有极高的可靠性与卓越的长期稳定性传感器包括一个电阻式感湿元件和一个NTC 测

温元件并与一个高性能8位单片机相连接因此该产品具有品质卓越超快

响应抗干扰能力强性价比极高等优点每个DHT11传感器都在极为精确的

湿度校验室中进行校准校准系数以程序的形式储存在OTP内存中传感器内部在检测信号的处理过程中要调用这些校准系数单线制串行接口使系统集成变得简易快捷超小的体积极低的功耗信号传输距离可达20米以上使

其成为各类应用甚至最为苛刻的应用场合的最佳选则产品为4 针单排引脚封装连接方便特殊封装形式可根据用户需求而提供

DHT11引脚说明

VDD 供电3-55VDC

DATA 串行数据单总线

NC 空脚请悬空

GND 接地电源负极

33 液晶显示装置设计

1602A是一种工业字符型液晶能够同时显示16x02即32个字符下图为1602A 模块尺寸图

引脚接口说明

VSS 电源地 9 D2 数据

VDD 电源正极 10 D3 数据

VL 液晶显示偏压11 D4 数据

RS 数据命令选择12 D5 数据

RW 读写选择13 D6 数据

E 使能信号 14 D7 数据

D0 数据 15 BLA 背光源正极

D1 数据 16 BLK 背光源负极

第1脚VSS为地电源

第2脚VDD接5V正电源

第3脚VL为液晶显示器对比度调整端接正电源时对比度最弱接地时对比度最高对比度过高时会产生鬼影使用时可以通过一个10K的电位器调整对比度第4脚RS为寄存器选择高电平时选择数据寄存器低电平时选择指令寄存器第5脚RW为读写信号线高电平时进行读操作低电平时进行写操作当RS和RW共同为低电平时可以写入指令或者显示地址当RS为低电平RW为高电平时可以读忙信号当RS为高电平RW为低电平时可以写入数据

第6脚E端为使能端当E端由高电平跳变成低电平时液晶模块执行命令

第7~14脚D0~D7为8位双向数据线

第15脚背光源正极

第16脚背光源负极

控制命令表

1602液晶模块的读写操作屏幕和光标的操作都是通过指令编程来实现的说明1为高电平0为低电平

指令1清显示指令码01H光标复位到地址00H位置

指令2光标复位光标返回到地址00H

指令3光标和显示模式设置ID光标移动方向高电平右移低电平左移S屏幕上所有文字是否左移或者右移高电平表示有效低电平则无效

指令4显示开关控制D控制整体显示的开与关高电平表示开显示低电平表示关显示C控制光标的开与关高电平表示有光标低电平表示无光标B控制光标是否闪烁高电平闪烁低电平不闪烁

指令5光标或显示移位SC高电平时移动显示的文字低电平时移动光标

指令6功能设置命令DL高电平时为4位总线低电平时为8位总线N低电平时为单行显示高电平时双行显示F 低电平时显示5x7的点阵字符高电平时显示5x10的点阵字符

指令7字符发生器RAM地址设置

指令8DDRAM地址设置

指令9读忙信号和光标地址BF为忙标志位高电平表示忙此时模块不能接收命令或者数据如果为低电平表示不忙

指令10写数据

指令11读数据

1602LCD的一般初始化复位过程

延时15mS

写指令38H不检测忙信号

延时5mS

以后每次写指令读写数据操作均需要检测忙信号

写指令38H显示模式设置

写指令08H显示关闭

写指令01H显示清屏

写指令06H显示光标移动设置

写指令 0CH显示开及光标设置

液晶显示原理

读写操作时序如图13和图14所示

读操作时序

写操作时序

34 光声报警系统与温湿度控制系统设计

本系统采用绿白LED灯作为光报警提示当系统检测到的数据符合给定的要求时现场始终白绿灯不亮当系统检测到的数据不符合给定的要求时根据情况温度超限白灯亮湿度超限绿灯亮报警提示本系统采用蜂鸣器作为声报警提示当系统检测到的数据符合给定的要求时现场没有蜂鸣器报警提示当系统检测到的数据不符合给定的要求时现场蜂鸣器报警提示

光声报警系统电路图

35 温湿度控制系统

本系统温湿度控制系统主要组成有电机1和电机2当系统检测到的数据不符合给定的要求时系统启动温湿度控制系统实现恒温恒湿的目的

·电机1反转实现系统的降温工作

·电机1正转实现系统的加热工作

·电机2正转实现系统的加湿工作

·电机2反转实现系统的干燥工作

温湿度检测电路

温湿度控制电路

4 软件系统设计

本系统软件系统设计包括系统初始化模块温湿度检测模块1602LCD显示模块报警模块温湿度判断控制模块系统软件总体流程图

系统流程图

41 初始化模块

系统初始化模块的主要功能是完成系统的初始化以及设定系统的工作状态初始化部分包括以下方面的内容

com 单片机初始化以及各种引脚定义

com 1602液晶初始化及工作方式

com 系统进入正常工作状态

42 温湿度检测模块

温湿度检测模块是本系统中的核心模块之一它负责完成温度和湿度的测量及模拟量转换为数字量的全过程这也是它为什么重要的原因数字式温湿度传感器DTH11直接把检测到的模拟量转化为数字量送给单片机在经过单片机的处理把温湿度值显示在1602液晶上温湿度传感器的精确度值直接影响到整个系统的检测与控制所以本系统采用数字式温湿度传感器DTH11采集温室内的温湿度

43 温湿度判断控制模块

温湿度判断控制模块也是系统的核心模块之一所谓判断控制模块就是对当前温室内的实际温湿度与给定的温湿度范围进行比较先进行判断然后再进行控制控制模块是决定系统将要进行什么工作的如温度高于上限时需要降温低于下限时需要升温如湿度高于上限时需要降湿低于下限时需要増湿同时还要启动警报等等

温湿度判断控制部分的程序整体思路如图

温湿度判断控制程序整体思路

44 1602液晶显示模块

本系统采用1602液晶显示温湿度值当系统刚开始上电时1602液晶不显示任何数据等待DTH11的监测数据双行显示在1602液晶上第一行显示T--C第二行显示H --

45 报警模块

报警模块具备两项功能即为报警灯和声音报警报警灯模块是完成LED有规律的闪烁以便从视觉上提醒用户LED是由单片机控制2个双色LED灯组成的其转换规律为

1 系统温湿度值在给定的范围时绿色LED亮

2 系统温湿度值超出给定的范围时白色LED亮

在LED灯转换的同时声音报警也会同时启动可采用延时的方式来延长声音报警的声音

46 系统整体软件程序见附录

5系统测试

整个软件通过C语言编程现在keilC51集成开发环境下将程序写出来并进行编译调试调试通过后会生成HEX文件具体过程为

新建一个工程然后在新建一个C语言程序并把新建的C语言程序添加到工程中然后编译工程编译后就会生成HEX文件HEX文件就是要下载到单片机中的程序文件

1点击Project菜单选择下拉菜单中的NEW Project工程名用test1表示保存文件

2选择所要的单片机我们选择Ateml公司的AT89C51

3在工程中创建新的程序文件现在编写程序我们先编写一个单片机IO口控制LED灯闪烁的程序

include

sbit p1 p10

unsigned int a

void main

a 5000

p1 0

while a--

a 5000

p1 1

while a--

这段程序是用单片机的P10口控制小灯闪烁编译然后将HEX文件下载到单片机中运行程序观察LED灯的点亮情况

当运行程序后LED灯闪烁说明编译的程序正确

当简单的程序正确就可以慢慢的加深难度开始编写温湿度控制程序在这里就不在写了见附表将写好的程序编译好无错后下载到单片机运行软件观察程序运行情况进行优化改进

6结论

虽然这个设计做的比较简单但能完成给定的设计内容很多东西考虑的不是很细也有一些特别情况没有做但是用了很多精力用来完成这个设计鉴于个人水平和时间的关系所以并没有把自己当初设想的所有情况都考虑进去这两个星期的设计让我学会的很多觉得自己学的太少还有很多需要认真学习学无止境所以要更努力

参考文献

[1]林国汉基于单片机的温度控制系统设计[J]微计算机信息200925 21~24

[2]易顺明基于单片机的大棚温湿度控制系统设计[J]现代电子技术2011

7 7~15

[3]张毅刚单片机原理及应用[M]北京高等教育出版社200812~106

[4] Atmel Atmel 89C51 Microcontrollers Hardware Manual2010 35~98

[5]陈桂友柴远斌单片机应用技术[M]北京机械工业出版社200810~88

[6]熊诗波机械工程测试技术基础[M]4版北京机械工业出版社2008 60~102

[7]张新荣[J]工业控制计算机

[8]夏晓南基于单片机的温箱温度和湿度的控制[J]现代电子技术2008 5 6~12

[9]com[M]7版北京高等教育出版社200834~80

附录

include

include

include

void dangqianzhi

void read_wsd

define uchar unsigned char 定义无符号字符型define uint unsigned int 定义无符号整型typedef unsigned char unint8 定义无符号字节型

typedef unsigned char unint16 定义无符号字型

sbit en1 P16 L298的Enable A

sbit en2 P11 L298的Enable B

sbit IN1 P12 L298的Input 1

sbit IN2 P13 L298的Input 2

sbit IN3 P14 L298的Input 3

sbit IN4 P15 L298的Input 4

uchar t 0 中断计数器

uchar m1 0 电机1速度值

uchar m2 0 电机2速度值

uchar tmp1tmp2 电机当前速度值

sbit wsd P10 DHT11数据接受

sbit s1 P30 按键s1

sbit s2 P31 按键s2

sbit s3 P32 按键s3

sbit s4 P33 按键s4

sbit s5 P36 按键s5

sbit rs P37

sbit fm P23 蜂鸣器接口

sbit led1 P24 温度警报灯

sbit led2 P25 湿度警报灯

sbit lcden P34 液晶使能端

sbit lcdrs P35 液晶数据命令选择端

sbit dula P26 段选端

sbit wela P27 位选端

uchar code table[] "T" 温度

uchar code table1[] "H" 湿度

uchar code table2[] "FW" 温度范围

uchar code table3[] "FW" 湿度范围

uchar code table4[] 0x300x310x320x330x340x350x360x370x380x39 uchar code table5[] "0"

uchar code table6[] "C"

uchar numnum1s1numdiwengaowendishigaoshi

unint8 RHRLTHTLCK_data

unint8 TH_tempTL_tempRH_tempRL_tempCK_temp

unint8 com_datauntemptemp

unint8 respond

char piancha1piancha2piancha3piancha4

void delay uint z 延时函数1ms为单位uint xy

for x zx 0x--

for y 110y 0y--

void write_com uchar com 液晶写命令函数

lcdrs 0

P0 com

delay 5

lcden 1

delay 5

lcden 0

void write_data uchar date 液晶写数据函数

lcdrs 1

P0 date

delay 5

lcden 1

delay 5

lcden 0

void motor1 char speed1 电机1

read_wsd

dangqianzhi

m1 abs speed1

void motor2 char speed2 电机2

read_wsd

dangqianzhi

m2 abs speed2

void init

diwen 0

gaowen 0

dishi 0

gaoshi 0

TMOD 0x02 设定T0的工作模式为2

TH0 0x9B 装入定时器的初值

TL0 0x9B

EA 1 开中断

ET0 1 定时器0允许中断

TR0 0

rs 0

dula 0

wela 0

s1num 0

num1 0

lcden 0

write_com 0x38 设置16X2显示5X7点阵8位数据接口

write_com 0x0f 设置开显示不显示光标

write_com 0x06 写一个字符后地址指针加1

write_com 0x01 显示清零数据指针清

write_com 0x80 设置显示初始坐标

void timer0 interrupt 1 T0中断服务程序

if t 0 1个PWM周期完成后才会接受新数值

tmp1 m1

tmp2 m2

if t tmp1

en1 1

else

en1 0 产生电机1的PWM信号

if t tmp2

en2 1

else

en2 0 产生电机2的PWM信号

t

if t 100

t 0

read_wsd

dangqianzhi

1个PWM信号由100次中断产生

if s5 0

TR0 0

en1 0

en2 0

void keyscan 按键扫描函数

if s1 0

delay 5

if s1 0

s1num

while s1

if s1num 1

write_com 0x800x4f

write_com 0x0f

if s1num 2

write_com 0x800x4c

write_com 0x0f

if s1num 3

write_com 0x800x0f

write_com 0x0f

if s1num 4

write_com 0x800x0c

write_com 0x0f

if s1num 5

s1num 0

write_com 0x0c

if s1num 0

相关主题
文本预览
相关文档 最新文档