数字温度计设计报告.docx

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

数字温度计设计报告.docx

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

数字温度计设计报告.docx

数字温度计设计报告

数字温度计

目录

一、引言………………………………………………………………

(2)

二、设计内容及性能指标……………………………………………

(2)

三、总体设计方案……………………………………………………

(2)

1.整体功能说明……………………………………………………………

(2)

2.硬件功能模块组成………………………………………………………

(2)

3.软件功能模块组成………………………………………………………(3)

4.硬件总体框图……………………………………………………………(3)

四、系统硬件电路的设计……………………………………………(3)

1.整体功能说明……………………………………………………………(3)

2.硬件功能模块组成………………………………………………………(3)

2.1系统电路原理图和PCB布线图…………………………………(3)

2.2主控制器……………………………………………………………(6)

2.3温度测量模块………………………………………………………(6)

2.4运算放大电路……………………………………………………(6)

2.5显示电路……………………………………………………………(6)

2.6温度传感器工作原理………………………………………………(6)

五、系统的软件设计…………………………………………………(7)

1.主程序设计流程图………………………………………………………(7)

六、系统调试…………………………………………………………(8)

1.硬件调试…………………………………………………………………(8)

2.软件调试…………………………………………………………………(8)

3.软硬调试…………………………………………………………………(8)

七、总结与体会………………………………………………………(8)

谢辞……………………………………………………………………………………………(8)

参考文献………………………………………………………………………………………(8)

附录I程序清单……………………………………………………………………………(9)

附录

I元器件清单…………………………………………………………………………(13

 

数字温度计

摘要:

温度的检测与控制是工业生产过程中比较典型的应用之一,随着传感器在生活中的更加广泛的应用,利用新型数字温度传感器实现对温度的测试与控制得到更快的开发,本文设计了一种基于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.整体功能说明:

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

数字式温度计测温范围在-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

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

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;

}

else

{

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;

TH0=(65536-50000)/256;//初值50000,50ms中断一次

TL0=(65536-50000)%256;//从新赋值

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