温度控制器.docx

上传人:b****2 文档编号:2072665 上传时间:2023-05-02 格式:DOCX 页数:18 大小:140.50KB
下载 相关 举报
温度控制器.docx_第1页
第1页 / 共18页
温度控制器.docx_第2页
第2页 / 共18页
温度控制器.docx_第3页
第3页 / 共18页
温度控制器.docx_第4页
第4页 / 共18页
温度控制器.docx_第5页
第5页 / 共18页
温度控制器.docx_第6页
第6页 / 共18页
温度控制器.docx_第7页
第7页 / 共18页
温度控制器.docx_第8页
第8页 / 共18页
温度控制器.docx_第9页
第9页 / 共18页
温度控制器.docx_第10页
第10页 / 共18页
温度控制器.docx_第11页
第11页 / 共18页
温度控制器.docx_第12页
第12页 / 共18页
温度控制器.docx_第13页
第13页 / 共18页
温度控制器.docx_第14页
第14页 / 共18页
温度控制器.docx_第15页
第15页 / 共18页
温度控制器.docx_第16页
第16页 / 共18页
温度控制器.docx_第17页
第17页 / 共18页
温度控制器.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

温度控制器.docx

《温度控制器.docx》由会员分享,可在线阅读,更多相关《温度控制器.docx(18页珍藏版)》请在冰点文库上搜索。

温度控制器.docx

温度控制器

技术参数和设计任务:

1、利用单片机AT89S51实现对温度物理量的控制,以实现对温度控制的目的;2、为达到电源输出5V电压目标,完成电源电路的设计;3、为达到数码管显示目标,完成显示电路的设计;4、为达到键盘控制的目标,完成键盘电路的设计;5、为达到检测温度的目标,完成检测电路的设计;6、完成报警设计;7、进行软件设计[分配系统资源,编写系统初始化和主程序模块;编写数字调节器软件模块;编写A/D转换器处理程序模块;编写输出控制程序模块;其它程序模块(数字滤波、显示与键盘等处理程)等等。

一、本课程设计系统概述1、系统原理温度传感器DS18B20从设备环境的不同位置采集温度,单片机AT89S51获取采集的温度值,经处理后得到当前环境中一个比较稳定的温度值,再根据当前设定的温度上下限值,通过加热和降温对当前温度进行调整。

当采集的温度经处理后超过设定温度的上限时,单片机通过三极管驱动继电器开启降温设备(压缩制冷器),当采集的温度经处理后低于设定温度的下时,单片机通过三极管驱动继电器开启升温设备(加热器)。

当由于环境温度变化太剧烈或由于加热或降温设备出现故障,或者温度传感头出现故障导致在一段时间内不能将环境温度调整到规定的温度限内的时候,单片机通过三极管驱动扬声器发出警笛声。

系统中将通过串口通讯连接PC机存储温度变化时的历史数据,以便观察整个温度的控制过程及监控温度的变化全过程。

2、系统结构图本设计以AT89S51单片机为主控核心设计的一个温度控制系统,低温时可控制加热设备,高温时控制风扇,超出设定最高温度值时蜂鸣器发出声响报警。

图1总体硬件方框图

3、文字说明控制方案

(1)温度测量部分方案

DS18B20是DALLAS公司生产的一线式数字温度传感器,它具有微型化、低功耗、高性能抗干扰能力、强易配处理器等优点,特别适合用于构成多点温度测控系统,可直接将温度转化成串行数字信号(按9位二进制数字)给单片机处理,且在同一总线上可以挂接多个传感器芯片,它具有三引脚TO-92小体积封装形式,温度测量范围-55~+125℃,可编程为9~12位A/D转换精度,测温分辨率可达0.0625℃,被测温度用符号扩展的16位数字量方式串行输出,其工作电源既可在远端引入,业可采用寄生电源方式产生,多个DS18B20可以并联到三根或者两根线上,CPU只需一根端口线就能与多个DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。

从而可以看出DS18B20可以非常方便的被用于远距离多点温度检测系统。

(2)主控制部分方案AT89S51是一个低功耗,高性能CMOS8位单片机,片内含8kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。

AT89S51具有如下特点:

40个引脚,4kBytesFlash片内程序存储器,128bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。

此外,AT89S51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。

空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。

同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。

由于系统控制方案简单,数据量也不大,考虑到电路的简单和成本等因素,因此在本设计中选用ATMEL公司的AT89S51单片机作为主控芯片。

主控模块采用单片机最小系统是由于AT89S51芯片内含有4kB的E2PROM,无需外扩存储器,电路简单可靠,其时钟频率为0~24MHz,并且价格低廉,批量价在10元以内。

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口第二功能。

表1系统P1口第二功能表

端口引脚

第二功能

P1.5

MOSI(用于ISP编程)

P1.6

MISO(用于ISP编程)

P1.7

SCK(用于ISP编程)

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/O口线外,更重要的用途是它的第二功能,P3口的第二功能如下表2。

表2系统P3口的第二功能表

端口功能

第二功能

端口引脚

第二功能

RXD(P3.0)

串行输入口

T0(P3.4)

定时/计数器0外部输入

TXD(P3.1)

串行输出口

T1(P3.5)

定时/计数器1外部输入

INT0(P3.2)

外中断0

WR(P3.6)

外部数据存储器写选通

INT1(P3.3)

外中断1

RD(P3.7)

外部数据存储器读选通

RST:

复位输入。

当振荡工作时,RST引脚出现两个机器周期上高电平将使单片机复位。

WDT益出将使该引脚输出高电平,设置SFRAUXR的DISRTO位(地址8EH)可打开或关闭该功能。

DISRTO位缺省为RESET输出高电平打开状态。

PSEN:

程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89S51由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。

当访问外部数据存储器,高有两次有效的PSEN信号。

AT89S51单片机内部构造及功能:

特殊功能寄存器:

特殊功能寄存器的片内空间分存如下图3所示。

这些地址并没有全部占用,没有占用的地址不可使用,读这些地址将得到一个随意的数值。

中断寄存器:

各中断允许控制位于IE寄存器,5个中断源的中断优先级控制位于IP寄存器。

下图为AUXR辅助寄存器。

电源空闲标志:

电源空闲标志(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字节可利用直接或间接寻址方式访问,堆栈操作可利用间接寻址方式进行,128字节均可设置为堆栈区空间。

看门狗定时器(WDT):

WDT是为了解决CPU程序运行时可能进入混乱或死循环而设置,它由一个14bit计数器和看狗复位SFR(WDTRST)构成。

外部复位时,WDT默认为关闭状态,要打开WDT,必按顺序将01H和0E1H写到WDTRST寄存器,当启动了WDT,它会随晶体振荡器在每个机器周期计数,除硬件复位或WDT溢出复位外没有其它方法关闭WDT,当WDT溢出,将使RST引脚输出高电平的复位脉冲。

引脚图详见图3

图3AT89S51单片机引脚图

二、各单元硬件设计

(1)键盘单元单片机应用系统中除了复位按键有专门的复位电路,以及专一的复位功能外,其它的按键或键盘都是以开关状态来设置控制功能或输入数据。

键开关状态的可靠输入:

为了去抖动我采用软件方法,它是在检测到有键按下时,执行一个10ms的延时程序后,再确认该键电平是否仍保持闭合状态电平,如保持闭合状态电平则确认为真正键按下状态,从而消除了抖动影响对照图示的4*4键盘,说明线反转法工作原理。

首先辨别键盘中有无键按下,有单片机I/O口向键盘送全扫描字,然后读入行线状态来判断。

方法是:

向行线输出全扫描字00H,把全部列线置为低电平,然后将列线的电平状态读入累加器A中。

如果有按键按下,总会有一根行线电平被拉至低电平从而使行线不全为1。

判断键盘中哪一个键被按下是通过将列线逐列置低电平后,检查行输入状态来实现的。

方法是:

依次给列线送低电平,然后查所有行线状态,如果全为1,则所按下的键不在此列;如果不全为1,则所按下的键必在此列,而且是在与零电平行线相交的交点上的那个键。

键盘共有16个按键,用于方便设定温度。

…,数字按键,输入数字0----9;

设置的确认,修改设置温度时进行确认;

设置的清除,修改设置温度时进行删除;

开启电源

关闭电源

显示及设置转换到温度点1,按此按键后,显示预设置温度的数码管闪烁;

显示及设置转换到温度点2,按此按键后,显示预设置温度的数码管闪烁;

表3系统键盘的按键分布表

P2.0

0

1

2

3

P2.1

4

5

6

7

P2.2

8

9

F1

F2

P2.3

清除

开启

关闭

确定

P2.4

P2.5

P2.6

P2.7

 

(2)温度控制及超温和超温警报单元当采集的温度经处理后超过规定温度上限时,单片机通过P1.4输出控制信号驱动三极管D1,使继电器K1开启降温设备(压缩制冷设备):

当采集的温度经处理后低于设定温度下限时,单片机通过P1.5输出控制信号驱动三极管D2,使继电器K2开启升温设备(加热器1)。

当由于环境温度变化太剧烈或由于加热或降温设备出现故障,或者温度传感头出现故障导致在一段时间内不能将环境温度调整到规定的温度限内的时候,单片机通过三极管驱动扬声器发出警笛声。

(3)温度测试单元采用温度芯片DS18B20。

使用集成芯片,能够有效的减小外界的干扰,提高测量的精度,简化电路的结构。

(4)温度控制器件电路单片机通过三极管控制继电器的通断,最后达到控制电热器的目的。

当温度未达到要求时,单片机发送高电平信号使三极管饱和导通,继电器使电源与电热器接通,电热器加热。

温度慢慢升高。

当温度上升到预定温度时,单片机发送低电平信号三极管进入截止状态,继电器的弹片打到另一侧,使电热器与电源断开,电热器停止加热。

继电器电路中有一个三极管8050的保护电路,即将一个二极管反向接到三机管的两端。

连接方法如图4所示。

图4单片机控制信号

其原理是:

当继电器突然断电时,继电器产生很大的反向电流。

二极管的作用是将反向电流分流,使流过三级管8050的电流比较小,达到保护三极管8050的作用。

(5)七段数码管显示单元本部分电路主要使用七段数码管和移位寄存器芯片74LS164。

单片机通过I2C总线将要显示的数据信号传送到移位寄存器芯片74LS164寄存,再由移位寄存器控制数码管的显示,从而实现移位寄存点亮数码管显示

当清除端(CLEAR)为低电平时,输出端(QA-QH)均为低电平。

串行数据输入端(A,B)可控制数据。

当A、B任意一个为低电平,则禁止新数据输入,在时钟端(CLOCK)脉冲上升沿作用下Q0为低电平。

当A、B有一个为高电平,则另一个就允许输入数据,并在CLOCK上升沿作用下决定Q0的状态,逻辑封装图如图5:

图5逻辑封装图

引出端符号:

CLOCK时钟输入端;CLEAR同步清除输入端(低电平有效);A,B串行数据输入端;QA-QH输出端。

真值表:

表4

表4系统真值表

Input

Output

Clear

Clock

A

B

QA

QB

QH

L

X

X

X

L

L

L

H

L

X

X

QAD

QBD

QHD

H

H

H

H

QAN

QGN

H

L

X

L

QAN

QGN

H

X

L

L

QAN

QGN

图6数码管实际连线图

(6)接口通讯单元max232资料简介:

该产品是由德州仪器公司(TI)推出的一款兼容RS232标准的芯片。

51单片机有一个全双工的串行通讯口,所以单片机和电脑之间可以方便地进行串口通讯。

进行串行通讯时要满足一定的条件,比如电脑的串口是RS232电平的,而单片机的串口是TTL电平的,两者之间必须有一个电平转换电路,我采用了专用芯片MAX232进行转换,虽然也可以用几个三极管进行模拟转换,但是还是用专用芯片更简单可靠。

在本设计中采用了三线制连接串口,也就是说和电脑的9针串口只连接其中的3根线:

第5脚的GND、第2脚的RXD、第3脚的TXD。

这是最简单的连接方法,但是对我来说已经足够使用了,电路如下图所示,MAX232的第10脚和单片机的11脚连接,第9脚和单片机的10脚连接,第15脚和单片机的20脚连接,串口通讯具体如图7

图7通讯接口连线图

(7)电源输入部分控制系统主控制部分电源需要用5V直流电源供电,其电路如图10所示,把频率为50Hz、有效值为220V的单相交流电压转换为幅值稳定的5V直流电压。

由于输入电压为电网电压,一般情况下所需直流电压的数值和电网电压的有效值相差较大,因而电源变压器的作用显现出来起到降压作用。

稳压电路的功能是使输出直流电压基本不受电网电压波动和负载电阻变化的影响,从而获得稳定性足够高的直流电压。

本电路使用集成稳压芯片7805解决了电源稳压问题。

如图8

图8电源部分连线图

三、软件设计

(1)程序结构分析

键盘扫描电路及按键处理程序:

键盘的输入按键的识别及进入相应的程序。

温度信号处理程序:

对温度芯片送过来的数据进行处理,进行判断和显示。

数码管显示程序:

向数码的显示送数,控制系统的显示部分。

继电器控制程序:

控制继电器动作

串口通讯程序:

实现PC机与单片机通讯,将温度数据传送给PC机。

(2)主程序

图9主程序图

程序开始的时候先设置初始化,然后就控制数码管显示当前温度。

接着就判断F1、F2按键是否被按下。

按下F1进入温度控制点1的程序、按下F2进入温度控制点2的程序。

程序控制设置温度的两个数码管闪烁的,此时键盘输入有效。

有按键按下的时候进入按键处理程序。

按下“确定”按键后,程序进入判断程序和继电器控制程序。

继电器动作后,程序回到显示当前程序,并开始循环。

(3)程序代码

主程序:

ORG0000H;DS18B20.ASM

DS18SLEQU41H;用于保存读出温度的低8位

DS18SHEQU40H;用于保存读出温度的高8位

DS18FIGEQU8H;是否检测到DS18B20标志位

A_BIT1EQU31H;数码管个位数存放内存位置

B_BIT1EQU32H;数码管十位数存放内存位置

D_BIT1EQU35H ;数码管百位数存放内存位置

DS18CD1EQU42H;DS18CD1-DS18CD8暂存64位ROM

DS18CD2EQU43H;从低到高

DS18CD3EQU44H

DS18CD4EQU45H

DS18CD5EQU46H

DS18CD6EQU47H

DS18CD7EQU48H

DS18CD8EQU49H

DS1864BEQU4AH

DS18ADSEQU4BH

DS18DQEQUP1.0;30H,31H,32H,33H:

X个位十位X

MOD7:

MOVSP,#60H

LCALLGET_TEMPER;调用读温度子程序

LCALLREADCODE

AJMPMOD7

INIT_1820:

   ;DS18B20初始化

SETBDS18DQ

CLRDS18DQ ;延时,500US低MC

MOVR7,#250

DJNZR7,$

MOVR7,#150

DJNZR7,$

SETBDS18DQ  ;释放总线

LCALLDELAY60US  ;15-60US的等待时间

MOVR6,#4

SETDSDQ:

LCALLDELAY60US

JNBDS18DQ,SETDSDQFH;60-240US内是否有返回信号,为0跳

DJNZR6,SETDSDQ

MOVR7,#250

DJNZR7,$

CLRDS18FIG

RET

SETDSDQFH:

SETBDS18FIG

MOVR7,#250  

DJNZR7,$

MOVR7,#100

DJNZR7,$

RET;

数据处理程序:

TEMP0:

INCA

AJMPTEMP1

TEMPCOV:

MOVA,DS18SL;数据处理子程序

TEMPCOV

MOVB,#16

DIVAB

JBB.3,TEMP0

TEMP1:

MOV34H,A;将DS18SL的高四位右移四位,存入34H中(温度值)

MOVA,B;将DS18SL的低四位X10/16得小数后一位数.

MOVB,#10

MULAB

MOVB,#16

DIVAB

MOV30H,A;将小数后一位数.存入30H中

MOVA,DS18SH;DS18SH中存放高8位数,权重16

MOVB,#16

MULAB

ADDA,34H;34H中存入温度值的整数部分

MOVB,#10

DIVAB

MOV31H,B;个位存入31H中

MOVB,#10;

DIVAB;

MOV32H,B;十位存入32H中

MOVB,#10;

DIVAB;

MOV35H,B;百位存入33H中

MOVA,DS18SH

MOV33H,#10H;

JBACC.7,EXIT7

MOV33H,#00H

EXIT7:

RET

GET_TEMPER:

;读出转换后的温度值,并显示

SETBDS18DQ

LCALLINIT_1820;先复位DS18B20

JBDS18FIG,TSS2

RET;判断DS1820是否存在?

若DS18B20不存在则返

TSS2:

MOVDS18ADS,#0

DS18JX:

LCALLDS18CODP

MOVA,DS18ADS

ADDA,#9

MOVDS18ADS,A

CJNEA,#63,DS18JX

RET

DS18CODP:

LCALLMRCOVT;转换指定的DS18B20的温度

LCALLMRRDTEDP;显示温度

RET

TEMP:

LCALLINIT_1820

JBDS18FIG,NEXT4

RET

NEXT4:

MOVDS18ADS,#9

MOVA,#0CCH;SKIPROM

LCALLWRITE_1820

MOVA,#44H;温度转换命令

LCALLWRITE_1820

LCALLDELAY1S

LCALLMRRDTEDP

RET;写DS18B20的子程序(有具体的时序要求)

WRITE_1820:

    ;写DS18B20

MOVR5,#8

DS18JXWE:

SETBDS18DQ  ;初始化

CLRDS18DQ

CLRDS18DQ

MOVR7,#5

DJNZR7,$;拉低15US内,写入数据

CLRC

RRCA

MOVDS18DQ,C

LCALLDELAY60US;持续60US

SETBDS18DQ  ;写完一个位

DJNZR5,DS18JXWE

RET

READ_1820_CODE:

  ;读取CODE64位

  MOVR4,#8  ;读8次数

  MOVR1,#DS18CD1  ;低位地址存在R1

DS18JXRD3:

MOVR5,#8  ;8位数据

DS18JXRD2:

SETBDS18DQ  

CLRDS18DQ  ;前两句完成初始化

NOP

NOP   ;延时至少1US

SETBDS18DQ  ;上升沿,并在,15US内读数

MOVR7,#5

DJNZR7,$

MOVC,DS18DQ

RRCA

LCALLDELAY60US  ;读时序,最少60US

DJNZR5,DS18JXRD2

MOV@R1,A

INCR1

DJNZR4,DS18JXRD3

SETBDS18DQ

RET;读DS18B20的程序,从DS18B20中读出两个字节的温度数据

READ_18200:

  MOVR4,#2  ;读两次数

  MOVR1,#DS18SL  ;低位地址存在R1

DS18JXRD1:

MOVR5,#8  ;8位数据

DS18JXRD:

SETBDS18DQ  

CLRDS18DQ  ;前两句完成初始化

NOP

NOP   ;延时至少1US

SETBDS18DQ ;上升沿,并在,15US内读数

MOVR7,#5

DJNZR7,$

MOVC,DS18DQ

RRCA

LCALLDELAY60US  ;读时序,最少60US

DJNZR5,DS18JXRD

MOV@R1,A

DECR1

DJNZR4,DS18JXRD1

SETBDS18DQ

RET

READ_1820_1:

   ;读取1位

SETB

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2