基于AT89C52的温度控制系统设计
摘 要
本课题介绍了基于AT89C52单片机的温度控制系统的硬件电路组成和软件的设计。分别阐述了单片机模块的组成和主要的器件AT89C52芯片的特性、工作原理,温度传感模块的组成和主要芯片DS18B20的特性和工作原理,键盘及显示电路的工作原理和设计方法及其主要的元器件8279,控制器件-继电器的选用和工作原理。同时介绍了主程序流程框图和相应的子程序流程框图,并给出了具体的程序。
关键词:AT89C52;DS18B20;单片机;温度控制
The Design of Temperature Control System based on AT89C52
Liu mei ying
(College of Physics Science and Information Engineering, Jishou University, Jishou, Hunan 416000)
Abstract
This topic introduced based on at AT89C52 monolithic integrated circuit's temperature control system's hardware circuit composition and software's design. Elaborated separately the monolithic integrated circuit module's composition and the main component AT89C52 chip's characteristic, the principle of work, the temperature sensing module's composition and the main chip DS18B20 characteristic and the principle of work, the keyboard and display circuit's principle of work and the design method and the main primary device 8279, control component air relay's selection with the principle of work. Simultaneously introduced the master routine flow diagram and the corresponding subroutine flow diagram, and has given the concrete procedure.
Key words: AT89C52; DS18B20; SCM; Temperature control
I
基于AT89C52的温度控制系统的设计 目 录
目 录
引 言
第一章 系统原理及结构框图……………………………………………………1
1.1 系统原理 ………………………………………………………………1 1.2 系统原理框图 …………………………………………………………1 1.3 系统硬件电路设计 ……………………………………………………2 2.1 单片机模块 ……………………………………………………………3 2.2 温度传感模块 …………………………………………………………6 2.3 键盘、显示模块 ………………………………………………………8 2.4 继电器控制模块 ………………………………………………………12 第三章 系统软件部分……………………………………………………………13 3.1 系统主程序框图 ………………………………………………………13 3.2 键盘处理子程序框图 …………………………………………………14 3.3 DS18B20子程序框图……………………………………………………15 总结…………………………………………………………………………………16 参考文献……………………………………………………………………………17 附录…………………………………………………………………………………18
第二章 系统组成模块……………………………………………………………3
II
基于AT89C52的温度控制系统的设计 引 言
引 言
随着电子技术的迅速发展,特别是超大规模集成电路产生而出现的微型计算机,给人类生活带来了根本性的改变。如果说微型计算机的出现使现代科学研究得到了质的飞跃,那么可以毫不夸张的说,单片机技术的出现则给现代工业测控领域带来了一次新的技术革命。目前,单片机以其高可靠性、高性能价格比,在工业控制系统、数据采集系统、智能化仪器仪表、办公自动化等诸多领域得到极为广泛的应用,并已走入普通家庭,从洗衣机、微波炉到音响、汽车,到处都可见到单片机的踪影,因此,单片机技术开发和应用水平已逐步成为一个国家工业发展水平的标志之一。许多物质的特性与温度有很大的依赖关系,温度的影响甚至是起决定作用的。
传统的温度控制系统采用模拟电路设计,存在不可避免的缺陷,如系统的电路结构复杂,操作困难,系统电路所需的功率较大,温度控制的精度差,易出现温度的漂移,电路结构复杂,缺乏友好的人机界面,温度控制的实时性差等。
单片机的出现使得温度的采集和数据处理等问题能够得到很好的解决,温度是工业对象中的一个重要的被控参数,然而所采用的测温元件和测量方法也不相同,产品的工艺不同,控制温度的精度也不相同。因此对数据采集的精度和采用的控制方法也不相同。
本课题使用单片机作为核心进行控制,单片机具有集成度高,通用性好,功能强,特别是体积小,重量轻,耗能低,可靠性高,抗干扰能力强和使用方便等独特优点,在数字、智能化方面有广泛的用途。本课题介绍的温度控制系统采用AT89C52单片机控制技术对温度进行调节,具有操作简单便捷、采集方便准确、适应性强、成本低以及节省能源等特点,可明显增加使用者的经济效益。该系统不但可以推行到温室中,还可以应用于其它进行温度调节的场合。
本文共分三章:第一章是温度控制系统方案简介;第二章是主芯片的选择以及温度控制模块的介绍;第三章软件系统的设计及程序的流程图,并在附录中给出了具体的程序段。
III
基于AT89C52的温度控制系统的设计 系统原理及结构框图
第一章 系统原理及结构框图
1.1 系统原理
本文从硬件和软件两个方面介绍了单片机的温度控制系统的设计思路,对硬件原理图和程序框图作了简单的描述,此温度控制系统是采用AT89C52单片机为核心进行控制。该系统运用单线数字温度传感器DS18B20检测实际温度,并在数码管上显示。用户可以通过键盘,在允许的温度范围内设定预定温度。单片机通过读入DS18B20所测的温度值,进而与设定温度进行比较,最后判断采取降温措施(打开控制220V电源的继电器驱动电风扇)还是升温措施(打开控制220V电源的继电器驱动电加热器)。系统在每延时一定的时间后,重复地判断是否有新的温度设定值的输入,若有按键则读入新的设定温度,然后进行循环判断;若无按键则读入DS18B20所测的温度值,进行比较判断,再将其温度在数码管上显示出来。如此循环,确保控制系统的温度保持在设定值。
1.2 系统原理框图
图1.1系统原理框图
1
基于AT89C52的温度控制系统的设计 系统原理及结构框图
1.3 系统硬件电路设计
图1.2系统总电路图
2
基于AT89C52的温度控制系统的设计 系统组成模块
第二章 系统组成模块
2.1 单片机模块 [1][7]
单片机模块主要由单片机芯片AT89C52组成,本模块负责与温度传感器、键盘显示驱动传递命令和数据,并进行数据的处理。单片机从8279读入键盘扫描得到的温度设定值,并将数据保存在存储器某一单元。单片机还负责从DS18B20的数据引脚读入实际的温度值,保存在某一单元。最后,单片机对两者进行比较,从而确定执行的操作。
图2.1 89C52单片机引脚图
2.1.1 主要性能参数
·与MCS-51 产品指令和引脚完全兼容 ·256*8位内部RAM
·32可编程I/O线 ·3个16位定时器/计数器
·8个中断源 ·可编程串行UART通道 ·片内振荡器和时钟电路
·8K字节可重擦写flash闪烁存储器 ·全静态工作:0Hz-24Hz ·三级加密程序存储器
3
基于AT89C52的温度控制系统的设计 系统组成模块
·1000次擦写周期 2.1.2 功能特性概述
AT89C52具有以下标准功能: 8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。 2.1.3 管脚说明 (1) VCC:供电电压。 (2) GND:接地。
(3) P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0口能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
(4) P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高电平,可用作输入,P1口被外部下拉为低电平时,将输出电流。在FLASH编程和校验时,P1口作为第八位地址接收。
(5) P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。P2口的管脚被外部拉低,将输出电流,这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
(6) P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流,这是由于上拉的缘故。P3口也可作为AT89C52的一些特殊功能口,管脚备选功能如下:
P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1) P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入) P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通) P3口同时为闪烁编程和编程校验接收一些控制信号。
4
基于AT89C52的温度控制系统的设计 系统组成模块
(7) RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平。 (8) ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令时ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。
(9) /PSEN:外部程序存储器的选通信号。在外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,两次有效的/PSEN信号将不出现。 (10) /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH)工作,不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
(11) XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 (12) XTAL2:来自反向振荡器的输出。 2.1.4 定时与记数
89C52单片机内部设有3个16位的可编程定时器/计数器,简称为定时器O(T0)、定时器l(T1)和定时器2(T2)。可编程是指其功能(如工作方式,定肘时间、量程、启动方式等)均可由指令来确定和改变。在定时器/计数器中除了有3个16位的计数器之外,还有两个特殊功能寄存器(控制寄存器和方式寄存器)。 2.1.5 复位电路
AT89C52单片机复位是使CPU和系统中的其他芯片处于一个确定的初始状态,无论在系统刚开始接通电源时,还是在断开电源或者发生故障后都需要复位。单片机的复位条件是在复位引脚RST加上持续的2个机器周期以上的高电位。
5
基于AT89C52的温度控制系统的设计 系统组成模块
图2.2复位电路
2.1.6 时钟电路
时钟电路是系统的心脏,它控制着系统的工作节奏,时钟频率因型号而异,典型值为12MHz。AT89C52单片机内部有一个带反馈的线形反相放大器,XTAL1,XTAL2分别为反相器输入和输出端,外接晶振和电容组成震荡器。震荡器在加电以后延迟一段时间(约10ms)起振产生时钟。
图2.3时钟电路图
2.2 温度传感模块 [3]
温度传感模块主要由单线数字温度传感器DS18B20组成,主要完成温度的测量,并将其转换成数字量,传送给单片机。
图2.4 温度传感模块图
2.2.1 DS18B20性能特点
6
基于AT89C52的温度控制系统的设计 系统组成模块
① 采用单总线专用技术,既可通过串行口线,也可通过其它I/O口线与微机接口,无须经过其它变换电路,直接输出被测温度值(9位二进制数,含符号位) ② 测温范围为-55℃-+125℃,测量分辨率为0.0625℃ ③ 内含64位经过激光修正的只读存储器ROM ④ 适配各种单片机或系统机
⑤ 用户可分别设定各路温度的上、下限 ⑥ 内含寄生电源。 2.2.2 DS18B20控制方法
在硬件上,DS18B20与单片机的连接有两种方法,一种是Vcc接外部电源,GND接地,I/O与单片机的I/O线相连;另一种是用寄生电源供电,此时Vcc、GND接地,I/O接单片机I/O。无论是内部寄生电源还是外部供电,I/O口线要接5KΩ左右的上拉电阻。
DS18B20有六条控制命令,如表2.1所示:
指 令 温度转换 读暂存器 写暂存器 复制暂存器 重新调E2RAM 约定代码 44H BEH 4EH 48H B8H 操 作 说 明 启动DS18B20进行温度转换 读暂存器9个字节内容 将数据写入暂存器的TH、TL字节 把暂存器的TH、TL字节写到E2RAM中 把E2RAM中的TH、TL字节写到暂存器TH、TL字节 启动DS18B20发送电源供电方式的信号给主CPU 读电源供电方式 B4H 表2.1 DS18B20的六条控制命令
2.2.3 高速暂存存储器
在DS18B20内部结构中有一个高速暂存存储器,该存储器由9个字节组成,其分配如表2.2所示。当温度转换命令发布后,经转换所得的温度值以二进制补码形式存放在高速暂存存储器的第0和第1个字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式如表2.2所示。对应的温度计算:当符号位
7
基于AT89C52的温度控制系统的设计 系统组成模块
S=0时,直接将二进制位转换为十进制;当S=1时,先将补码变为原码,再计算成十进制值。
表2.2 DS18B20暂存器分布
CPU对DS18B20的访问流程是:先对DS18B20初始化,再进行ROM操作命令,最后才能对存储器和数据进行操作。DS18B20每一步操作都要遵循严格的工作时序和通信协议。如主机控制DS18B20完成温度转换这一过程,根据DS18B20的通讯协议,须经三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。
2.3 键盘、显示模块[4][6][7]
键盘、显示模块主要由键盘、显示驱动芯片8279、数码管、3×4键盘矩阵、反相驱动器74LS06组成,完成温度设定数值的输入和温度的显示功能。键盘、显示驱动芯片8279主要完成和单片机芯片进行数据的交换,将单片机送来的、需要显示的数据经反相驱动器74LS06反相后驱动数码管,译码扫描输出信号SL0-SL3完成对数码管的选择,并且自动刷新显示数据。8279还负责扫描键盘,形成键码,并将其送至单片机。数码管显示设定温度和实际温度,键盘完成温度数据的设定。总体电路如图2.5所示:
8
基于AT89C52的温度控制系统的设计 系统组成模块
图2.5 键盘、显示模块电路图
2.3.1 键盘、显示驱动芯片8279
8279芯片是一种通用的可编程键盘显示器接口器件,单个芯片就能完成键盘输入和七段码显示控制两种功能。引脚如图2.6
IRQ:中断请求,高电平有效。为输出线。
D0~D7:数据总线,为双向三态总线,和单片机的数据总线相连接,用于传送CPU和8279之间的命令、数据和状态等信息。
图2.6 8279芯片引脚图
RD、WD:读写选通信号,来自CPU,低电平有效。控制8279读、写操作。
9
基于AT89C52的温度控制系统的设计 系统组成模块
CS:片选信号。CS=0时选中8279,为输入线。
A0:数据选择线,A0=1时,CPU写入8279的数据为命令字、从8279读出的数据为状态;A0=0时,CPU读写的字节均为数据。
RESET:复位端。RESET=1时8279复位,复位时芯片有关状态是:程序时钟编程为31、外部译码键扫描方式,双键互锁,16个字符显示。
CLK:系统时钟。外部时钟输入,经分频后产生100kHz,作为8279的内部时钟。 RL0~RL7:反馈输入线。平时保持“1”,当键盘矩阵结点上有键闭合时,边为“0”。在选通方式时作为8位输入线。
SHIFT:移位信号。高电平有效,可用它扩充键盘功能,作为上、下档功能选择键。在传感器方式或选通方式中无效。
CNTL/STB:控制/选通输入线。高电平有效,常用于扩充键的控制功能,该信号的上升沿可将来自RL0~RL7的数据存入FIFO RAM中。
SL0~SL7:扫描输出线,用于键盘、显示器或传感器的扫描线。 OUTA0~OUTA3:A组段显示数据输出线。 OUTB0~OUTB3:B组段显示数据输出线。
A、B两组可以单独使用,也可合并使用。与多位数字显示的扫描线SL0~SL3同步。
BD:消隐输出线,低电平有效。当有显示切换或消隐命令时,使显示器消灭。2.3.2 8279内部结构
1.I/O控制和数据缓冲器
数据缓冲器是双向缓冲器,连接内部总线和外部总线D7~D0,用于传送CPU和8279之间的命令状态和数据。
I/O控制线是CPU对8279进行控制的引线,CS是片选信号,A0用于区别信息的特征。
2.控制逻辑
控制与定时寄存器用来寄存键盘和显示器的工作方式以及由CPU编程的其他操作方式。这些寄存器一旦接受锁存送来的命令,就通过译码产生相应的信号,从而完成相应的控制功能。
定时和控制包含一些计数器,其中有一个5位计数器,对CLK引线输入的时钟信号进行分频,产生100kHz的定时信号,然后再经过分频为键盘扫描提供适当的逐行扫描频率和显示扫描时间。
3.扫描计数器
扫描计数器有编码和译码两种工作方式。按编码方式工作时,扫描计数器的状态从SL0~SL3输出,通过外部译码器,可以外接16位显示器和8×8键盘;按译码
10
基于AT89C52的温度控制系统的设计 系统组成模块
方式工作时,扫描计数器的低2位的状态从SL0~SL3输出,状态为00,SL0输出低电平,SL1~SL3输出高电平;状态为01,SL1输出为低电平,其他输出为高电平…此时只能外接4位显示器和4×8键盘。
4.键输入控制和FIFO(先进先出)RAM
这部分电路可以完成对键盘的自动扫描,锁存RL0~RL7的输入信号,搜索闭合键,去除键抖动,并将键输入数据写入先进先出存储器(FIFO RAM)。8279具有8个字节先进先出的键输入存储器,当FIFO RAM中存有键盘上闭合键的键码时,IRQ变为高电平,向CPU请求中断:当CPU从FIFO RAM中读取数据时,IRQ变为低电平。若RAM中仍有数据,则IRQ再次恢复高电平;当CPU将RAM中的输入数据全部读出时,IRQ下降为低电平。
键盘扫描方式中,8279输入数据按下列格式存放:
D7 D6 D5 D4 D3 D2 D1 D0 CNTL SHITF SCAN RETURN CNTL(D7):控制键CNTL的状态 SHITF(D6):控制键SHITF的状态
SCAN(D5~D3):输入键的行数,由SLO~SL2的状态确定 RETURN(D2~D0):指出输入键的列数,由RL0~RL7状态确定
5.显示RAM和显示地址寄存器
8279中有16个字节的显示寄存器。CPU将段数据写入显示存储器,存储的显示数据轮流从显示寄存器输出,CPU将显示数据写入存储器有左端送入和右端送入两种方式。左端送入为依次填入方式,右端送入为移位方式,显示寄存器的输出与显示扫描配合,不断的将显示RAM中的数据在显示器上显示出来,也可以合送一个8位的二进制数据。
显示地址寄存器用来寄存由CPU进行读/写显示RAM的地址,它可以由命令设定,也可以设置成每次读出或写入之后自动递增。 2.3.3 键盘和数码管
在本模块中键盘向单片机芯片输入用户准备设定的温度值,显示部分的数码管显示设定的温度值和实际温度值。现规定设定温度值在0℃到99℃之间,故需要显示的数码位数为两位数,需要的数码管总数为4,用于温度设定的键盘采用3×4键盘矩阵。
结合上述8279芯片的介绍,显示电路采用译码扫描、4字符显示、左进工作方式,数码管采用共阳极LED数码管。扫描输出SL0~SL3已经过译码,故可直接作为4个数码管的选通信号,轮流刷新4个数码管。OUTA0~3与OUTB0~3共同作为显示输出,经74LS06反相驱动后接至LED显示器,每个输出驱动一段,各个数码管相同的段连接在一起。显示内容来自显示RAM。现规定第一位数码管显示设定温度的十位数字,
11
基于AT89C52的温度控制系统的设计 系统组成模块
第二位数码管显示设定温度的个位数字,第三位数码管显示实际温度的十位数字,第四位显示实际温度的个位数字。键盘的12个键中,10个键用于设定温度值的0-9这10个数,一个键用于删除输入错误的数字,一个用于确定所输入的温度值。按键及相关说明如表2.3所示:
表2.3 按键及相关说明
按键 S0 S1 S2 S3 S4 S5 S6 S7 S8 S9 S10 S11 行扫描信号 SL2 1 1 0 1 1 0 1 1 0 1 1 0 1 0 1 1 0 1 1 0 1 1 0 1 0 1 1 0 1 1 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 0 0 0 列扫描信号 RL1 1 1 1 0 0 0 1 1 1 1 1 1 RL0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 键盘扫描数据 11000000 11001000 11010000 11000001 11001001 11010001 11000010 11001010 11010010 11000011 11001011 11010011 SL1 SL0 RL3 RL2 键码 0 1 2 3 4 5 6 7 8 9 10 11 2.4 继电器控制模块 [7]
本模块主要是用来控制温度高低,当环境的温度高于或低于设定的温度值,继电器开始工作,进行降温或升温以达到设定温度值。
12
基于AT89C52的温度控制系统的设计 系统组成模块
图2.7 继电器模块
2.4.1 继电器接点说明
NC:常闭点,以COM为共同点,NC与COM在平时是呈导通状态的。 COM:共通点,输出控制接点的共同接点。
NO:常开点,NO和COM平时呈开路的状态,当继电器工作时,NO和COM导通,NC和COM则呈开路状态。
在本设计中为了达到降温或升温的目的, 在单片机的P1.1和 P1.7脚分别接一个继电器,一个继电器的3脚和2脚间接加热电炉另一个继电器的3脚和2脚间接风扇,当继电器P1脚输入一个低电平时,C8550B处于截至状态,继电器不工作,当给一个高电平时,由于磁场的吸合作用使得继电器开始工作,同时1脚和3脚断开,2脚和3脚接通。从外面可以看到发光二极管点亮,说明继电器在正常的工作。
13
基于AT89C52的温度控制系统的设计 系统软件部分
第三章 系统软件部分
3.1 系统主程序框图 [8]
本系统的流程框图中,设Ts 设定温度Tr实际温度,主要完成AT89C52芯片、8279芯片和DS18B20的初始化,对继电器、数码显示管的初始化,完成对键盘处理子程序、18B20子程序、显示子程序的调用,并完成对温度值的比较判断,然后根据判断进行相应的处理。(温度处理中,允许最大的温差为3℃)
图3.1 主程序框图
14
基于AT89C52的温度控制系统的设计 系统软件部分
3.2 键盘处理子程序框图
键盘处理子程序流程框图主要完成对键盘设置温度值进行处理,本课题中共需要设置两位数字。框图将数字位数送入R1,将读入的键盘值送入缓冲单元28H,完成初始化后,循环判断是否有按键,有,则读入键码值并将其转换成二进制数并存储在指定单元,计数器减1,地址增1;无,则返回继续判断是否存在按键。
图3.2 键盘处理子程序框图
15
基于AT89C52的温度控制系统的设计 系统软件部分
3.3 DS18B20子程序框图
DS18B20子程序框图主要完成对温度传感器DS18B20的初始化和从18B20中读出数据的操作。单片机对DS18B20的数据引脚进行500uS的低电平复位,并判断复位是否成功。没有成功则继续进行复位;复位成功则进行读操作。每一次对DS18B20进行读写操作先必须依次经过复位、ROM指令。
图3.3 DS18B20子程序框图
16
基于8098单片机温度控制系统的设计 总 结
总 结
此设计介绍了基于AT89C52温度控制系统的硬件电路组成和软件设计方法。文章分别介绍了单片机模块、温度传感器DS18B20模块、键盘和显示模块、继电器模块的工作原理和程序的设计。本设计主要有以下几方面优点:
1)本文设计的温度控制系统是一个高性能的智能温度控制系统。
2)控制系统充分应用了AT89C52单片机的软硬件资源,使设计的系统结构简单,可靠性高,抗干扰能力强。
3)系统采用集成温度传感器DS18B20检测温度信号,检测精度高,线性度好,且体积小,成本低。
随着科技的迅速发展,各类控制技术在应用领域越来越广泛,特别是简单易行的控制装置,有待于开发和应用。提高自动化技术的水平,推动自动化应用领域,是每个电器工程技术人员的职责。目前,随着单片机技术的日臻完善,系统更趋于模块化和程序化。本电路系统对温度控制设计提供较为初级的硬件设计依据,可以广泛应用于工业、商业中。当然,系统中还有许多知识考虑不够完善,可能会有更好的办法,希望能够得到老师的指正。
17
基于AT89C52的温度控制系统的设计 参考文献
参考文献
[1]李伯成.基于MCS-51系列单片机的嵌入式系统设计[M].北京:电子工业出版社,2004,78~ 102
[2]何立民.单片机应用系统(系统配置与接口技术)[M].北京:北京航空航天大学出版社,1994, 209~217
[3]王之芳.传感器应用技术[M].西安:西北工业大学出版社,1995,27~33
[4朱定华,戴汝平.MCS-51单片微机原理及应用[M].北京:清华大学出版社,2003,204~106 [5]张毅刚,彭喜源,曲春波.MCS-51单片机应用设计[M]. 哈尔滨:哈尔滨工业大学出版社,1997, 23~27
[6]张积东,孙积第.单片机51/98开发与应用[M].北京:电子工业出版社,1994,141~147 [7]陈明荧.8051单片机(课程设计实训教材)[M].北京:清华大学出版社,2004,89~92 [8]张友德,赵志英.单片机原理应用与实验[M].上海:复旦大学出版社,1992,24~45 [9]张毅刚.MCS-51单片机应用设计[M].哈尔滨:哈尔滨工业大学出版社,1997,66~70 [10]Intel. Microcontroller Handbook[M].1989,14~17
18
基于AT89C52的温度控制系统的设计 附 录
附 录
单片机内存分配申明:
TEMPES TEMPER_L TEMPER_H FLAG1 LO HI
FLAG2 A_BIT B_BIT C_BIT D_BIT SDWD SJWD SW1 SW2 DS18 SJK MLK 8CLK ORG JMP ORG MAIN: CLR CLR MOV MOV MOV MOV MOV MOV MOV
INIT_1820:SETB NOP CLR MOV TER1:MOV DJNZ
EQU 27H ;用于保存设定温度值
EQU 29H ;用于保存实际温度Tr的低8位 EQU 28H ;用于保存实际温度Tr的高8位 EQU 38H ;是否检测到DS18B20标志未 EQU #0F60H ;定时器低字节 EQU #0F6H ;定时器高字节 EQU 39H ;按键标志位 EQU 20H ;数码管实际温度Tr个位数存放位置 EQU 21H ;数码管实际温度Tr十位数存放位置 EQU 18H ;数码管设定温度Ts个位数存放位置 EQU 19H ;数码管设定温度Ts十位数存放位置 EQU 30H ;转换后的设置温度 EQU 31H ;转换后的实际温度
EQU P1.1 ;继电器1控制引脚,加热继电器 EQU P1.7 ;继电器2控制引脚,降温继电器 EQU P1.0 ;DS18B20的数据引脚 EQU FFE8H ;8279的数据口 EQU FFEAH ;8279的命令口 EQU ALK ;8279的时钟信号输入端 00H MAIN 0BH
SW1 ;关继电器1 SW2 ;关继电器2 A_BIT,#0 B_BIT,#0 C_BIT,#0 D_BIT,#0 TEMPES,#0 TEMPER_L,#0 TEMPER_H,#0 DS18 DS18 ;主机发出延时537微妙的复位低脉冲R1,#3 R0,#107 R0,$
18
基于AT89C52的温度控制系统的设计 附 录
DJNZ SETB NOP NOP NOP NOP MOV TSR2: JNB DJNZ LJMP TSR3: SETB LJMP TSR4: CLR LJMP TSR5: MOV TDR6: DJNZ TSR7: SETB RET
LP: MOVX JB MOV MOVX MOVX LCALL MOV SETB SETB SETB INIT_TIMTR:MOV MOV MOV MOV SETB SETB SETB JNB CPL MOV CLR MOV MOV MOVX
ZHUCHXU:LCALL
R1,TSR1 DS18
;拉高数据线
R0,#25H DS18,TSR3 ;等待DS18B20回应 R0,TSR2 ;延时
TSR4 FLAG1 ;置标志位,表示DS18B20存在 TSR5 FLAG1 ;清标志位,表示DS18B20不存在
TSR7 R0,#117 R0,TSR6 ;时序要求延时一端时间
DS18
A, @DPTR ACC.7,LP A,#2AH ;S时钟十分频成100KHz @DPTR,A
@DPTR,#DISHBH ;提示符0000代码首地址 DIS
27H,#80H IT EA EX1
TMOD,#22H ;定时器初始化,使用定时器0模式2 IE,#00H ;启用定时器0中断产生 TL0,#L0 ;加载低字节 TH0,#HI ;加载高字节 TR0 ;启动定时器0开始记时 EA ET0 TF0,$ 8CLK SP,#60H EA
DPTR,#MLK A,#0D1H @DPTR,A JPCL
19
基于AT89C52的温度控制系统的设计 附 录
LCALL AA: LCALL MOV CJNE XD: LCALL LJMP PD: JC SUB CJNE LCALL PD2: JNC LCALL PD1: ADD CJNE LCALL PD2: JC LCALL SW: SETB JMP JW: SETB JMP 键盘处理子程序:JPLC: MOV MOV JNB MOVX MOV MOVX MOVX MOVX ANL MOVX INC DJNZ JMP JX: MOV MOV MOVX MOV JM: DJNZ AJMP CJNE MOV
DISPLAY GET_TEMPER
A,SJWD ;温度比较 A,SDWD,PD DISPLAY ZHUCHXU PD1 A,3 A,SDWD,PD2 XD JW XD A,#3 A,SDWD,PD2 XD SW XD SW1 AA SW2 AA R1,#2
R2,27H IE0,$ ;等待键盘的输入 DPTR,MLK A,#40H DPTR,A DPTR,SJK A,@DPTR A, #3FH @R2, A @R2 @R2,JX RET
DPTR,#TABLE1
R3, #0BH A,@R2
R4,#TABLE2
R3, #2
JX
A,@R4,#4 R2,@DPTR
20
基于AT89C52的温度控制系统的设计 附 录
AJMP RET INC @R4 INC @DPTR DEC @R3 AJMP JM
TABLE1: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8FH,8DH,90H,BFH,0FFH TABLE2:DB 0H,8H,20H,1H,9H,11H,2H,AH,12H,3H,0BH,23H
DS18B20子程序:
GET_TEMPER:SETB DS18 LCALL INIT_1820 ;先复位DS18B20 JB FLAG1,TSS2 RET ;判断DS18B20是否存在?若DS18B20 不存在则返回 TSS2: MOV A,#0CCH ;跳过ROM匹配 MOV A,#44H ;发出温度转换命令
LCALL DISPLAY ;这里通过调用显示子程序实现延时一
段时间,等待转换结束
LCALL INIT_1820 ;准备读温度前先复位 MOV A,#0CCH ;跳过ROM匹配 LCALL WRITE_1820 MOV A,#0BEH ;发出读温度命令 CALL READ_1820 ;将读出的温度数据保存到28H/29H RET
;读DS18B20的程序,从DS18B20中读出两个字节的温度数据 READ_1820:MOV R4,#2 ;将温度高位和低位从DS18B20中读出
MOV R1,29H ;低位存如29H(TEMPER_L)高位存入 28H(TEMPER_H) RE00: MOV R2,#8 ;数据一共8位 RE01: CLR C SETB DS18 NOP NOP CLR DS18 NOP NOP NOP SETB DS18 MOV R3,#9 RE10: DJNZ R3,RE10 MOV C,DS18 MOV R3,#23 RRC A
21
因篇幅问题不能全部显示,请点此查看更多更全内容