基于单片机的温度控制系统的设计.docx
- 文档编号:4023777
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:22
- 大小:708.83KB
基于单片机的温度控制系统的设计.docx
《基于单片机的温度控制系统的设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的温度控制系统的设计.docx(22页珍藏版)》请在冰豆网上搜索。
基于单片机的温度控制系统的设计
课程设计报告
课程名称综合电子设计
题目
_________________________________
指导教师
设计起止日期
系别
专业
学生姓名
班级/学号
成绩___________________
目录
1.概述3
1.1课题研究的目的与任务3
1.2课题研究现状分析3
1.3技术指标3
2.总体设计3
2.1系统设计方案论证3
2.2系统结构框图4
3.硬件设计4
3.1元器件的选择4
3.1.1单片机选择4
3.1.2单片机最小系统电路6
3.1.3传感器选择7
3.2单片机控制模块9
3.3温度数据采集模块10
3.4显示模块10
3.5温度设置模块11
3.6控制电路11
4.软件设计12
5.总流程图13
5.1整体流程图13
5.2运行流程图13
6.实验心得14
1.概述
1.1课题研究的目的与任务
综合电子设计是《模拟电子技术基础》、《数字电子技术基础》、《电子电路》、《单片机原理与技术》、《EDA》等课程后的综合实验技术课。
通过理论设计、查阅资料、选择元器件、计算机辅助设计与分析、实际动手安装、调试等电子电路设计的全过程,了解和掌握电子线路设计的一般方法,巩固和运用在电路与电子技术等课程中所学理论知识和技能,提高设计能力和动手能力,为以后从事电子线路设计和电子产品研制打下基础。
同时,课程设计又是检验课堂教学效果,弥补理论教学不足,培养实际能力的重要教学环节。
基本要求:
1.了解综合电子设计的一般方法、根据题目要求选择设计方案。
2.根据计算结果,通过查阅资料和手册选择电子元器件。
3.学会使用电子设计自动化软件(QuartusII,KeilC,Multisim等)对电路进行设计、分析、验证。
4.学会使用可编程逻辑器件实现电路(用EDA设计、仿真、下载)。
5.熟练运用常用电子仪器(示波器、万用表、信号发生器等)对电路进行测试。
6.写出符合要求的综合电子设计报告。
1.2课题研究现状分析
由于现代工艺越来越多的需要对实时温度进行监测和控制,而且需要的精度越来越高。
所以温度控制系统国内外许多有关人员的重视,得到了十分广泛的应用。
温度控制系统发展迅速,而且成果显著。
由于单片微处理器的性能日益提高、价格又不断降低,使其性能价格比的优势非常明显。
1.3技术指标
设计内容:
设计制作一个环境温度自动控制系统,控制对象为室内温度。
室温可以在一定范围内由人工设定,并能在环境温度高出设定温度时自动启动降温设备,以保持室温与设定温度基本一致。
(1)温度设定范围为20-30oC,最小区分度为1oC。
(2)环境温度超温时,接通制冷装置;低于等于设定温度时,断开制冷装置。
用LED表示制冷装置的接通/断开状态。
(3)用数码管显示环境的实际温度,温度显示范围0-99oC,显示精度为小数点后1位。
2.总体设计
2.1系统设计方案论证
实现温度控制的方法主要有以下几种。
方案一:
使用FPGA技术,以可编程逻辑器件为核心设计一个温度测量和控制系统。
要求系统实测监测、显示环境温度,且系统应具有温度报警功能和报警温度设置功能。
方案二:
使用单片机技术,以可编程逻辑器件为核心设计一个温度测量和控制系统。
要求系统实测监测、显示环境温度,且系统应具有温度报警功能和报警温度设置功能。
2.2系统结构框图
系统主要包括数据采集模块,单片机控制模块,显示模块和温度设置模块,驱动电路五个部分。
系统框图如图1所示。
图1系统框图
其中数据采集模块负责实时采集温度数据,采集到的温度数据传输到单片机,由单片机处理后的数据送显示部分显示。
设置模块可设置预定温度,当检测到的温度低于设定温度或高于设定温度时,单片机控制驱动电路启动,并发出报警声。
3.硬件设计
3.1元器件的选择
3.1.1单片机选择
单片机的选择在整个系统设计中至关重要,要满足大内存、高速率、通用性、价格便宜等要求,本课题选择AT89S51作为主控芯片。
AT89S51是一个低功耗,高性能CMOS8位单片机,片内含4kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。
AT89S51芯片具有以下特性:
①指令集和芯片引脚与Intel公司的8051兼容;
②4KB片内在系统可编程Flash程序存储器;
③时钟频率为0~33MHz;
④128字节片内随机读写存储器(RAM);
⑤32个可编程输入/输出引脚;
⑥2个16位定时/计数器;
⑦6个中断源,2级优先级;
⑧全双工串行通信接口;
⑨监视定时器;
⑩2个数据指针。
AT89S51单片机的40个引脚中有2个专用于主电源引脚,2个外接晶振的引脚,4个控制或与其它电源复用的引脚,以及32条输入输出I/O引脚。
1.电源引脚Vcc和Vss
Vcc(40脚):
接+5V电源正端;
Vss(20脚):
接+5V电源正端。
2.外接晶振引脚XTAL1和XTAL2
XTAL1(19脚):
接外部石英晶体的一端。
在单片机内部,它是一个反相放大器的输入端,这个放大器构成采用外部时钟时,对于HMOS单片机,该引脚接地;对于CHOMS单片机,该引脚作为外部振荡信号的输入端。
XTAL2(18脚):
接外部晶体的另一端。
在单片机内部,接至片内振荡器的反相放大器的输出端。
当采用外部时钟时,对于HMOS单片机,该引脚作为外部振荡信号的输入端。
对于CHMOS芯片,该引脚悬空不接。
3.控制信号或与其它电源复用引脚有RST/VPD、ALE/P、PSEN和EA/VPP等4种形式。
RST/VPD(9脚):
RST即为RESET,VPD为备用电源,所以该引脚为单片机的上电复位或掉电保护端。
当单片机振荡器工作时,该引脚上出现持续两个机器周期的高电平,就可实现复位操作,使单片机复位到初始状态。
当VCC发生故障,降低到低电平规定值或掉电时,该引脚可接上备用电源VPD(+5V)为内部RAM供电,以保证RAM中的数据不丢失。
ALE/P(30脚):
当访问外部存储器时,ALE(允许地址锁存信号)以每机器周期两次的信号输出,用于锁存出现在P0口的地址信号。
PSEN(29脚):
片外程序存储器读选通输出端,低电平有效。
当从外部程序存储器读取指令或常数期间,每个机器周期PESN两次有效,以通过数据总线口读回指令或常数。
当访问外部数据存储器期间,PESN信号将不出现。
EA/Vpp(31脚):
EA为访问外部程序储器控制信号,低电平有效。
当EA端保持高电平时,单片机访问片内程序存储器4KB(MS—52子系列为8KB)。
若超出该范围时,自动转去执行外部程序存储器的程序。
当EA端保持低电平时,无论片内有无程序存储器,均只访问外部程序存储器。
对于片内含有EPROM的单片机,在EPROM编程期间,该引脚用于接21V的编程电源Vpp。
4.输入/输出(I/O)引脚P0口、P1口、P2口及P3口
P0口(39脚~22脚):
这8条引脚有两种不同功能,分别适用于两种不同情况。
第一种情况是89S51不带片外存储器,P0口可以作为通用I/O口使用,P0.0-P0.7用于传送CPU的输入/输出数据。
第二种情况是89S51带片外存储器,P0.0-P0.7在CPU访问片外存储器时用于传送片外存储器的低8位地址,然后传送CPU对片外存储器的读写数据。
P1口(1脚~8脚):
这8条引脚和P0口的8条引脚类似,P1.7为最高位,P1.0为最低位。
当P1口作为通用I/O口使用时,P1.0-P1.7的功能和P0口的第一功能相同,也用于传送用户的输入和输出数据。
P2口(21脚~28脚):
这组引脚的第一功能和上述两组引脚的第一功能相同,既它可以作为通用I/O口使用。
它的第二功能和P0口引脚的第二功能相配合,用于输出片外存储器的高8位地址。
P3口(10脚~17脚):
P3.0~P3.7统称为P3口。
它为双功能口,可以作为一般的准双向I/O接口,也可以将每1位用于第2功能,而且P3口的每一条引脚均可独立定义为第1功能的输入输出或第2功能。
P3口的第2功能见表1。
表1单片机P3口管脚第2功能
引脚
第2功能
P3.0
P3.1
P3.2
P3.3
P3.4
P3.5
P3.6
P3.7
RXD(串行口输入端0)
TXD(串行口输出端)
INT0(部中断0请求输入端,低电平有效)
INT1(中断1请求输入端,低电平有效)
T0(时器/计数器0计数脉冲端)
T1(时器/计数器1数脉冲端)
WR(部数据存储器写选通信号输出端,低电平有效)
RD(部数据存储器读选通信号输出端,低电平有效)
AT89S51单片机引脚图如图2所示
图2单片机引脚图
3.1.2单片机最小系统电路
在课题设计的温度控制系统设计中,控制核心是STC89C51单片机,该单片机为51系列增强型8位单片机,它有32个I/O口,片内含4KFLASH工艺的程序存储器,便于用电的方式瞬间擦除和改写,而且价格便宜,其外部晶振为12MHz,一个指令周期为1μS。
使用该单片机完全可以完成设计任务,其最小系统主要包括:
复位电路、震荡电路以及存储器选择模式(EA脚的高低电平选择),电路如下图2所示:
图2单片机最小系统电路图
3.1.3传感器选择
本系统采用DALLAS半导体公司生产的一线式数字温度传感器DS18B20采集温度数据,DS18B20属于新一代适配微处理器的智能温度传感器,可广泛用于工业、民用、军事等领域的温度测量及控制仪器、测控系统和大型设备中。
它具有体积小,接口方便,传输距离远等特点。
DS18B20的性能特点:
①采用单总线专用技术,既可通过串行口线,也可通过其它I/O口线与微机接口,无须经过其它变换电路,直接输出被测温度值(9位二进制数,含符号位),②测温范围为-55℃-+125℃,测量分辨率为0.0625℃,③内含64位经过激光修正的只读存储器ROM,④适配各种单片机或系统机,⑤用户可分别设定各路温度的上、下限,⑥内含寄生电源。
DS18B20内部结构主要由四部分组成:
64位光刻ROM,温度传感器,非挥发的温度报警触发器TH和TL,高速暂存器。
DS18B20的管脚排列如图3所示。
图3 DS18B20引脚分布图
DS18B20高速暂存器共9个存存单元,如表2所示:
表2DS18B20高速暂存器
序号
寄存器名称
作 用
序号
寄存器名称
作 用
0
1
2
3
温度低字节
温度高字节
TH/用户字节1
HL/用户字节2
以16位补码形式存放
以16位补码形式存放
存放温度上限
存放温度下限
4、5
6
7
8
保留字节1、2
计数器余值
计数器/℃
CRC
以12位转化为例说明温度高低字节存放形式及计算:
12位转化后得到的12位数据,存储在18B20的两个高低两个8位的RAM中,二进制中的前面5位是符号位。
如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625才能得到实际温度。
表3温度高低字节存放形式
高8位
S
S
S
S
S
26
25
24
低8位
23
22
21
20
2-1
2-2
2-3
2-4
在硬件上,DS18B20与单片机的连接有两种方法,一种是Vcc接外部电源,GND接地,I/O与单片机的I/O线相连;另一种是用寄生电源供电,此时UDD、GND接地,I/O接单片机I/O。
无论是内部寄生电源还是外部供电,I/O口线要接5KΩ左右的上拉电阻。
DS18B20有六条控制命令,如表4所示:
表4DS18B20控制命令
指 令
约定代码
操 作 说 明
温度转换
读暂存器
写暂存器
复制暂存器
重新调E2RAM
读电源供电方式
44H
BEH
4EH
48H
B8H
B4H
启动DS18B20进行温度转换
读暂存器9个字节内容
将数据写入暂存器的TH、TL字节
把暂存器的TH、TL字节写到E2RAM中
把E2RAM中的TH、TL字节写到暂存器TH、TL字节
启动DS18B20发送电源供电方式的信号给主CPU
CPU对DS18B20的访问流程是:
先对DS18B20初始化,再进行ROM操作命令,最后才能对存储器操作,数据操作。
DS18B20每一步操作都要遵循严格的工作时序和通信协议。
如主机控制DS18B20完成温度转换这一过程,根据DS18B20的通讯协议,须经三个步骤:
每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。
在本设计中采用外部供电方式实现DS18B20传感器与单片机的连接,其接口电路如图4所示。
图4温度传感器接口
3.2单片机控制模块
控制模块是整个设计方案的核心,它控制了温度的采集、处理与显示、温度值的设定与温度越限时控制电路的启动。
本控制模块由单片机AT89S51及其外围电路组成,电路如图5所示。
图5单片机控制模块电路
AT89S51内部有一个高增益反相放大器,用于构成振荡器,但要形成时钟脉冲,外部还需附加电路,本设计采用内部时钟方式,利用芯片内部的振荡器,然后在引脚XTAL1和XTAL2两端跨接晶体振荡器,就构成了稳定的自激振荡器,发出的脉冲直接送入内部时钟电路,C6和C7的值通常选择为30pF左右,晶振Y1选择12MHz.为了减小寄生电容,更好地保证振荡器稳定、可靠地工作,振荡器电容应尽可能安装得与单片机引脚XTAL1和XTAL2靠近。
单片机的31脚(EA)接+5V电源,表示允许使用片内ROM。
3.3温度数据采集模块
温度由DALLAS公司生产的一线式数字温度传感器DS18B20采集。
DS18B20测温范围为-55°C~+125°C,测温分辨率可达0.0625°C,被测温度用符号扩展的16位补码形式串行输出。
CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。
本设计采用三引脚PR-35封装的DS18B20,其引脚图见图3。
Vcc接外部+5V电源,GND接地,I/O与单片机的P3.4(T0)引脚相连。
3.4显示模块
显示部分采用LED静态显示方式,共阴极的数码管的公共端COM连接在一起接地,每位的段选线与74HC164的8位并口相连,只要在该位的段选线上保持段选码电平,该位就能保持相应的显示字符,考虑到节约单片机的I/O资源,因而采用串行接口方式,外接8位移位寄存器74HC164构成显示电路,电路如图6所示。
图6显示模块电路
3.5温度设置模块
温度设置部分采用DS18B20调节,右边按钮为温度值加1按键,左边按钮为温度值减1按键,与单片机的P1.4口相连。
当没有键按下时,单片机与之相连的输入口线为高电平,当任何一个按键按下时,与之相连的输入口线被置为低电平,产生外中断条件,在中断服务程序中读取键盘值。
温度设置电路如图8所示。
图8温度设置模块电路
3.6控制电路
控制电路与单片机的P1.0口相连,由于单片机输出控制信号非常微弱,需要用三极管来驱动外围电路,三极管选用PNP型的9015,当检测温度低于或高于设定温度时,在单片机的P1.0和P1.1口输出低电平控制信号,使三极管9015导通,报警器报警。
图8控制电路
4.软件设计
系统软件要实现的功能如下:
数码管,COM1显示检测温度十位,COM2显示检测温度个位,COM3显示设定温度十位,COM4显示设定温度个位,显示分辨率为1℃。
单片机复位后默认设定温度为40℃,当每按下一次设定温度上升按钮ADD时,设定温度增加1℃,最高为30℃,当每按下一次设定温度下降按钮DEC时,设定温度减少1℃,最低设定为20℃。
当设定温度大于或小于检测温度时警报器警报。
图9数码管管脚图
5.总流程图
5.1整体流程图
5.2运行流程图
6.实验心得
通过2周的课设实验,我们学会了如何去把所学的书本知识应用于实际应用中去,并且学会了如何去思考整个控制系统的软硬件设计。
在实践过程中,我们遇到了一些困难,像是数码管不亮或是二极管不亮等等。
在课设实验过程中,我们学会了如何去发现问题、分析问题,进而解决问题。
此次课程设计不仅增强了我们对课本知识的认识,增加了专业课的兴趣,而且给了我们勇气和信心,更重要的是它为我们以后的学习指明了方向。
附录
程序代码:
#include"reg52.h"
#defineucharunsignedchar
#defineuintunsignedint
sbitDQ=P1^4;//温度数据口
sbitwx1=P2^4;//位选1
sbitwx2=P2^5;//位选2
sbitwx3=P2^6;//位选3
sbitwx4=P2^7;//位选4
sbitsd=P1^2;//范围与显示开关=1范围
sbitsj=P1^3;//上下界切换=1上限
sbitss=P2^2;//加1
sbitxj=P2^3;//减1
sbitbjs=P1^0;//上限报警
sbitbjx=P1^1;//
unsignedinttemp,temp1,temp2,xs;
unsignedintsx=30;
unsignedintxx=20;
ucharcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,//共阳数码管
0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6};
/******延时程序*******/
voiddelay1(unsignedintm)
{
unsignedinti,j;
for(i=m;i>0;i--)
for(j=110;j>0;j--);
}
voiddelay(unsignedintm)//温度延时程序
{
while(m--);
}
voidInit_DS18B20()
{
unsignedcharx=0;
DQ=1;//DQ复位ds18b20通信端口
delay(8);//稍做延时
DQ=0;//单片机将DQ拉低
delay(80);//精确延时大于480us
DQ=1;//拉高总线
delay(4);
x=DQ;//稍做延时后如果x=0则初始化成功x=1则初始化失败
delay(20);
}
/***********ds18b20读一个字节**************/
ucharReadOneChar()
{
unsignedchari=0;
unsignedchardat=0;
for(i=8;i>0;i--)
{
DQ=0;//高电平拉成低电平时读周期开始
dat>>=1;
DQ=1;//给脉冲信号
if(DQ)
dat|=0x80;//
delay(4);
}
return(dat);
}
/*************ds18b20写一个字节****************/
voidWriteOneChar(unsignedchardat)
{
unsignedchari=0;
for(i=8;i>0;i--)
{
DQ=0;//从高电平拉至低电平时,写周期的开始
DQ=dat&0x01;//数据的最低位先写入
delay(5);//60us到120us延时
DQ=1;
dat>>=1;//从最低位到最高位传入
}
}
/**************读取ds18b20当前温度************/
voidReadTemperature()
{
unsignedchara=0;
unsignedb=0;
unsignedt=0;
Init_DS18B20();
WriteOneChar(0xCC);//跳过读序号列号的操作/
WriteOneChar(0x44);//启动温度转换
delay(5);//thismessageisweryimportant
Init_DS18B20();
WriteOneChar(0xCC);//跳过读序号列号的操作
WriteOneChar(0xBE);//读取温度寄存器等(共可读9个寄存器)前两个就是温度/
delay(5);
a=ReadOneChar();//读取温度值低位/
b=ReadOneChar();//读取温度值高位/
temp1=b<<4;//高8位中后三位数的值
temp1+=(a&0xf0)>>4;//低8位中的高4位值加上高8位中后三位数的值temp1室温整数值
temp2=a&0x0f;//小数的值
temp=((b*256+a)>>4);//当前采集温度值除16得实际温度值zhenshu
xs=temp2*0.0625*10;//小数位,若为0.5则算为5来显示xs小数xiaoshu
}
voidwenduxianshi()
{
wx1=1;
P0=table[temp/10];//显示十位
delay1
(1);
wx1=0;
wx2=1;
P0=table[temp%10]+0x80;//显示个位加上0x80就显示小数点了。
delay1
(1);
wx2=0;
wx3=1;
P0=table[xs%10];//显示小位
delay1
(1);
wx3=0;
wx4=1;
P0=table[12];//显示C字符
delay1
(1);
wx4=0;
}
voidsxxianshi()
{
wx1=1;
P0=table[sx/10];//显示十位
delay1
(1);
wx1=0;
wx2=1;
P0=table[sx%10]+0x80;//显示个位加上0x80就显示小数点了。
delay1
(1);
wx2=0;
wx3=1;
P0=table[12];//显示小位
delay1
(1);
wx3=0;
wx4=1;
P0=table[5];//显示C字符
delay1
(1);
wx4=0;
}
voidxxxianshi()
{
wx1=1;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 温度 控制系统 设计