数字温度计设计报告Word文档格式.docx

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

数字温度计设计报告Word文档格式.docx

《数字温度计设计报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《数字温度计设计报告Word文档格式.docx(19页珍藏版)》请在冰点文库上搜索。

数字温度计设计报告Word文档格式.docx

摘要:

温度的检测与控制是工业生产过程中比较典型的应用之一,随着传感器在生活中的更加广泛的应用,利用新型数字温度传感器实现对温度的测试与控制得到更快的开发,本文设计了一种基于AT89C51的温度检测及报警系统。

该系统可以方便的实现温度采集和显示,并可根据需要任意设定上下限报警温度,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,适合于我们日常生活和工、农业生产中的温度测量,也可以当作温度处理模块嵌入其它系统中,作为其他主系统的辅助扩展。

该系统设计和布线简单,结构紧凑,抗干扰能力强,在大型仓库、工厂、智能化建筑等领域的温度检测中有广泛的应用前景。

关键词:

单片机;

温度传感器;

AT89C51;

AD590

一、引言

当今社会,温度检测系统被广泛的社会生产、生活的各个领域。

在工业、环境检测、医疗、家庭等多方面都有应用。

同时单片机在电子产品中的应用已经越来越广泛。

随着温度检测理论与技术的不断更新,温度传感器的种类也越来越多,在微机系统中使用的传感器,必须是能够将非电量转换成电量的传感器,目前常用的有热电偶传感器、热电阻传感器和单导体传感器等,每种传感器根据其自身特性,都有它自己的应用领域。

本设计所介绍的数字温度计与传统的温度计相比,具有读数方便、测温范围广、测温准确、其输出温度采用数字显示等优点,主要用于对温度比较准确的场所,或科研实验室使用。

该设计控制器使用单片机AT89C51,温度传感器使用AD590,用4位共阴极LED数码管显示数据,实现温度显示。

二、设计任务及性能指标

本设计主要是介绍了单片机控制下的温度检测系统,详细介绍了其硬件和软件设计,并对其各功能模块做了详细介绍,其主要功能和指标如下:

●利用温度传感器(AD590)测量某一点环境温度

●测量范围为-30℃~+150℃

●用数码管进行实际温度值显示

三、总体设计方案

⒈整体功能说明:

以51单片机为主控制器,以数字式温度传感器AD590为传感元件,以LED数码管作为显示器件实时显示测量温度(十进制数)。

数字式温度计测温范围在-30~150℃。

温度测量间隔时间选择1s。

2.硬件功能模块组成:

温度计的控制器使用单片机AT89C51,温度传感器使用AD590,运算放大器使用OP07,用4位共阴LED数码管以动态扫描法实现温度显示。

主控制器:

单片机AT89C51具有低电压供电和小体积等特点,两个端口刚好满足电路系统的设计需要。

显示电路:

显示电路采用4位共阴LED数码管,从P1口输出段码,列扫描用P3.0~P3.3口来实现。

3.软件功能组成模块:

系统程序主要包括主程序、读出温度子程序、温度转换命令子程序、计算温度子程序和显示数据刷新子程序等。

主程序:

主要功能是负责温度的实时显示、读出并处理AD590的测量温度值。

温度测量每1s进行一次。

4.硬件总体框图:

四、系统硬件电路的设计

1.整体功能说明:

数字式温度计测温范围在-30~150℃,温度测量间隔时间选择1s。

2.硬件功能模块组成:

温度计电路设计原理图如下图所示,温度计的控制器使用单片机AT89C51,温度传感器使用AD590,用4位共阴极LED数码管以动态扫描法实现温度显示。

2.1系统电路原理图和PCB布线图

整个系统设计时,为了简化单个PCB板的布线嗯和系统各部分调试的方便,此设计采用模拟电路部分和数字控制电路部分分开成两个模块,分别画原理图和PCB布线图。

如下图:

模拟电路部分电路原理图

模拟电路部分PCB布线图

数字电路部分电路原理图

数字电路部分PCB布线图

2.2主控制器

单片机AT89C51具有低电压供电和小体积等特点,两个端口刚好满足电路系统的设计需要。

2.3温度测量模块

主要用到的是AD590温度传感器,将采集到的温度模拟量(-30度到150度)转换成数字量,并接上一个上拉电阻后再送给单片机P3.5口。

2.4运算放大电路

TD07(OP07)低噪声高精度运算放大器

1 特点

1)低的输入噪声电压幅度—0.35μVP-P(0.1Hz~10Hz)

2)极低的输入失调电压—10μV

3)极低的输入失调电压温漂—0.2μV/℃

4)具有长期的稳定性—0.2μV/MO

5)低的输入偏置电流—±

1nA

6)高的共模抑制比—126dB

7)宽的共模输入电压范围—±

14V

8)宽的电源电压范围—±

3V~±

22V

2 应用简介

TD07高精度运算放大器具有极低的输入失调电压,极低的失调电压温漂,非常低的输入噪声电压幅度及长期稳定等特点。

可广泛应用于稳定积分、精密绝对值电路、比较器及微弱信号放大。

2.5显示电路

显示电路采用4位共阴极LED数码管,从P1口输出段码,列扫描用P0.0~P0.3口来实现。

2.6温度传感器工作原理

1.AD590的性能特点

集成温度传感器实质上是一种半导体集成电路,它是利用晶体管的b-e结压降的不饱和值VBE与热力学温度T和通过发射极电流I的下述关系实现对温度的检测,集成温度传感器具有线性好、精度适中、灵敏度高、体积小、使用方便等优点,得到广泛应用。

集成温度传感器的输出形式分为电压输出和电流输出两种。

电压输出型的灵敏度一般为10mV/K,温度0℃时输出为0,温度25℃时输出2.982V。

电流输出型的灵敏度一般为1mA/K。

AD590是美国模拟器件公司生产的单片集成两端感温电流源。

它的主要特性如下:

流过器件的电流(mA)等于器件所处环境的热力学温度,AD590的测温范围为-55℃到+150℃。

AD590的电源电压范围为4V-30V。

电源电压可在4V-6V范围变化,电流变化1mA,相当于温度变化1K。

AD590可以承受44V正向电压和20V反向电压,因而器件反接也不会被损坏。

输出电阻为710MW。

精度高共有I、J、K、L、M五档,其中M档精度最高,在-55℃到+150℃范围内,非线性误差为±

0.3℃。

AD590的输出电流I=(273+T)μA(T为摄氏温度),因此测量的电压V为(273+T)μA×

10K=(2.73+T/100)V。

由于一般电源供应较多器件之后,电源是带杂波的,因此我们使用两个电容作为滤波元件,再利用可变电阻分压,其输出电压V1需调整至2.73V接下来我们使用差动放大器其输出Vo为(100K/10K)×

(V2-V1)=T/10,如果现在为摄氏28℃,输出电压为2.8V,输出电压接AD转换器,那么AD转换输出的数字量就和摄氏温度成线形比例关系。

五、系统的软件设计

1.主程序

主程序需要调用4个子程序,分别为数码管显示程序,温度测试及处理子程序,报警子程序,中断设定子程序。

各模块程序功能如下:

●数码管显示程序:

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

●温度测试及处理程序:

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

主程序流程见图:

主程序流程图

六、系统调试

根据方案设计的要求,调试过程共分3大部分:

硬件调试、软件调试和软硬联调。

1.硬件调试

硬件调试比较简单首先检查电路的焊接是否正确,然后可用万用表测试或通电检测。

2.软件调试

除语法和逻辑差错外,当确认程序没问题时,直接下载到单片机仿真调试。

采取自下而上的方法,单独调好每一个模块,最后完成一个完整的系统调试。

3.软硬调试

系统做好后,进行系统的完整调试。

联机仿真必须借助仿真开发装置、示波器、万用表等工具。

这些工具是单片机开发的最基本工具。

七、总结与体会

经过一个月的方案论证、系统的硬件和软件的设计、系统的调试。

查阅了大量的关于传感器、单片机及其接口电路、以及模拟电子技术方面的理论。

通过这次实训,我发现在现实设计中还需要注意很多的细节,包括程序设计和硬件设计都要我们小心仔细,一个地方出错就可能会整个系统失效。

在硬件设计时,由于电路图转印不好使得腐蚀后的电路板出现断线,在调试过程中引来很大的麻烦。

经过了一番特殊的体验后,经历了失败的痛苦,也尝到了成功的喜悦。

第一次靠用所学的专业知识来解决问题。

检查了自己的知识水平,使我对自己有一个全新的认识。

通过这次设计,不仅锻炼自己分析问题、处理问题的能力,还提高了自己的动手能力。

这些培养和锻炼对于我们来说,是很重要的。

这次设计基本的完成了任务书的要求,实现了温度的控制。

通过测试表明系统的设计是正确的,可行的。

但是由于设计者的设计经验和知识水平有限,系统还存在许多不足和缺陷。

谢辞

在本次实训中,我遇到了很多难题,然而这些难题让我不断的学习,在因难中进步,在此我要感谢指导教师给我提供的宝贵的意见,感谢学校给我们这提供实训的机会。

参考文献

[1]华成英主编.模拟电子技术基本教程.清华大学出版社,2006

[2]何道清张禾諶海云编著.传感器与传感器技术(第二版).北京.科学出版社,2008

[3]张毅刚彭喜元著.单片机原理及接口技术.人民邮电出版社,2008

附录I程序清单

#include<

reg52.h>

//定义段码,不带小数点

Unsignedcharcodetab_duan[16]={0x77,0x41,0x3b,0x6b,0x4d,0x6e,0x7e,0x43,0x7f,0x6f};

//定义段码,带小数点

unsignedcharcodetab_duan_r[16]={0xf7,0xc1,0xbb,0xeb,0xcd,0xee,0xfe,0xc3,0xff,0xef};

//定义位码

unsignedcharcodetab_wei[4]={0x7f,0xbf,0xdf,0xef};

//定义符号

unsignedcharSign=0x08;

unsignedlongTin_val;

//保存计数值

unsignedintTem_val;

//保存当前温度

unsignedlongFrequency;

//保存实际频率值

unsignedcharSign;

//保存温度负号标志

voidDelayUs(unsignedintNum);

voidLedDisplay(unsignedintNum,unsignedcharflag);

unsignedintGet_Temperature(unsignedlongFreq);

voidTimer_Init(void);

//主函数

voidmain(void)

{

Timer_Init();

//定时器初始化

Tem_val=0;

Tin_val=0;

for(;

;

{

LedDisplay(Tem_val,Sign);

}

}

/********************************************************

函数名称:

DelayUs

功能:

微秒延时

参数:

Num微秒数

返回值:

*********************************************************/

voidDelayUs(unsignedintNum)

while(Num--);

函数名字:

LedDisplay

数码管显示函数

Num:

待显示的数,整形,flag:

正负温度显示标准

********************************************************/

voidLedDisplay(unsignedintNum,unsignedcharflag)

unsignedchari;

unsignedchartab[4];

tab[0]=Num/1000;

tab[1]=Num%1000/100;

tab[2]=Num%100/10;

tab[3]=Num%10;

for(i=0;

i<

4;

i++)

if(i==0)

if(flag==0)//判断负温度标志

P1=tab_duan[tab[i]];

else

P1=0x08;

else

if(i==2)

P1=tab_duan_r[tab[i]];

//显示小数点

else

P1=tab_duan[tab[i]];

P0=tab_wei[i];

DelayUs(20);

P1=0x0;

}

/********************************************************************

Get_Temperature

根据频率值计算出实际温度

Freq:

频率值

TemperVal实际温度值

********************************************************************/

unsignedintGet_Temperature(unsignedintFreq)

unsignedintTemperVal;

staticunsignedcharVK=2;

//电压比例系数

staticfloatFreqK=1.33;

//压频转换系数

TemperVal=(unsignedint)(((float)Freq/FreqK)*10/VK);

if(TemperVal<

273*10)//判断当前温度读是否小于273K

Sign=1;

//显示负号

return273*10-TemperVal;

Sign=0;

//显示正号

returnTemperVal-273*10;

}

/**********************************************************

**********************************************************/

Timer_Init

初始化定时器0,工作在定时中断模式,定时1S

初始化定时器1,工作在计数模式

voidTimer_Init(void)

TMOD=0X01;

//定时器0初始化为工作方式1

TH0=(65536-50000)/256;

//初值50000,50ms中断一次

TL0=(65536-50000)%256;

ET0=1;

//允许定时器0中断

TMOD|=0x60;

//定时器1初始化为工作方式2,计数模式

TH1=0;

//初值赋为0

TL1=0;

ET1=1;

//允许定时器1中断

EA=1;

//打开总中断

TR0=1;

//打开定时器0

TR1=1;

//打开计数器1

TIMER1_INTE

频率计数器累加,保存到Tin_val中

*************************************************************/

voidTIMER1_INTE(void)interrupt3

//TH1=0;

//TL1=0;

Tin_val++;

//计数器加加

TIMER0_INTE

读取计数值,并计算出实际温度

voidTIMER0_INTE(void)interrupt1

staticunsignedchartem=0;

//从新赋值

tem++;

if(tem==20)//计数到20,为1S

tem=0;

TR0=0;

//关闭定时器0,避免出现误差

TR1=0;

//关闭计数器1

Frequency=Tin_val*256+TL1;

//得到频率

Tem_val=Get_Temperature(Frequency);

//得到实际温度,并保存到Tem_val变量中

Frequency=0;

//变量从新初始化

Tin_val=0;

TL1=0;

//

TH1=0;

//清除上一次保存的计数值

TR1=1;

//打开计数器

TR0=1;

//打开定时器0

附录II元器件清单

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

当前位置:首页 > 求职职场 > 简历

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

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