基于51单片机的温度控制系统说明书课程设计说明书.docx

上传人:b****5 文档编号:5611413 上传时间:2022-12-29 格式:DOCX 页数:23 大小:204.60KB
下载 相关 举报
基于51单片机的温度控制系统说明书课程设计说明书.docx_第1页
第1页 / 共23页
基于51单片机的温度控制系统说明书课程设计说明书.docx_第2页
第2页 / 共23页
基于51单片机的温度控制系统说明书课程设计说明书.docx_第3页
第3页 / 共23页
基于51单片机的温度控制系统说明书课程设计说明书.docx_第4页
第4页 / 共23页
基于51单片机的温度控制系统说明书课程设计说明书.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

基于51单片机的温度控制系统说明书课程设计说明书.docx

《基于51单片机的温度控制系统说明书课程设计说明书.docx》由会员分享,可在线阅读,更多相关《基于51单片机的温度控制系统说明书课程设计说明书.docx(23页珍藏版)》请在冰豆网上搜索。

基于51单片机的温度控制系统说明书课程设计说明书.docx

基于51单片机的温度控制系统说明书课程设计说明书

 

中北大学

课程设计说明书

 

学生姓名:

学号:

学院:

机械与动力工程学院

专业:

机械电子工程

题目:

基于51单片机的温度控制系统设计

 

指导教师:

职称:

讲师

 

 

2015年1月19日

目录

第1章绪论2

1.1题目背景2

1.2题目简介2

第2章系统总体设计及方案3

2.1单片机的介绍3

2.2系统功能的确定3

2.3温度传感器DS18B20的介绍3

2.3.1DS18B20的内部结构4

2.3.2DS18B20的引脚介绍6

2.4人机交互与串口通信6

第3章硬件设计8

3.1系统结构框图8

3.2人机交互与串口通信单元设计9

3.2.1键盘输入电路9

3.2.2串口通信电路9

3.2.3LED七段数码动态显示电路10

3.2.4控制执行单元设计11

第4章软件设计12

4.1设计思路、程序代码12

结束语26

参考文献26

第1章绪论

1.1题目背景

不论是对于工业生产还是对于人们的日常生活,温度的变化都会对其产生一定程度的影响。

所以,适时和恰当的温度控制对生产生活具有非常重要的作用。

在过去,对温度的控制总是采用常规的模拟调节器,然而,这种调节器存在的缺点是控制精度低,具有滞后、非线性等特点。

-本文将采用微电子技术来提高温度控制的精度,因为微电子技术的电路设计简单,控制效果好,具有很强的实用性。

众所周知,在现代工业以及家用电器测控领域中,单片机系统的开发和运用给其带来了全新的技术创新和变革。

而且,自动化和智能化程度的高低均依赖于是否使用单片机。

试想:

将单片机的温度控制方法如果能够运用到温度控制系统中的话,那么,就可以在一定程度上缓减和克服温度控制系统中存在的滞后现象,同时在很大程度的上,单片机的使用可以提高温度的控制效果以及控制精度。

在工业自动化控制中,温度的控制一直都占有非常特殊的地位。

在本文中作者针对电烤箱的温控系统利用单片机进行设计,从而达到精确控制电烤箱温度目的。

1.2题目简介

课题名称:

基于51单片机的温度控制系统设计

主要任务:

(1)电烤箱由1kW电炉加热,最高温度为120℃;

(2)电烤箱温度可设置,电烤过程恒温控制,温度控制误差≤±2℃;

(3)实时显示温度和设置温度,显示精确为1℃;

(4)温度超出设置温度±5℃时发出超限报警,对升温和降温过程不作要求。

开发环境:

本环境温度控制系统的软件部分是通过KEIL进行编译,并由Proteus7Professional进行仿真测试。

技术指标:

(1)以AT89C51系列单片机为核心部件

(2)以数字电路和模拟电路为硬件基础

(3)以C语言为软件实现语言

功能概述:

在该温度控制系统中,单片机作为核心部件进行检测控制。

在该环境温度控制系统中温度检测采用DS18B20温度传感器将实时温度传送至单片机,并加以显示。

再通过按键来设定温度,并实时显示。

按下确定键后将实际温度与设定温度进行比较,如果实际温度大于设定温度,则进行降温过程,反之,则进行升温过程,实现温度控制和报警等目的,按复位键后,从新开始。

第2章系统总体设计及方案

2.1单片机的介绍

随着大规模集成电路的出现及其发展,将计算机的CPU、RAM、ROM、定时/计数器和多种I/O接口集成在一片芯片上,形成芯片级的计算机,因此单片机早期的含义称为单片微型计算机,直译为单片机。

单片机具有以下特点:

1.具有优异的性能价格比

2.集成度高、体积小、可靠性高

3.控制功能强

4.低电压、低功耗

2.2系统功能的确定

一个控制系统是否能被大众所接受,在于该控制系统是否拥有人性化的操作功能。

为了使本次设计的环境温度控制系统具有操作简单、灵活及高可靠性等特点,确定了该系统功能:

1.独立键盘输入。

2.单总线温度传感器DS18B20进行温度采集。

3.温度显示。

4.温度控制执行,温度超限进行报警。

5.温度测量范围为-55-125度,温度有效范围为2-98度,允许误差为1度。

2.3温度传感器DS18B20的介绍

DS18B20温度传感器是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单,体积小的特点。

因此用它来组成一个测温系统,在一根通信线,可以挂很多这样的温度传感器,十分方便。

DS18B20具有以下的的特点:

1.只要求一个端口即可实现通信。

2.在DS18B20中的每个器件上都有独一无二的序列号。

3.实际应用中不需要外部任何元器件即可实现测温。

4.测量温度范围-55到+125。

5.数字温度计的分辨率用户可以从9位到12位选择。

6.内部有温度上、下限告警设置。

2.3.1DS18B20的内部结构

DS18B20采用3脚PR-35封装或8脚SOIC封装,其内部结构框图如图2.1所示。

 

 

图2.1DS18B20内部结构框图

64位ROM的位结构如图2.2所示。

开始8位是产品类型的编号;接着是每个器件的唯一的序号,共有48位;最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用单线进行通信的原因。

非易失性温度报警触发器TH和TL,可通过软件写入用户报警上下限数据。

 

图2.264位ROM的位结构图

DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的E2PROM。

高速暂存RAM的结构为9字节的存储器,结构如图2.3所示。

前2字节包含测得的温度信息。

第3和第4字节是TH和TL的拷贝,是易失的,每次上电复位时被刷新。

第5字节为配置寄存器,其内容用于确定温度值的数字转换分辨率,DS18B20工作时按此寄存器中的分辨率将温度转换为相应精度的数值。

该字节各位的定义如图2.4所示,其中,低5位一直为1;TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式,在DS18B20出厂时,该位被设置为0,用户不要去改动;R1和R0决定温度转换的精度位数,即用来设置分辨率,其定义方法见表2.1。

温度LSB

温度MSB

TH用户字节1

TL用户字节2

配置寄存器

保留

保留

保留

CRC

图2.3高速暂存RAM结构图

表2.1DS18B20分辨率的定义和规定

R1

R0

分辨率/位

温度最大

转换时间/ms

0

0

9

93.75

0

1

10

187.5

1

0

11

375

1

1

12

750

 

图2.4配置寄存器位定义

由表可见,DS18B20温度转换的时间比较长,而且设置的分辨率越高,所需要的温度数据转换时间就越长。

因此,在实际应用中要将分辨率和转换时间权衡考虑。

高速暂存RAM的第6、7、8字节保留未用,表现为全逻辑1。

第9字节是前面8字节的CRC码,可用来检验数据,从而保证通信数据的正确性。

当DS18B20接收到温度转换命令后,开始启动转换。

转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存RAM的第1、2字节中。

单片机可以通过单线接口读出该数据。

读数据时,低位在先,高位在后,数据格式以0.0625°C/LSB形式表示。

温度值格式如图2.5所示:

低字节

23

22

21

20

2-1

2-2

2-3

2-4

高字节

S

S

S

S

S

26

25

24

图2.5温度数值格式

2.3.2DS18B20的引脚介绍

TO-92封装的DS18B20的引脚排列见图2.6,其引脚功能描述见表2.2。

图2.6(底视图)

表2.2DS18B20详细引脚功能描述

序号

名称

引脚功能描述

1

GND

地信号

2

DQ

数据输入/输出引脚。

开漏单总线接口引脚。

当被用着在寄生电源下,也可以向器件提供电源。

3

VDD

可选择的VDD引脚。

当工作于寄生电源时,此引脚必须接地。

2.4人机交互与串口通信

该热炉温度控制系统由温度采集、独立键盘输入、温度显示、温度控制执行等四大模块组成。

1.温度采集:

由温度传感器DS18B20完成,并通过串口通信技术与单片机进行数据传输,使用单片机P2.2端口。

2.独立键盘输入:

将键盘扫描程序设置在主函数中while循环函数的第一条语句,不断刷新获得

设定温度,按下确定键后执行温度比较和温度控制。

使用单片机的P2.1,P2.3,P2.4,P2.5端口。

3.温度显示:

通过8个7段LED数码显示管显示当前温度值和设定的温度值,及时反应当前温度的

变化与设置温度的关系,使用单片机P0.0--P0.7端口。

4.温度控制执行:

系统根据当前温度与设置的温度自动进行相应的升温或降温的操作,在系统自

动进行升温或降温处理的同时显示相应的指示灯,在本文的设计中,考虑到加入升温降温设备也不会使得DS18B20传感器有所感应,故而没有添加升降温设备。

只是通过两个升温降温指示灯来表示升降温过程,同样能让使用者知道系统正在进行的操作,使更加简洁。

但是,在实际的生产中升降温度设备是必须添加的。

两个指示灯使用单片机P1.4,P1.5端口。

5.超限报警:

在任务书要求中,当温度超出设置温度±5℃时发出超限报警,但是由于作者能力所限,未能达到要求的±5℃,我选择了比较设置温度和实际温度的十位数据的方法,将误差控制在了±10℃以内,在仿真过程中影响是很小的。

第3章硬件设计

3.1系统结构框图

AT89C51

显示模块

键盘模块

温控执行模块

传感器模块

报警模块

图3.1系统硬件总体框图

该系统由核心部件AT89C51来处理从键盘输入电路和温度采集电路送入的数据,并通过温度显示电路进行温度显示,由温度控制电路来进行相应的升温或降温的操作。

如果超出温度限制则激发报警模块。

图3.2系统硬件原理图

3.2人机交互与串口通信单元设计

在该系统中,人机交互技术主要应用在恒定温度的设置,以及当前温度与设置温度的显示;串口通信技术应用在对温度的采集。

3.2.1键盘输入电路

在本系统中,键盘输入主要采用四个独立按键来实现温度的设定。

如图3.3所示,当按下“加一”键时,恒定温度从0开始加一,按下“减一”键,设定温度从现有值减一。

按下“清零”键,设置温度清零。

按“确定”键,保存设置并退出键盘输入,进入温度控制状态。

只有按下“确定”后才开始执行温度控制和超限报警。

图3.3键盘输入原理图

3.2.2串口通信电路

为了使测得的温度更准确,在本系统中采用了温度传感器DS18B20来获取当前温度,而DS18B20是采用I²C总线进行通信的,如图3.4所示,单片机使用P2.2端口与DS18B20的数据通讯端口相连接,并通过软件实现P2.2控制DS18B20的读和写。

图3.4温度传感器原理图

3.2.3LED七段数码动态显示电路

在本系统中采用了LED七段数码动态显示电路来显示温度值,设定温度显示范围在0-99之间,实时温度显示范围在-55--120之间。

该电路由显示、位选锁存器、段选锁存器三部分组成。

显示部分:

由两个四位的LED七段共阴数码管构成,用来显示当前温度和设置温度,如图3.5所示。

图3.5LED七段共阴数码管

位选和段选部分:

如图3.6所示,由两片74HC573锁存器构成,单片机的P2.6和P2.7分别

输出段选和位选信号,然后再将P0口信号传递到锁存器,并完成段选。

进行译码后输出到LED七段数码管显示。

图3.6位选段选锁存器

符号

编码

符号

编码

0

0x3f

8

0x7f

1

0x06

9

0x6f

2

0x5b

A

0x77

3

0x4f

B

0x7c

4

0x66

C

0x39

5

0x6d

D

0x5e

6

0x7d

E

0x79

7

0x07

F

0x71

表3.7共阴极数码管编码

3.2.4控制执行单元设计

该电路的主要任务是完成单片机所发出的升温或降温操作,来控制外部的升温或降温设备。

在本文的设计中使用红、绿两色发光二极管代替。

在程序中,先将P1.4和P1.5端口初始为低电平,当需要升温或降温时,将相应端口置为高电平,使得二极管发光。

提醒使用者正在进行的温度操做。

例如:

当设置温度高于实时温度时,单片机向温控执行部分发送升温指令,将P1.5置为高电平,使得升温指示灯亮。

3.2.5温度超限报警

当实时温度和设定温度十位数值不同时发出警报,由于在Proteus中选用的发声元件为SPEAKER,此元件与计算机音频输出设备相连,因此,当触发报警部分的时候,计算机会发出蜂鸣。

第4章软件设计

4.1设计思路、程序代码

根据所学知识,实现本系统的软件部分将使用汇编语言,要配合硬件部分实现输入一个需要恒定的温度,与从温度传感器所获取的当前实际温度相比较,并向温度控制执行电路发出升温或降温的命令,以及温度超限报警命令。

在这一过程中将随时显示当前温度值和设置的温度值。

其主要实现的部分包括:

键盘输入、温度采集、数据转换、动态显示、温度控制,超限报警等。

程序如下。

键盘扫描程序:

/*

功能描述:

用数码管的前两位显示一个十进制数,变化范围是0~120,开始时显示0,每次按下K1:

数值加一,每次按下

K2:

数值减一。

每次按下K3:

数值归零。

每次按下OK:

执行温度比较,显示升温或降温过程,以及蜂鸣器的开闭。

theend:

successful

*/

#include"delay.h"

#include"inden_key.h"

voidkeyscan(void)

{

unsignedcharcount;

if(!

key1)

{

DelayMs(10);

if(!

key1)

{

count++;

if(count>=120)count=0;

while(!

key1);

}

}

if(!

key2)

{

DelayMs(10);

if(!

key2)

{

if(count==0)count=0;

count--;

while(!

key2);

}

}

if(!

key3)

{

DelayMs(10);

if(!

key3)

{

count=0;

while(!

key3);

}

}

}

主函数:

/*-----------------------------------------------

名称:

基于51单片机的温控系统设计

编写:

叶瑞夺

日期:

2015.1.25

内容:

对电烤箱进行温度控制。

1.8位数码管的1~2位(左边数起)显示设定的温度值(只有在确定键按下之后才会显示)

2.8位数码管的3~8位(左边数起)显示温度传感器采集到的实时温度值

3.当设定温度值小于实时温度时,绿灯亮(表示降温)。

4.当设定温度值大于或等于实时温度时,红灯亮(表示升温)。

5.蜂鸣器的误差为+-10,当设定温度值与实时温度值误差超过10度时蜂鸣器会响。

(按下确定键才会进行比较)

6.k1键:

加一K2键:

减一K3:

归零OK键:

确定键(跟蜂鸣器和红绿灯显示有关)

------------------------------------------------*/

#include//包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义

#include"18b20.h"

#include"delay.h"

#defineDataPortP0//定义数据端口程序中遇到DataPort则用P0替换

#defineWaringValue17//定义报警值

sbitled_green=P1^4;//设定温度比实际温度低

sbitled_red=P1^5;//设定温度比实际温度高

sbitled=P1^7;

sbitBEEP=P2^0;

sbitOK=P2^1;

sbitkey1=P2^3;

sbitkey2=P2^4;

sbitkey3=P2^5;

sbitLATCH1=P2^6;//定义锁存使能端口段锁存

sbitLATCH2=P2^7;//位锁存

bitReadTempFlag;//定义读时间标志

bitButton_flag;//确认按下的标志位

unsignedcharcount;

//---------thepartofnewadd----------------------

//ucharcodedu_table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

////describtion:

itisaarrayfrom0toF,thetypeofnixietubeiscommoncathode

//ucharcodewe_table[]={0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

////description:

itisaarraytorealizethelocationisselected,thewe_table[0]'sfuntionistocosealldispaly

//-------------------------------

unsignedcharcodedofly_DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//显示段码值0~9

unsignedcharcodedofly_WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分别对应相应的数码管点亮,即位码

unsignedcharTempData[8];//存储显示值的全局变量

voidDisplay(unsignedcharFirstBit,unsignedcharNum);//数码管显示函数

voidInit_Timer0(void);//定时器初始化

voidkeyscan(void)

{

if(!

key1)

{

DelayUs2x(20);

if(!

key1)

{

count++;

if(count>=120)count=0;

while(!

key1);

}

}

if(!

key2)

{

DelayUs2x(20);

if(!

key2)

{

if(count==0)count=0;

elsecount--;

while(!

key2);

}

}

if(!

key3)

{

DelayUs2x(20);

if(!

key3)

{

count=0;

while(!

key3);

}

}

if(!

OK)

{

DelayUs2x(20);

if(!

OK)

{

Button_flag=1;

while(!

OK);

}

}

}

/*------------------------------------------------

主函数

------------------------------------------------*/

voidmain(void)

{

unsignedintTempH,TempL,temp;

Init_Timer0();

led_red=0;

led_green=0;

while

(1)//主循环

{

keyscan();

if(Button_flag)

{

//--------thepartofbeep.belowistherealtimerangeoftempeture--------------------

if(count/10==(TempH%100)/10)

BEEP=1;

else

BEEP=0;

//----------------------------

Button_flag=0;

if(TempData[2]==0x40)

{

led_red=1;

led_green=0;

}

else

if(TempData[3]!

=0)

{

led_red=0;

led_green=1;

}

else

if(count/10>(TempH%100)/10)

{

led_red=1;

led_green=0;

}

else

if(count/10<(TempH%100)/10)

{

led_red=0;

led_green=1;

}

else

if(count/10==(TempH%100)/10)

{

if(count%10>=(TempH%100)%10)

{

led_red=1;

led_green=0;

}

else

{

led_red=0;

led_green=1;

}

}

}

if(ReadTempFlag==1)

{

ReadTempFlag=0;

temp=ReadTemperature();

TempData[0]=dofly_DuanMa[count/10];

TempData[1]=dofly_DuanMa[count%10];

if(temp&0x8000)

{

TempData[2]=0x40;//负号标志

temp=~temp;//取反加1

temp+=1;

}

else

TempData[2]=0;

TempH=temp>>4;

TempL=temp&0x0F;

TempL=TempL*6/10;//小数近似处理

if(TempH/100==0)

TempData[3]=0;

else

TempData[

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

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1