温度检测系统.docx
- 文档编号:11006644
- 上传时间:2023-02-24
- 格式:DOCX
- 页数:24
- 大小:598.16KB
温度检测系统.docx
《温度检测系统.docx》由会员分享,可在线阅读,更多相关《温度检测系统.docx(24页珍藏版)》请在冰豆网上搜索。
温度检测系统
机电专业课程设计
温度检测系统
学生姓名李晓晓
学院中国矿业大学
年级专业2011机电专本
指导教师孙长青
完成日期2012年6月
前言
温度是表征物体冷热程度的物理量,是工业生产和自动控制中最常见的工艺参数之一,生产过程中常常需要对温度进行检测和监控。
在传统的温度测控系统设计中,往往采用模拟技术进行设计,这样就不可避免地遇到诸如传感器外围电路复杂及抗干扰能力差等问题;而其中任何一环节处理不当,就会造成整个系统性能的下降。
采用数字温度传感器与单片机组成的温度检测系统进行温度检测、数值显示和数据存储,体积减小,精度提高,抗干扰能力强,并可组网进行多点协测,还可以实现实时控制等技术,在现代工业生产中应用越来越广泛。
本设计就采用以51单片机为核心,和单总线数字式温度传感器DS18B20模拟出一温度控制系统,当温度没有超过预设温度时数码管显示当前温度,此本系统就是一个温度计。
当温度超过预设温度时电路中的发光二极管就会闪烁报警,当温度降下时就停止闪烁,此时本系统就是一个温度监控器。
以DS18B20为代表的新型单总线数字式温度传感器集温度测量和A/D转换于一体,直接输出数字量,与单片机接口电路结构简单,广泛使用于距离远、节点分布多的场合,具有较强的推广应用价值。
1总体方案设计
1.1设计目的及意义
(1)在学习了三年的课程后,为了加深对理论知识的理解,学习理论知识在实际中的运用,培养动手能力和解决实际问题的经验。
(2)通过实验提高对单片机的认识,通过实验提高焊接、布局、电路检查能力。
(3)通过实验提高软件调试能力。
(4)进一步熟悉和掌握单片机的结构及工作原理,通过课程设计,掌握以单片机核心的电路设计的基本方法和技术。
(5)通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。
(6)熟悉水箱温度控制的工作原理,选择合适的元件,绘制系统电路原理图,运用单片机原理及其应用,进行软硬件系统的设计和调试,加深对单片机的了解和运用,进而提高自己的应用知识能力、设计能力和调试能力。
1.2总体设计思路
本设计以单片机为基础,温度监控系统大致上可以分为以下几个步骤:
1.2.1系统分析过程
(1)根据系统的目标,明确所采用温度监控系统的目的和任务。
(2)确定系统所在的工作环境。
(3)根据系统的工作要求,确定系统的基本功能和方案。
1.2.2系统设计内容
(1)构思设计温度监控系统的工作流程。
(2)对要求设计的系统进行功能需求分析,考虑多种设计方案,比较各方案的特点,并确定合理可行的方案,并设计相应的功能结构。
(3)根据系统的控制要求,选择合适型号的芯片及元器件。
(4)设计以单片机为核心的控制程序。
(5)电路板及其结构的设计。
(6)进行系统的调试,完成最终的设计。
1.3总体设计方案设计
1.3.1系统框图
本设计为无线电控制电路,系统框图如下所示:
图1-1系统框图
1.3.2系统功能
此设计以单片机为核心的温度监控系统,其功能是:
平常状态下可以做温度计使用。
当温度超过预设温度时二极管会闪烁报警,当温度降下时二极管则停止闪烁。
2系统的硬件结构设计
2.1器件的选择
在本设计系统中用到的主要器件有单片机核心控制器、温度传感器、数码管显示器。
选择合适的器件完成设计任务,目前各半导体公司、电气商都向市场上推出了形形色色的器件,如何选择合适的器件使系统最大的简单化,功能优异化,可靠性强,成本低廉,成为了器件选择的重中之重。
一般来说,选择器件要考虑一下几个方面:
(1)芯片的封装形式。
如DIP(双列直插)封装及表面贴附等。
(2)器件的基本性能参数。
如单片机执行速度、程序储存器容量、I/O口引脚数量等。
(3)芯片的功耗。
如单片机选择能满足低功耗的要求。
(4)供货渠道是否畅通,价格是否低廉。
STC89C516RD+系列单片机是宏晶科技推出的新一代超强抗干扰/高速/低功耗的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可任意选择,最新的D版本内部集成MAX810专用复位电路,根据本系统的实际情况,选择STC89C516RD+单片机。
温度传感器选择DS18B20,显示选择共阴极数码管。
2.1.1单片机(STC89C516RD+)的引脚功能图
图2-1STC98C16RD+引脚图
2.1.2各引脚及功能说明
(1)电源引脚:
Vcc:
40脚正电源脚,工作电压为5V。
GND:
20脚接地端。
(2)单片机I/O口:
P0口:
P0口为一个8位漏极开路双向I/O口。
P0口能用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FLASH编程时,P0口作为原码输入口,当FALSH进行校验时,P0口输出原码,此时P0口外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流。
在FALSH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口。
当P2口被写入“1”时,其管脚被内部上拉电阻拉高,且作为输入。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口。
当P3口写入“1”后,它们被内部上拉为高电平并用作输入。
P3口除作I/O口使用外,还有特殊功能如图所示:
表P3口的特殊功能
P3引脚
兼用功能
P3.0
串行通讯输入(RXD)
P3.1
串行通讯输出(TXD)
P3.2
外部中断0(INT0)
P3.3
外部中断1(INT1)
P3.4
定时器0输入(T0)
P3.5
定时器1输入(T1)
P3.6
外部数据存储器写选通WR
P3.7
外部数据存储器写选通RD
(3)RST复位:
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
复位可分为上电复位和手动复位两种,如图所示:
图2-2复位电路
(4)晶振电路:
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
晶振电路如图所示:
图2-3晶振电路
(5)ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
(6)/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
(7)/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
2.1.3单片机最小系统如图所示:
图2-4单片机最小系统
2.2电路设计及功能
本设计大体可分为三个部分,即温度采集,数码显示,报警电路。
温度采集部分利用DS18B20进行温度采集,感知温度,后数码显示出温度,若温度超过了预设温度报警电路则启亮发光二极管,闪烁。
整体电路图如下所示:
图2-5温度监控系统电路图
2.3单片机的内部资源
51单片机给用户提供了丰富的内部资源,如定时/计数器,串行口等,而没有中断就无法用到单片机提供的资源。
再者,中断可以提高单片机的工作效率,由于本设计中用到了中断程序,所以我们先介绍一下中断系统。
2.3.1中断系统:
在8位单片机中,51单片机是中断功能较强的一种,它提供了5个中断请求源和两个中断优先级控制。
在计算机运行过程中要处理很多问题,既有主机内部也有外部的,既有预定的也有外设的,面对复杂多变的情况,CPU要从容的完成各种任务,必须有中断功能。
中断系统解决了计算机与外围设备交换信息时,慢速工作的外围设备与快速工作的CPU之间的矛盾,设置了中断就可以提高CPU的工作效率,具有实时处理功能,使CPU能很快做出反应解决现场的各种参数和状态的变化,还具有故障处理功能,处理工作时故障的中断服务程序,此外还有实现分时操作、程序调试、多机连接等方面。
运行过程如下:
现行程序
中断断点
继续执行
中断
服务程序
图2-6中断控制过程
不同的单片机的中断源是不同的,在此系统中的单片机有五个中断源,具有两个中断优先级,可以实现二级中断服务程序嵌套。
每个中断源可以编程为高优先级或低优先级中断,允许或禁止CPU请求中断。
与中断系统有关的特殊功能寄存器有中断允许寄存器IE、中断优先寄存器IP、中断源寄存器(TCON、SCON)。
从中断响应过程可以看出在执行一种中断服务程序时,另一个同级中断不能被响应,必须在执行RET1指令后,在执行一条其他条令,CPU才能响应。
利用这一特点,可以实现单步操作。
其实现过程如下:
设置中断P3.2为电平触发方式,高优先级中断,CPU外部中断0开中断,即应执行以下指令:
CLRIT0,SETBEA,SEBEX0.
在中断服务程序结尾增加以下指令:
K0:
jnbP3.2,K0;P3.2变高前原地等待
K1:
jbP3.2,K1;P3.2变低前原地等待
RETI;中断返回
若P3.2为低电平就进入外中断0的中断服务。
由于上述几条指令的存在,程序将在JNB出原地等待,当P3.2端出现一个正脉冲,程序就往下进行,在执行RET1和返回后的一条其他指令后,又立即进入外部中断P3.2服务程序,以等待P3.2端出现下一个脉冲,这样P3.2端没出现一次正脉冲就执行一条新的指令实现了单步操作。
GATE:
定时/计数器门控制位,用于设定定时/计数器的启动是否受外部中断请求信号的控制。
GATE=1时,T0和T1的启动分别受芯片引脚/INT0(P3.2)和/INT1(P3.3)的控制。
GATE=0时,定时/计数器的启动与引脚/INT0、/INT1无关。
51单片机定时/计数器工作模式:
51单片机的定时/计数器有4种工作模式,由TMOD寄存器的M0、M1两位确定。
这些在前边已经提到过了,而本次设计采用的是工作模式1所以在此具体介绍这一种,至于其他几种,由于本次设计用的定时器中断是T1所以不能选用模式3,而模式2的技术值太小,所以一般也不是经常运用,模式0的计数比模式1复杂,技术值也不如它大,所以选用模式1是最好的方案。
将TMOD的M1、M0位分别设为0、1,定时/计数器工作模式1下。
此时定时/计数器是一个16位定时/计数器,TLX组成定时/计数器低8位,THX组成定时/计数器的高8位,TLX溢出后向THX进位,最大计数值位
=65536。
2.4芯片DS18B20器件介绍
DSl820数字温度计提供9位温度读数,指示器件的温度。
信息经过单线接口送入DSl820或从DSl820送出,因此从中央处理器到DSl820仅需连接一条线(和地)。
读、写和完成温度变换所需的电源可以由数据线本身提供,而不需要外部电源。
因为每一个DSl820有唯一的系列号(siliconserialnumber),因此多个DSl820可以存在于同一条单线总线上。
这允许在许多不同的地方放置温度灵敏器件。
此特性的应用范围包括HVAC环境控制,建筑物、设备或机械内的温度检测,以及过程监视和控制中的温度检测。
管脚图如下:
图2-7DS18B20管脚图
2.4.1DS18B20的主要性能特点
(1)只需一个端口即可实现通信。
(2)可用数据线供电,电压范围:
3.0V~5.5V。
(3)实际应用中不需要外部任何元器件即可实现测温。
(4)测温范围:
-55℃~+125℃,在-10℃~+85℃时精度为±0.5℃。
(5)可编程的分辨率为9~12位,对应的分辨温度为0.5℃、0.25℃、0.125℃和0.0625℃。
(6)负压特性:
电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。
(7)内部有温度上、下限告警设置。
非易失性温度报警触发器TH和TL。
可通过软件写入用户报警上下限值。
(8)每个芯片唯一编码,支持联网寻址,零功耗等待。
2.4.2DS18B20的结构
DS18B20的引脚排列采用3脚PR-35封装或8脚SOIC封装。
I/O为数据输入/输出端(即单线总线),属于漏极开路输出,外接上拉电阻后常态下呈高电平。
UDD是可供选用的外部+5V电源端,不用时需接地。
GND为地,NC为空脚。
DS18B20的内部结构框图:
图2-8DS18B20内部结构图
2.4.3DS18B20的工作时序
(1)DS18B20的复位时序
图2-9DS18B20复位时序图
(2)DS18B20的读时序
对于DS18B20的读时序分为读0时序和读1时序两个过程。
对于DS18B20的读时序是从主机把单总线拉低之后,在15s之内就得释放单总线,以让DS18B20把数据传输到单总线上。
DS18B20在完成一个读时序过程,至少需要60μs才能完成。
图2-10DS18B20读时序图
(3)DS18B20的写时序
对于DS18B20的写时序仍然分为写0时序和写1时序两个过程。
对于DS18B20写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60μs,保证DS18B20能够在15μs~45μs之间能够正确地采样IO总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15μs之内就得释放单总线。
图2-11DS18B20写时序图
3系统的软件结构设计
3.1设计的流程图
3.2系统部分程序设计及分析
3.2.1复位子程序
(1)主机将信号线置为低电平,时间为480-960uS。
(2)主机将信号线置为高电平,时间为15-60uS。
(3)DS18B20发出60-240uS的低电平作为应答信号,主机收到此信号才操作。
复位子程序如下所示:
charfuwei(void)
{
unsignedchari;
s=0;
for(i=255;i>0;i--);
s=1;
for(i=200;i>0;i--);
}
3.2.2读子程序
(1)主机将信号线从高电平拉至低电平1uS以上,再升为高电平,产生读起始信号。
(2)从主机将信号线从高电平拉至低电平15-60uS的时间内,DS18B20将数据放到信号线上,完成1个读周期。
(3)在开始另一个读周期前,必须有1uS以上的高电平恢复期。
读子程序如下所示:
unsignedcharduchu(void)
{
unsignedchari,j,t=0,w=1;;
for(i=0;i<8;i++)
{
t=t>>1;
s=0;
_nop_();
_nop_();
s=1;
for(j=10;j>0;j--);
if(s==1)
t=t|0x80;
else
t=t|0x00;
for(j=100;j>0;j--);
}
return(t);
}
3.2.3写子程序
(1)主机将信号线从高电平拉至低电平,产生写起始信号。
(2)从信号线的下降沿开始,在15-60uS的时间内,DS18B20对信号线检测,如高则写1,低则写0,完成1个写周期。
(3)在开始另一个写周期前,必须有1uS以上的高电平恢复期。
写子程序如下所示:
unsignedcharxieru(unsignedcharo)
{
chari,j;
for(i=0;i<8;i++)
{
if((o&0x01)==0)
{
s=0;
for(j=35;j>0;j--);
s=1;
}
else
{
s=0;
for(j=2;j>0;j--);
s=1;
for(j=33;j>0;j--);
}
o=o>>1;
}
}
3.2.4其他程序
本设计中除了上述三个子程序外,还涉及到显示程序,数据处理程序,中断程序和延时程序等,由于篇幅原因不作具体介绍,详见附录Ⅰ。
结论
通过这次毕业设计,提升了我的自学能力,通过不断的查阅资料,通过老师的不断讲解,来解决其中遇到的困难,比如如何解决DS18B20控制问题,如何解决报警问题等。
本文所讨论的设计采用了宏晶科技的STC89C516RD+单片机作为系统的中央控制单元,DS18B20作为温度采集器,并结合软件编程,实现温度传感电路与单片机的结合。
该系统具有更高速、更灵敏、更简捷地获取被分析、检测、控制对象的温度信息的能力,同时具有良好的抗干扰及环境适应能力(测温范围-55℃~+125℃)。
因其体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域,且系统结构较为简单,可大规模的采用,成本低廉。
附录Ⅰ
程序设计
#include"reg51.h"
#include"intrins.h"//汇编语句的C语言调用接口
unsignedcharg=0,a=0,b=0,c=0,d=0,e=0,t;
Unsignedcharm[]={0xfa,0x82,0xd9,0xcb,0xa3,0x6b,0x7b,0xc2,0xfb,0xeb};
sbits=P1^1;//DS18B20的与单片机连接的I/O口
sbitz=P1^6;//发光二极管
charfuwei(void)//复位程序
{
unsignedchari;
s=0;
for(i=255;i>0;i--);
s=1;
for(i=200;i>0;i--);
}
unsignedcharxieru(unsignedcharo)//写入18B20子程序
{
chari,j;
for(i=0;i<8;i++)
{
if((o&0x01)==0)
{
s=0;
for(j=35;j>0;j--);
s=1;
}
else
{
s=0;
for(j=2;j>0;j--);
s=1;
for(j=33;j>0;j--);
}
o=o>>1;
}
}
unsignedcharduchu(void)//读出18B20子程序
{
unsignedchari,j,t=0,w=1;
for(i=0;i<8;i++)
{
t=t>>1;
s=0;
_nop_();_nop_();
s=1;
for(j=10;j>0;j--);
if(s==1)t=t|0x80;
elset=t|0x00;
for(j=100;j>0;j--);
}
return(t);
}
voiddisplay(void)//显示程序
{
unsignedchari,j;
for(i=0;i<10;i++)
{
P2=0x00;P0=0x04;
P2=m[a];
for(j=0;j<160;j++);
P2=0x00;P0=0x02;
P2=m[b]|0x04;
for(j=0;j<160;j++);
P2=0x00;P0=0x01;
P2=m[c];
for(j=0;j<160;j++);
P2=0x00;P0=0x08;
P2=m[d];
for(j=0;j<160;j++);
P2=0x00;
}
if(a>=2)z=~z;
elsez=1;
}
voidsmzh(void)//数值转换子程序
{
unsignedintk,w;
unsignedintn[]={0,0};
fuwei();
xieru(0xcc);
xieru(0xbe);
n[0]=duchu();
n[1]=duchu();
k=n[0]>>4;
t=n[1]<<4;
t=t&0x70;
t=t|k;
a=t%100/10;
b=t%10;
w=n[0]&0x0f;
w=w*1000/16;
c=w/100;
d=w%100/10;
}
main()//主程序
{
z=1;
TMOD=0x01;
EA=1;
ET0=1;
TH0=(65535-4000)/256;
TL0=(65535-4000)%256;
while
(1)
{
fuwei();
xieru(0xcc);
xieru(0x44);
TR0=1;
while
(1)
display();
}
}
voidt0(void)interrupt1//中断程序
{
TH0=(65535-4000)/256;
TL0=(65535-4000)%256;
smzh();
display();
fuwei();
xieru(0xcc);
xieru(0x44);
}
附录Ⅱ
参考文献
1、张大明《单片机控制应用技术实操指导书》机械工业出版社2001
2、徐火明《单片机原理及接口技术》电子工业出版社2001
3、李玉梅《基于MCS51系列单片机原理的应用》国防工业出版社2004
4、周良全《模拟电子技术》高等教育出版社2005
5、周良全《数字电子基础》高等教育出版社2008
6、胡宴如《高频电子线路》高等教育出版社2004
7、潘永雄《新编单片机原理与应用》西安电子科技大学出版社2006
8、周坚《单片机轻松入门》北京航空航天大学出版社2006
9、宁凡《单片机基础教程》北京航空航天大学出版社2008
附录Ⅲ
结束语
转眼大学生活就进入到了尾声,而在这个时我也完成自己的毕业设计。
毕业设计对任何一个毕业生来说都应该是非常重要的,因为这需要通过自己所学到的知识来解决实际的问题,是对自己综合能力的一个考验。
毕业设计的水平在很大程度上代表了毕业生的水平,只有合格完成了毕业设计的人才能算做一个合格的毕业生。
这次我设计的是基于单总线温度传感器的温度监控系统设计。
在设计过程中,我通过各种途径查阅了大量的关于温度传感器和单片机的资料。
考虑到AT89C2051,80C31和PIC单片机的特点,最后决定选用AT89
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 温度 检测 系统