初稿--基于51单片机的室内温度控制系统
华北理工大学轻工学院
QINGGONG COLLEGE, NORTH CHINA UNIVERSITY OF SCIENCE AND TECHNOLOGY
毕业设计说明书
设计(论文)题目:基于51单片机的室内温度控制系统
学生姓名:张然
学 号:[1**********]2
专业班级:11q 电气1班
学 部:信息科学与技术部
指导教师:姚洪平 讲师
2015年4月27日
摘 要
本设计以AT89S51单片机为核心的温度控制系统的工作原理和设计方法。
温度信号由温度芯片DS18B20采集,并以数字信号的方式传送给单片机。文中介绍了该控制系统的硬件部分,包括:温度检测电路、温度控制电路、PC 机与单片机串口通讯电路和一些接口电路 。单片机通过对信号进行相应处理,从而实现温度控制的目的。文中还着重介绍了软件设计部分,在这里采用模块化结构,主要模块有:数码管显示程序、键盘扫描及按键处理程序、温度信号处理程序、继电器控制程序、超温报警程序。
„„
关键词:AT89S51单片机 DS18B20温度芯片 温度控制 串口通讯
Abstract
This design take at89S51 monolithic integrated circuit as core temperature control system's principle of work and design method. The temperature signal by the temperature chip DS18B20 gathering, and transmits by digital signal's way for the monolithic integrated circuit. In the article introduced this control system's hardware part, including: Temperature examination electric circuit, temperature-control circuit, PC machine and monolithic integrated circuit serial port communication channel and some interface circuit. The monolithic integrated circuit through carries on corresponding processing to the signal, thus realizes the temperature control goal. In the article also emphatically introduced the software design part, uses the modular structure in here, the main module includes: Nixietube display sequence, keyboard scanning and pressed key disposal procedure, temperature signal processing procedure, black-white control procedure, excess temperature warning procedure.
„„
Keywords AT89S51 Monolithic Integrated Circuit ;DS18B20 Temperature Chip;Temperature Control;Serial Port Communication
目 录
1 引言„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„1 2 设计要求„„„„„„„„„„„„„„„„„„„„„„„„„„„„„1 3 工作原理„„„„„„„„„„„„„„„„„„„„„„„„„„„„„1 4 方案设计与论证„„„„„„„„„„„„„„„„„„„„„„„„„„2
4.1 主控制部分 „„„„„„„„„„„„„„„„„„„„„„„„„„„2
4.2 测量部分„„„„„„„„„„„„„„„„„„„„„„„„„„„„ 3 5 各单元的设计„„„„„„„„„„„„„„„„„„„„„„„„„„„ 8
5.1 键盘单元„„„„„„„„„„„„„„„„„„„„„„„„„„„„„8
5.2 温度控制及超温和超温警报单元„„„„„„„„„„„„„„„„„„ 10
5.3 温度控制器件电路„„„„„„„„„„„„„„„„„„„„„„„„„„10
5.4 温度测试单元„„„„„„„„„„„„„„„„„„„„„„„„„„ 11
5.5七段数码管显示单元„„„„„„„„„„„„„„„„„„„„„„„„„11
5.6 接口通讯单元 „„„„„„„„„„„„„„„„„„„„„„„„„„13 6 电源输入单元„„„„„„„„„„„„„„„„„„„„„„„„„„14 7 程序设计„„„„„„„„„„„„„„„„„„„„„„„„„„„„15
7.1 概 述„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„15
7.2 程序结构分析„„„„„„„„„„„„„„„„„„„„„„„„„„ 17
7.3 主程序„„„„„„„„„„„„„„„„„„„„„„„„„„„„„ 18
8. 测设分析„„„„„„„„„„„„„„„„„„„„„„„„„„„„ 18 结论 „„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„19 参考文献„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„ 20 致谢„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„ 21 附录A 使用说明„„„„„„„„„„„„„„„„„„„„„„„„„„„ 22 附录B 程序清单„„„„„„„„„„„„„„„„„„„„„„„„„„„ 22
1 引言
温度控制系统广泛应用于社会生活的各个领域 ,如家电、汽车、材料、电力
电子等 ,常用的控制电路根据应用场合和所要求的性能指标有所不同 , 在工业企业中, 如何提高温度控制对象的运行性能一直以来都是控制人员和现场技术人员努力解决的问题。这类控制对象惯性大, 滞后现象严重, 存在很多不确定的因素, 难以建立精确的数学模型, 从而导致控制系统性能不佳, 甚至出现控制不稳定、失控现象。传统的继电器调温电路简单实用 ,但由于继电器动作频繁 ,可能会因触点不良而影响正常工作。控制领域还大量采用传统的PID 控制方式, 但PID 控制对象的模型难以建立, 并且当扰动因素不明确时, 参数调整不便仍是普遍存在的问题。而采用数字温度传感器DS18B20,因其内部集成了A/D转换器,使得电路结构更加简单,而且减少了温度测量转换时的精度损失,使得测量温度更加精确。数字温度传感器DS18B20只用一个引脚即可与单片机进行通信,大大减少了接线的麻烦,使得单片机更加具有扩展性。由于DS18B20芯片的小型化,更加可以通过单跳数据线就可以和主电路连接,故可以把数字温度传感器DS18B20做成探头,探入到狭小的地方,增加了实用性。更能串接多个数字温度传感器DS18B20进行范围的温度检测。 2 设计要求
设计基于单片计算机的温度控制器,用于控制温度。具体要求如下:
1. 温度连续可调,范围为0℃-40℃
2. 超调量σ%≤20%
3. 温度误差≤±0.5℃
4. 人-机对话方便
3 工作原理
温度传感器 DS18B20 从设备环境的不同位置采集温度,单片机 AT89S51 获取采集的温度值,经处理后得到当前环境中一个比较稳定的温度值,再根据当前设定的温度上下限值,通过加热和降温对当前温度进行调整。当采集的温度经处理后超过设定温度的上限时,单片机通过三极管驱动继电器开启降温设备 (压缩制冷器) ,当采集的温度经处理后低于设定温度的下时 , 单片机通过三极管驱动继电器开启升温设备
(加热器) 。
当由于环境温度变化太剧烈或由于加热或降温设备出现故障,或者温度传感头出现故障导致在一段时间内不能将环境温度调整到规定的温度限内的时候,单片机通过三极管驱动扬声器发出警笛声。
系统中将通过串口通讯连接PC
机存储温度变化时的历史数据,以便观察整个温度的控制过程及监控温度的变化全过程。
3-1工作原理图
4 方案设计
4.1 温度测量部分方案
DS18B20是DALLAS 公司生产的一线式数字温度传感器,它具有微型化、低功耗、高性能抗干扰能力、强易配处理器等优点,特别适合用于构成多点温度测控系统,可直接将温度转化成串行数字信号(按9位二进制数字)给单片机处理,且在同一总线上可以挂接多个传感器芯片,它具有三引脚TO-92小体积封装形式,温度测量范围-
55~+125℃,可编程为9~12位A/D转换精度,测温分辨率可达0.0625℃,被测温度用符号扩展的16位数字量方式串行输出,其工作电源既可在远端引入,业可采用寄生电源方式产生,多个DS18B20可以并联到三根或者两根线上,CPU 只需一根端口线就能与多个DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。从而可以看出DS18B20可以非常方便的被用于远距离多点温度检测系统。
综上,在本系统中我采用温度芯片DS18B20测量温度。该芯片的物理化学性很稳定,它能用做工业测温元件,且此元件线形较好。在0
—100摄氏度时,最大线形偏差小于1摄氏度。该芯片直接向单片机传输数字信号,便于单片机处理及控制。
图4-1温度芯片DS18B20
4.2 主控制部分方案
AT89S51 是一个低功耗,高性能CMOS 8位单片机,片内含8k Bytes ISP(In-system programmable) 的可反复擦写1000次的Flash 只读程序存储器,器件采用ATMEL 公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash 存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。AT89S51具有如下特点:40个引脚,4k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM ),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT )电路,片内时钟振荡器。
此外,AT89S51设计和配置了振荡频率可为0Hz 并可通过软件设置省电模式。空闲模式下,CPU 暂停工作,而RAM 定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM 的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP 、TQFP 和PLCC 等三种封装形式,以适应不同产品的需求。
由于系统控制方案简单 ,数据量也不大 ,考虑到电路的简单和成本等因素 ,因此
在本设计中选用 A TMEL 公司的 A T89S51单片机作为主控芯片。主控模块采用单片机最小系统是由于 A T89S51芯片内含有4 kB的 E2PROM ,无需外扩存储器 ,电路简单可靠 ,其时钟频率为 0~24 MHz ,并且价格低廉 ,批量价在 10元以内。
其主要功能特性:
兼容MCS-51指令系统 4k可反复擦写(>1000次)ISP Flash ROM 32个双向I/O口 4.5-5.5V工作电压
2个16位可编程定时/计数器 时钟频率0-33MHz
全双工UART 串行中断口线 128x8 bit内部RAM
2个外部中断源 低功耗空闲和省电模式
中断唤醒省电模式 3级加密位
看门狗(WDT )电路 软件设置空闲和省电功能
灵活的ISP 字节和分页编程 双数据寄存器指针
可以看出AT89S51提供以下标准功能:4K 字节Flash 闪速存储器,128字节内部RAM ,32个I/O口线,看门狗(WDT ),两个数据指针,两个16位定时器/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟。同时, AT89S51可降至0Hz 的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU 的工作,但允许RAM ,定时/计数器,串行通信口及中断系统继续工作。掉电方式何在RAM 中的内容,但振荡器停止工作并禁止其它所有部件工作直接到一个硬件复位。
AT89S51引角功能说明
Vcc :电源电压
GND :地
P0口:P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口,作为输出口用时,每位能驱动8个TTL 逻辑门电路,对端口写“1”可作为高阻抗输入端口。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。在Flash 编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。
P1口:P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL 逻辑门电路。对端口写“1”, 通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被
外部信号校验期间,P1接收低8位地址。表4-1为P1口第二功能。
表4-1 P1口第二功能
P2口:P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动4个TTL 逻辑门电路。对端口写“1”, 通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流I 。在访问8位地址的外部数据存储器(如执行:MOVX @Ri 指令)时,P2口线上的内(也即特殊功能寄存器,在整个访问期间不改变。Flash 编程或校验时,P2也接收高位地址和其它控制信号。)
P3口:P3口是一组带有内部上拉电阻的8位双向I/O口。P3口输出缓冲级可驱动(吸收或输出电流)4个TTL 逻辑门电路。对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。作输入端口时,被外部拉低的P3口将用上拉电阻输出电流I 。P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,P3口的第二功能如下表4-2。
表4-2 P3口的第二功能
RST:复位输入。当振荡工作时,RST 引脚出现两个机器周期上高电平将使单片机复位。WDT 益出将使该引脚输出高电平,设置SFR AUXR 的 DISRTO 位(地址8EH )可打开或关闭该功能。DISRTO 位缺省为RESET 输出高电平打开状态。
ALE/PROG:当访问外部程序存储器或数据存储器时,ALE (地址锁存允许)输出脉冲用于锁存地址的低8ALE 仍以时钟振荡频率的1/6要注意的是:第当访问
-- 5 --
外部数据存储器时将跳过一个ALE 脉冲。如有必要,可通过对特殊功能寄存器(SFR )区中的8EH 单元的D0位置位,可禁止ALE 操作。该位禁位后,只有一条MOVX 和MOVC 指令ALE 才会被激活。此外,该引脚伎被微弱拉高,单片机执行外部程序时,应设置ALE 无效。
PSEN :程序储存允许(PSEN )输出是外部程序存储器的读选通信号,当AT89S51由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN 有效,即输出两个脉冲。当访问外部数据存储器,高有两次有效的PSEN 信号。
EA/VPP:外部访问允许。欲使CPU 公访问外部程序存储器(地址0000H -FFFFH ),EA 端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA 端状态。如EA 端为高电平(接Vcc 端),CPU 则执行内部程序存储器中的指令。Flash 存储器编程时, 该引脚加上+12V 的编程电压Vpp 。 XTAL1:振荡器反相放大器及内部时钟发生器的输入端。 XTAL2:振荡器反相放大器的输出端。 AT89S51单片机内部构造及功能:
特殊功能寄存器:特殊功能寄存器的片内空间分存如下图3-2所示。这些地址并没有全部占用,没有占用的地址不可使用,读这些地址将得到一个随意的数值。而写这些地址单元将不能得到预期的结果。
中断寄存器:各中断允许控制位于IE 寄存器,5个中断源的中断优先级控制位于IP 寄存器。图4-2为AUXR 辅助寄存器。
图4-2 AUXR辅助寄存器
-- 6 --
双时钟指针寄存器:为方便地访问内部和外部数据存储器,提供了两个16位数据指针寄存储器:PD0位于SFR 区块中的地址82H 、83H 和DP1位于地址84H 、85H ,当SFR 中的位DPS=0时选择DP0, 而DPS=1时选择DP1。在使用前初始化DPS 。
图4-3 双时钟指针寄存器
电源空闲标志:电源空闲标志(POF )在特殊功能寄存储器SFR 中PCON 的第4位(PCON.4), 电源打开时POF 置“1”, 它可由软件设置睡眠状态并不为复位所影响。
存储器结构:MCS-51单片机内核采用程序存储器和数据存储器空间分开的结构,均具有64KB 外部程序和数据的寻址空间。
程序存储器:如果EA 引脚接地(GND ),全部程序均执行外部存储器。在AT89S51, 假如接至Vcc (电源+),程序首先执行从地址0000H -0FFFH (4KB )内部程序存储器,再执行地址为1000H -FFFFH (60KB )的外部程序存储器。
数据存储器:在AT89S51的具有128字节的内部RAM ,这128字节可利用直接或间接
看门狗定时器(WDT ):WDT 是为了解决CPU 程序运行时可能进入混乱或死循环而设置,它由一个14bit 计数器和看狗复位SFR (WDTRST )构成。外部复位时,WDT 默认为关闭状态,要打开WDT ,必按顺序将01H 和0E1H 写到WDTRST 寄存器,当启动了WDT ,它会随晶体振荡器在每个机器周期计数,除硬件复位或WDT 溢出复位外没有其它方法
-- 7 --
关闭WDT ,当WDT 溢出,将使RST 引脚输出高电平的复位脉冲。引脚图详见图4-4
图4-4 AT89S51单片机引脚图
5 各单元的设计 5.1键盘单元
单片机应用系统中除了复位按键有专门的复位电路, 以及专一的复位功能外, 其它的按键或键盘都是以开关状态来设置控制功能或输入数据。
键开关状态的可靠输入 :为了去抖动我采用软件方法,它是在检测到有键按下时,执行一个10ms 的延时程序后,再确认该键电平是否仍保持闭合状态电平,如保持闭合状态电平则确认为真正键按下状态,从而消除了抖动影响
在这种行列式矩阵键盘非编码键盘的单片机系统中,键盘处理程序首先执行等待按键并确认有无按键按下的程序段。当确认有按键按下后,下一步就要识别哪一个按键按下。对键的识别通常有两种方法:一种是常用的逐行扫描查询法;另一种是速度较快的线反转法。
对照图示的4*4键盘,说明线反转法工作原理。首先辨别键盘中有无键按下,有单片机I/O口向键盘送全扫描字,然后读入行线状态来判断。方法是:向行线输出全扫描字00H
,把全部列线置为低电平,然后将列线的电平状态读入累加器A 中。如果
-- 8 --
有按键按下,总会有一根行线电平被拉至低电平从而使行线不全为1。判断键盘中哪一个键被按下是通过将列线逐列置低电平后,检查行输入状态来实现的。方法是:依次给列线送低电平,然后查所有行线状态,如果全为1,则所按下的键不在此列;如果不全为1,则所按下的键必在此列,而且是在与零电平行线相交的交点上的那个键。
键盘共有16个按键,用于方便设定温度。
„
数字按键,输入数字0----9;
设置的确认,修改设置温度时进行确认; 设置的清除,修改设置温度时进行删除;
开启电源
关闭电源
显示及设置转换到温度点1,按此按键后,显示预设置温度的数码管 闪烁; 显示及设置转换到温度点2,按此按键后,显示预设置温度的数码管 闪烁;
表5-1键盘的按键分布
-- 9 --
5.2温度控制及超温和超温警报单元
当采集的温度经处理后超过规定温度上限时,单片机通过 P1.4 输出控制信号驱动三极管 D1 ,使继电器 K1 开启降温设备 ( 压缩制冷设备 ) :当采集的温度经处理后低于设定温度下限时,单片机通过 P1.5 输出控制信号驱动三极管 D2 ,使继电器 K2 开启升温设备 ( 加热器1) 。当由于环境温度变化太剧烈或由于加热或降温设备出现故障,或者温度传感头出现故障导致在一段时间内不能将环境温度调整到规定的温度限内的时候,单片机通过三极管驱动扬声器发出警笛声。具体电路连接如图 5-1 所示。
图5-1具体电路连接图
5.3温度测试单元
采用温度芯片DS18B20。使用集成芯片,能够有效的减小外界的干扰,提高测量
-- 10 --
的精度,简化电路的结构。
5.4 温度控制器件电路
单片机通过三极管控制继电器的通断,最后达到控制电热器的目的。
当温度未达到要求时,单片机发送高电平信号使三极管饱和导通,继电器使电源与电热器接通,电热器加热。温度慢慢升高。
当温度上升到预定温度时,单片机发送低电平信号三极管进入截止状态,继电器的弹片打到另一侧,使电热器与电源断开,电热器停止加热。
继电器电路中有一个三极管8050的保护电路,即将一个二极管反向接到三机管的两端。连接方法如
图5-2 单片机控制信号
图5-2所示。
其原理是:当继电器突然断电时,继电器产生很大的反向电流。二极管的作用是将反向电流分流,使流过三级管8050的电流比较小,达到保护三极管8050的作用。
5.5七段数码管显示单元
本部分电路主要使用七段数码管和移位寄存器芯片74LS164。单片机通过I2C 总线将要显示的数据信号传送到移位寄存器芯片74LS164寄存,再由移位寄存器控制数码管的显示,从而实现移位寄存点亮数码管显示。由于单片机的时钟频率达到12M ,移位寄存器的移位速度相当快,所以我们根本看不到数据是一位一位传输的。从人类视觉的角度上看,就仿佛是全部数码管同时显示的一样。具体见实际连线图如图5-3。 当清除端(CLEAR )为低电平时,输出端(QA -QH )均为低电平。 串行数据输入端(A ,B )可控制数据。当 A、B 任意一个为低电平,则禁止新数据输入,在时钟端(CLOCK )脉冲上升沿作用下 Q0 为低电平。当 A、B 有一个为高电平,则另一个就允许输入数
据,并在
CLOCK 上升沿作用下决定 Q0 的状态,逻辑封装图如图5-3:
-- 11 --
图5-3逻辑封装图
引出端符号:CLOCK 时钟输入端;CLEAR 同步清除输入端(低电平有效);A ,B 串行数据输入端;QA -QH 输出端。真值表:表5-2
表5-2 真值表
-- 12 --
5-V TTL/CMOS电平。每一个发送器将TTL/CMOS电平转换成TIA/EIA-232-F电平。 主要特点 : 1、单5V 电源工作 2、 LinBiCMOSTM工艺技术 3、 两个驱动器及两个接收器 4、 ±30V输入电平
-- 13 --
5、低电源电流:典型值是8mA
6、符合甚至优于ANSI 标准 EIA/TIA-232-E及ITU 推荐标准V.28 7、ESD 保护大于MIL-STD-883(方 法3015)标准的2000V
5 1单片机有一个全双工的串行通讯口,所以单片机和电脑之间可以方便地进行串口通讯。进行串行通讯时要满足一定的条件,比如电脑的串口是RS232电平的,而单片机的串口是TTL 电平的,两者之间必须有一个电平转换电路,我采用了专用芯片MAX232进行转换,虽然也可以用几个三极管进行模拟转换,但是还是用专用芯片更简单可靠。
在本设计中采用了三线制连接串口,也就是说和电脑的9针串口只连接其中的3根线:第5脚的GND 、第2脚的RXD 、第3脚的TXD 。这是最简单的连接方法,但是对我来说已经足够使用了,电路如下图所示,MAX232的第10脚和单片机的11脚连接,第9脚和单片机的10脚连接,第15脚和单片机的20脚连接,串口通讯具体如图5-5
图5-5 通讯接口连线图
6 电源输入部分
控制系统主控制部分电源需要用5V
直流电源供电,其电路如图6-1所示,把频率
-- 14 --
为50Hz 、有效值为220V 的单相交流电压转换为幅值稳定的5V 直流电压。其主要原理是把单相交流电经 过电源变压器、整流电路、滤波电路、稳压电路转换成稳定的直流
电压。
由于输入电压为电网电压,一般情况下所需直流电压的数值和电网电压的有效值相差较大,因而电源变压器的作用显现出来起到降压作用。降压后还是交流电压,所以需要整流电路把交流电压转换成直流电压。由于经整流电路整流后的电压含有较大的交流分量,会影响到负载电路的正常工作。需通过低通滤波电路滤波,使输出电压平滑。稳压电路的功能是使输出直流电压基本不受电网电压波动和负载电阻变化的影响,从而获得稳定性足够高的直流电压。本电路使用集成稳压芯片7805解决了电源稳压问题。
图6-1电源部分连线图
7 程序设计
7.1 程序结构分析
-- 15 --
主程序调用了5个子程序,分别是数码管显示程序、键盘扫描及按键处理程序、温度信号处理程序、继电器控制程序、单片机与PC 机串口通讯程序。
键盘扫描电路及按键处理程序:实现键盘的输入按键的识别及进入相应的程序。 温度信号处理程序:对温度芯片送过来的数据进行处理,进行判断和显示。 数码管显示程序:向数码的显示送数,控制系统的显示部分。 继电器控制程序:控制继电器动作
串口通讯程序:实现PC 机与单片机通讯,将温度数据传送给PC 机。
图7-1程序结构图
-- 16 --
7.2主程序
程序开始的时候先设置初始化,然后就控制数码管显示当前温度。接着就判断F1、F2按键是否被按下。按下F1进入温度控制点1的程序、按下F2进入温度控制点2的程序。程序控制设置温度的两个数码管闪烁的,此时键盘输入有效。
有按键按下的时候进入按键处理程序。按下“确定”按键后,程序进入判断程序和继电器控制程序。继电器动作后,程序回到显示当前程序,并开始循环。
-- 17 --
7.3 程序代码(详见附录 程序清单)
8. 测设分析
1、测试环境
环境温度28摄氏度,室内面积20平方米 测试仪器:数字万用表,温度计0----100摄氏度 2、测试方法
使系统运行,采用温度计同时测量室内度变化情况,得出系统测量的温度。 3、测试结果
设定温度由0摄氏度到40摄氏度
标定温差
4、通过测试分析,对于实际室内的温度控制,可以再提出以下 2 点方法 : Ⅰ增加传感器个数,对各个温度传感器采集的数据进行求算术平均,可得到较为准确的温度值。 Ⅱ对实际室内的温度控制,可采用功率较大的电炉,并且通过风扇对箱内温度进行充分搅和,降温设备可采用空气压缩机等制冷设备。
5、通过实验测试和分析,发现虽然传感器的温度采集精度最高可得到 0.06 ℃,但测试得到的数据最小间隔为 0.03 ℃ 。通过分析,当对浮点数求平均处理时,遇到同一时刻两个传感头采集的温度相差不大,使 0.06 ℃ 时求出平均温度变为 0.03 ℃ 为了解该数据是否真实,可采用一个高精度的数字温度计测试,发现读出的值与其基本一致,由此推断如果在同一时间增加采集温度的个数,则可以进一步提高温度的精度。
-- 18 --
结 论
在工业生产和日常生活中,对温度控制系统的要求,主要是保证温度在一定温度范围内变化,稳定性好,不振荡,对系统的快速性要求不高。在论文中简单分析了单片机温度控制系统设计过程及实现方法。本系统的测温范围为-10℃~40℃,温度检测系统根据用户设定的温度范围完成一定范围的温度控制。
89S51的时钟最高可达12M ,I/O口可达32个,高的时钟频率和丰富的I/O,都为我们实现电路功能提供了非常有利的条件。同时也因为开发环境友好,易用,方便,大大加快本系统设计开发。
本制作的设计中使用了继电器控制的只是插座电路,因此,该系统的可扩展性很强。随着插入插座的电器的不同,可以实现许多其它功能的电路。
-- 19 --
参 考 文 献
1曹巧媛主编. 单片机原理及应用(第二版). 北京:电子工业出版社,2002
2全国大学生电子设计竞赛组委会编. 第五届全国大学生电子设计竞赛获奖作品选编(2001), 北京:北京理工大学出版社,2003
3何力民编. 单片机高级教程. 北京:北京航空大学出版社,2000 4金发庆等编. 传感器技术与应用. 北京机械工业出版社,2002
5王锦标,方崇智.过程计算机控制.北京:清华大学出版社,1997;36~40 6邵惠鹤.工业过程高级控制.上海:上海交通大学出版社,1997;58—62,78—101
7胡寿松.自动控制原理.北京:国防工业出版社,2000;103—124
8刘伯春.智能PID 调节器的设计及应用.电子自动化,1995;(3):20~25 9 Katsuhiko Ogata .Moden Control Engineering .Publishing house of electronics industry,2000:1 96—202
10 周润景,张丽娜.基于PROTEUS 的电路及单片机系统设计与仿真[M].北京:航空航天
大学出版社 ,2006.P321~P326 11王忠飞,胥芳.MCS-51 单片机原理及嵌入式系统应用[M].西安:西安电子科技大学出
版社,2007.P268-273
12 刘国钧,陈绍业,王凤翥. 图书馆目录. 第1版. 北京:高等教育出版社,1957 13 傅承义,陈运泰,祁贵中. 地球物理学基础. 北京:科学出版社,1985,447 14 华罗庚,王元. 论一致分布与近似分析. 中国科学,1973(4):339~357
15 张筑生. 微分半动力系统的不变集研究:[学位论文],北京:数学系统学研究所,1983
16 Microchip 24C01B/02B 8 位PIC单片机产品手册[ED/OL],http://www.chuandong.com/publish/data/2007/2/data_14_27926.html.
17赵娜,赵刚,于珍珠等. 基于51 单片机的温度测量系统[J]. 微计算机信息,2007,1-2:146-148。
18 Borko H,Bernier C L.Indexing concepts and methods .New York:Academic
-- 20 --
致 谢
致 谢
四年的读书生活在这个季节即将划上一个句号,而于我的人生却只是一个逗号,我将面对又一次征程的开始。在这四年的求学生涯中师长、亲友给与了我大力支持,在这个翠绿的季节我将迈开脚步走向远方,怀念,思索,长长的问号一个个在求学的路途中被知识的举手击碎,而人生的思考才刚刚开始。感谢我教书育人的老师,我不是你们最出色的学生,而你们却是我最尊敬的老师。大学时代的老师治学严谨,学识渊博,思想深邃,视野雄阔,为我营造了一种良好的精神氛围。授人以鱼不如授人以渔,置身其间,耳濡目染,潜移默化,使我不仅接受了全新的思想观念,树立了宏伟的学术目标,领会了对待知识,走向社会的思考方式。在这里尤其要感谢刘建林老师,从论文题目的选定到论文写作的指导, 经由您悉心的点拨, 再经思考后的领悟, 常常让我有“山重水复疑无路, 柳暗花明又一村”。
感谢父母,焉得谖草,言树之背,养育之恩,无以回报;感谢同学在我遇到困境时向我伸出援助之手,同窗之谊我们社会再续;感谢这段时间对我帮助给与关怀的叔叔,阿姨,是你们让我看到了人间真情暖人心,激励我时时刻刻努力,奋发向上,排除万难勇往直前。在论文即将完成之际,我的心情无法平静,从开始进入课题到论文的顺利完成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请接受我诚挚谢意!
同时也感谢学院为我提供良好的做毕业设计的环境。
最后再一次感谢所有在毕业设计中曾经帮助过我的良师益友和同学,以及在设计中被我引用或参考的论著的作者。
-- 21 --
附录A :使用说明
1、将温度控制箱上的开关全部打到“关”的位置 2、将温度芯片插到温度控制箱的指定位置
3、用串口线将温度控制箱与计算机相连,打开相应的应用程序 4、将用电器的插头插到温度控制箱的插座
5、接上温度控制箱的电源、并打开开关。在温度控制箱上的数码管显示出当前温度 6、按F1键,进入温度点1的设置。通过键盘设置所需要的温度,然后按“确定”键。系统会将设置值与当前值进行比较,通过温度芯片的反馈,单片机控制加热或冷却水的温度,使水的温度稳定在设置的温度上。从而达到控制温度的作用。 7、按F2键则相应进入温度点2 的设置。与F1键的使用方法相同。 8、当要关闭系统时,先关掉开关,然后再拔掉电源。 框图表示:
附录B:程序清单
主程序:
ORG 0000H ;DS18B20.ASM
DS18SL EQU 41H ;用于保存读出温度的低8位 DS18SH EQU 40H ;用于保存读出温度的高8位 DS18FIG EQU 8H ;是否检测到DS18B20标志位 A_BIT1 EQU 31H ;数码管个位数存放内存位置 B_BIT1 EQU 32H ;数码管十位数存放内存位置 D_BIT1 EQU 35H ;数码管百位数存放内存位置
DS18CD1 EQU 42H ;DS18CD1-DS18CD8暂存64位ROM DS18CD2 EQU 43H ;从低到高 DS18CD3 EQU 44H DS18CD4 EQU 45H
-- 22 --
DS18CD5 EQU 46H DS18CD6 EQU 47H DS18CD7 EQU 48H DS18CD8 EQU 49H DS1864B EQU 4AH DS18ADS EQU 4BH
DS18DQ EQU P1.0 ;30H,31H,32H,33H: X 个位 十位 X MOD7: MOV SP,#60H
LCALL GET_TEMPER ;调用读温度子程序 LCALL READCODE AJMP MOD7
INIT_1820: ;DS18B20初始化 SETB DS18DQ
CLR DS18DQ ;延时,500US 低MC MOV R7,#250 DJNZ R7,$ MOV R7,#150 DJNZ R7,$
SETB DS18DQ ;释放总线
LCALL DELAY60US ;15-60US的等待时间 MOV R6,#4 SETDSDQ: LCALL DELAY60US
JNB DS18DQ,SETDSDQFH ;60-240US内是否有返回信号, 为0跳 DJNZ R6,SETDSDQ MOV R7,#250
-- 23 --
DJNZ R7,$ CLR DS18FIG RET SETDSDQFH: SETB DS18FIG MOV R7,#250 DJNZ R7,$ MOV R7,#100 DJNZ R7,$ RET;
数据处理程序: TEMP0: INC A AJMP TEMP1
TEMPCOV: MOV A,DS18SL ;数据处理子程序 TEMPCOV MOV B,#16 DIV AB JB B.3,TEMP0
TEMP1: MOV 34H,A ;将DS18SL 的高四位右移四位, 存入 34H 中(温度值)
MOV A,B ;将DS18SL 的低四位X10/16得小数后 一位数. MOV B,#10 MUL AB MOV B,#16 DIV AB
MOV 30H,A ;将小数后一位数. 存入30H 中 MOV A,DS18SH ;DS18SH中存放高8位数, 权 重16 MOV B,#16
-- 24 --
MUL AB
ADD A,34H ;34H中存入温度值的整数部分
MOV B,#10
DIV AB
MOV 31H,B ;个位存入31H 中
MOV B,#10 ;
DIV AB ;
MOV 32H,B ;十位存入32H 中
MOV B,#10 ;
DIV AB ;
MOV 35H,B ;百位存入33H 中
MOV A,DS18SH
MOV 33H,#10H ;
JB ACC.7,EXIT7
MOV 33H,#00H
EXIT7: RET
GET_TEMPER: ;读出转换后的温度值, 并显示
SETB DS18DQ
LCALL INIT_1820 ;先复位DS18B20
JB DS18FIG,TSS2
RET ;判断DS1820是否存在? 若DS18B20不存在则返
TSS2:
MOV DS18ADS,#0
DS18JX:
LCALL DS18CODP
MOV A,DS18ADS
ADD A,#9
MOV DS18ADS,A
CJNE A,#63,DS18JX
-- 25 --
RET
DS18CODP:
LCALL MRCOVT ;转换指定的DS18B20的温度
LCALL MRRDTEDP ;显示温度
RET
TEMP:
LCALL INIT_1820
JB DS18FIG,NEXT4
RET
NEXT4:
MOV DS18ADS,#9
MOV A,#0CCH ;SKIP ROM
LCALL WRITE_1820
MOV A,#44H ;温度转换命令
LCALL WRITE_1820
LCALL DELAY1S
LCALL MRRDTEDP
RET; 写DS18B20的子程序(有具体的时序要求)
WRITE_1820: ;写DS18B20
MOV R5,#8
DS18JXWE:
SETB DS18DQ ;初始化
CLR DS18DQ
CLR DS18DQ
MOV R7,#5
DJNZ R7,$ ;拉低15US 内, 写入数据
CLR C
RRC A
MOV DS18DQ,C
LCALL DELAY60US ;持续60US
-- 26 --
SETB DS18DQ ;写完一个位
DJNZ R5,DS18JXWE
RET
READ_1820_CODE: ;读取CODE 64位
MOV R4,#8 ;读8次数
MOV R1,#DS18CD1 ;低位地址存在R1
DS18JXRD3:
MOV R5,#8 ;8位数据
DS18JXRD2:
SETB DS18DQ
CLR DS18DQ ;前两句完成初始化
NOP
NOP ;延时至少1US
SETB DS18DQ ;上升沿, 并在,15US 内读数
MOV R7,#5
DJNZ R7,$
MOV C,DS18DQ
RRC A
LCALL DELAY60US ;读时序, 最少60US
DJNZ R5,DS18JXRD2
MOV @R1,A
INC R1
DJNZ R4,DS18JXRD3
SETB DS18DQ
RET; 读DS18B20的程序, 从DS18B20中读出两个字节的温度数 据
READ_18200:
MOV R4,#2 ;读两次数
MOV R1,#DS18SL ;低位地址存在R1
-- 27 --
DS18JXRD1:
MOV R5,#8 ;8位数据
DS18JXRD:
SETB DS18DQ
CLR DS18DQ ;前两句完成初始化
NOP
NOP ;延时至少1US
SETB DS18DQ ;上升沿, 并在,15US 内读数
MOV R7,#5
DJNZ R7,$
MOV C,DS18DQ
RRC A
LCALL DELAY60US ;读时序, 最少60US
DJNZ R5,DS18JXRD
MOV @R1,A
DEC R1
DJNZ R4,DS18JXRD1
SETB DS18DQ
RET
READ_1820_1: ;读取1位
SETB DS18DQ
CLR DS18DQ
CLR DS18DQ
CLR DS18DQ
SETB DS18DQ
MOV R7,#5
DJNZ R7,$
JB DS18DQ,WEFH
LCALL DELAY10MS
WEFH:
-- 28 --
LCALL DELAY60US
RET
READCODE: ;读取64位ROM, 并显示出来
SETB DS18DQ
LCALL INIT_1820
JB DS18FIG,NEXT
RET
NEXT:
MOV A,#33H
LCALL WRITE_1820
LCALL READ_1820_CODE
LCALL DISPLAYCD
RET
DS1864SEN: ;送出64个位的数据
MOV R4,#8
MOV DPTR,#DS18TAB
DS1864SEN1:
MOV A,DS1864B
MOVC A,@A+DPTR
LCALL WRITE_1820
INC DS1864B
DJNZ R4,DS1864SEN1
RET
MATCHROM:
LCALL INIT_1820
MOV A,#55H ;MARCH ROM
LCALL WRITE_1820
MOV DS1864B,DS18ADS
LCALL DS1864SEN
-- 29 --
RET
MRCOVT: ;匹配ROM 并发出温度转换命令
LCALL MATCHROM
MOV A,#44H ;发出温度转换命令
LCALL WRITE_1820
LCALL DELAY1S
RET
MRRDTEDP: ;匹配ROM 并显示转换温度
LCALL INIT_1820
LCALL MATCHROM
MOV A,#0BEH ;发出读取命令
LCALL WRITE_1820
LCALL READ_18200
LCALL TEMPCOV
LCALL DISPLAY ;调用数码管显示子程序
RET
键盘子程序:
START:NOP ; 程序开始
LCALL CH_KEY ; 检查键盘
AJMP START ; 返回
CH_KEY:LCALL KS ; 检查有没有按键按下
JNZ LK1
AJMP CH_KEY
LK1:LCALL T12MS
ACALL KS
JNZ LK2
RET
LK2:NOP
LCALL SBIE ; 按键识别子程序
MOV BUFF, A ;送缓冲区以识别是数字键还是功能键? -- 30 --
LCALL CH_KF ; 判断按键功能。
JB FLAG1 ,KEY_FUN ;标志为1,则为功能键 超温报警程序:
DIV: MOV R2,#08H;1kz持续时间
DIV1:MOV R3,#0FAH
DIV2:CPL P3.3;输出1khz 方波
LCALL D5ms;调用延时程序1
DJNZR3,DLV2;持续1秒
DJNZ R2,DIV1
MOV R2,#10H;2khz持续时间
DIV3:MOV R3,#0FAH
DI4:CPL P3.3;输出2khz 方波
LCALL D25ms;调用延时程序2
DJNZ R3,DIV4
DJNZ R2,DIV3
SIMP DIV;反复循环
D5MS :MOV R7,#0FFH;延时子程序1
LOOP :NOP
NOP
DJNZ R7,LOOP
RET
D25MS :MOVR6,#0FFH;延时子程序2
LIN :DJNZ R6,LIN
RET
继电器控制程序:
START1:MOV SP,#60H
JD: CPL P2.6 ;P2.6取反
LCALL DELAY ;延时
NOP
SJMP JD
-- 31 --
DELAY: MOV R0,#0AH ;延时子程序(1秒) DELAY33: MOV R1,#00H
DELAY44: MOV R2,#0B2H
DJNZ R2,$
DJNZ R1,DELAY44
DJNZ R0,DELAY33
LJMP START1
RET
-- 32 --