数字温度计设计报告Word文档下载推荐.docx

上传人:b****8 文档编号:22480623 上传时间:2023-02-04 格式:DOCX 页数:28 大小:176.63KB
下载 相关 举报
数字温度计设计报告Word文档下载推荐.docx_第1页
第1页 / 共28页
数字温度计设计报告Word文档下载推荐.docx_第2页
第2页 / 共28页
数字温度计设计报告Word文档下载推荐.docx_第3页
第3页 / 共28页
数字温度计设计报告Word文档下载推荐.docx_第4页
第4页 / 共28页
数字温度计设计报告Word文档下载推荐.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

数字温度计设计报告Word文档下载推荐.docx

《数字温度计设计报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数字温度计设计报告Word文档下载推荐.docx(28页珍藏版)》请在冰豆网上搜索。

数字温度计设计报告Word文档下载推荐.docx

报警信号

一、引言

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

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

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

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

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

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

二、设计内容及性能指标

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

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

●测量范围为-55℃~+99℃,精度为±

0.5℃

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

●能够根据需要方便设定上下限报警温度

三、总体设计方案

⒈整体功能说明:

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

数字式温度计测温范围在-55~125℃,误差在±

0.5℃以内。

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

通过键盘扩展,实现温度上下限值的设定及温度报警功能。

对温度采样值实现数字滤波。

通过硬件或软件方法实现时间显示。

2.硬件功能模块组成:

温度计的控制器使用单片机AT89C2051,温度传感器使用DS18B20,用4位共阳LED数码管以动态扫描法实现温度显示。

主控制器:

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

显示电路:

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

3.软件功能组成模块:

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

主程序:

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

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

读出温度子程序:

主要功能是读出RAM中的9字节。

在读出时须进行CRC校验,校验有错时不进行温度数据的改写。

温度转换命令子程序:

主要是发温度转换开始命令。

计算温度子程序:

将RAM中读取值进行BCD码的转换运行,并进行温度值正负的判定。

显示数据刷新子程序:

主要是对显示缓冲器中的显示数据进行刷新操作,当最高数据显示位为0时,将符号显示位移入下一位。

4.硬件总体框图:

5.测试计划:

(1)硬件测试:

主要测试各部分硬件是否能正常工作,每部分通过简单程序来检测。

(2)软件测试:

测试软件是否符合设计要求、是否存在BUG。

四、系统硬件电路的设计

1.整体功能说明:

2.硬件功能模块组成:

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

图中有3个独立式按键可以分别调整温度的上下限报警设置,图中蜂鸣器可以在被测温度不在上下限范围内时,发出报警鸣叫声音,同时LED数码管将没有被测温度显示,这时可以调整上下限,从而测出被测的温度值。

图4.1温度计电路设计原理图

2.1主控制器

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

2.2温度测量模块

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

2.3显示电路

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

2.4温度传感器工作原理

1.DS18B20的性能特点

DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感

器。

与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简

单的编程实现9-12位的数字值读数方式。

DS18B20的性能特点如下:

.独特的单线接口仅需要一个端口引脚进行通信;

.多个DS18B20可以并联在唯一的三线上,实现多点组网功能;

.不需要外部器件;

.可通过数据线供电,电压范围为3.0-5.5V;

.零待机功耗;

.温度以9^12位数字量读出;

.用户可定义的非易失性温度报警设置;

.报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;

.负电压特性,电源极性接反时,温度计不会因发热而烧毁,只是不能正常工作。

2.DS18B20的内部结构

DS18B20采用3脚PR一35封装或8脚SOIL封装,其内部结构框图如图4.2所示。

图4.2DS18B20内部结构框图

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

开始8位是产品类型的编号;

接着是每个器件的唯一的序号,共有48位;

最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用单线进行通信的原因。

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

图4.364位ROM结构框图

3.DS18B20测温原理

图4.4所示,图中低温度系数振荡器的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1;

高温度系数振荡器随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输人。

图4.4DS18B20的测温原理图

图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数,进而完成温度测量。

计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55℃所对应的一个基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在-55℃所对应的一个基数值。

减法计数器1对低温度系数振荡器产生的脉冲信号进行减法计数,当减法计数器1的预置值减到。

时,温度寄存器的值将加1,减法计数器1的预置值将重新被装人,并重新开始对低温度系数振荡器产生的脉冲信号进行计数。

如此循环,直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值就是所测温度值。

图4.8中的斜率累加器用于补偿和修正测温过程中的非线形性,其输出用于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直到温度寄存器值达到被测温度值。

另外,由于DS18B20单线通信功能是分时完成的,有严格的时隙概念,因此读/写时序很重要。

系统对DS18B20的各种操作必须按协议进行。

操作协议为:

初始化DS18B20(发复位脉冲)~发ROM功能命令~发存储器操作命令~处理数据。

4.DS18B20与单片机的接口电路

DS18B20可以采用两种方式供电:

一种是采用电源供电方式,此时DS18B20的第1脚接单片机课程设计指导地,第2脚作为信号线,第3脚接电源;

另一种是寄生电源供电方式,如图4.5所示。

单片机端口接单线总线,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉。

当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最长为500ms。

采用寄生电源供电方式时,VDD和GND端均接地。

由于单线制只有一根线,因此发送接口必须是三态的。

图4.5DS18B20采用寄生电源的电路图

4.测温系统的硬件工作原理

对DS18B20初始化后,主机发出SKIPROM命令,此命令执行后的存储器操作命令将对所在线的DS18B20,在发出温度转换启动码(44H),等待750ms后,先发出匹配ROM命令(55H)紧接着主机提供一片DS18B20的64位序列号,读取其温度存储器值,存入数据缓存。

五、系统的软件设计

1.主程序

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

各模块程序功能如下:

●数码管显示程序:

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

●温度测试及处理程序:

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

●报警子程序:

进行温度上下限判断及报警输出。

●中断设定程序:

实现设定上下限报警功能。

主程序流程见图5.1:

图5.1主程序流程图

2.读出温度子程序

读出温度子程序的主要功能是读出RAM中的9字节。

其流程如图5.2所示。

图5.2读DS18B20流程图

3.温度转换命令子程序

温度转换命令子程序主要是发温度转换开始命令。

其流程如图5.3所示。

图5.3温度转换命令子程序流程图

4.计算温度子程序

计算温度子程序的主要功能是将RAM中读取值进行BCD码的转换运行,并进行温度值正负的判定。

其流程如图5.4所示。

图5.4计算温度子程序流程

5.显示数据刷新子程序

显示数据刷新子程序的主要功能是对显示缓冲器中的显示数据进行刷新操作,当最高数据显示位为0时,将符号显示位移入下一位。

其流程如图5.5所示。

图5.5显示数据刷新子程序流程

六、系统调试

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

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

单片机的硬件调试和软件调试是不能分开的,许多硬件错误是在软件调试中被发现和纠正的。

但通常是先排除明显的硬件故障以后,在和软件结合起来调试以进一步排除故障。

可见硬件的调试是基础。

如果硬件调试不通过,软件设计就是无从说起。

1.硬件调试

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

1.1排除逻辑故障

这类故障往往由于设计和加工制板过程中工艺性错误所造成的。

只要包括错线、开路、短路。

排除的方法是首先将加工的印制板认真对照原理图,看两者是否一致。

应特别注意电源系统检查,以防止电源短路和极性错误,并重点检查系统总线(地址总线、数据总线和控制总线)是否存在相互之间短路或与其他信号线短路。

必要时利用数字万用表的短路测试功能,可以缩短排错时间。

1.2排除元器件失效

造成这类错误的原因有2个:

一是元器件买来时就已坏了;

另一个是安装错误,造成器件烧坏。

可以采取检查元器件与设计要求的型号、规格和要求是否一致。

在保证安装无误后,用替换方法排除错误。

1.3排除电源故障

在通电前,一定要检查电源电压的幅值和极性,否则很容易造成集成块损坏。

2.软件调试

本系统的软件系统较大,全面采用汇编语言编写,除语法和逻辑差错外,当确认程序没问题时,直接下载到单片机仿真调试。

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

3.软硬调试

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

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

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

七、程序清单

;

常数定义

TIMELEQU0E0H

TIMEHEQU0B1H;

20ms,定时器0时间常数

TEMPHEADEQU36H

工作内存定义

BITSTDATA20H

TIME1SOKBITBITST.1

TEMPONEOKBITBITST.2

TEMPLDATA26H

TEMPHDATA27H

TEMPHCDATA28H

TEMPLCDATA29H

引脚定义

TEMPDINBITP3.4

中断向量区

ORG0000H

LJMPSTART

ORG000BH

LJMPTOIT

系统初始化

ORG0030H

START:

MOVSP,#60H

CLSMEM:

MOVR0,#20H

MOVR1,#60H

CLSMEM1:

MOV@R0,#00H

INCR0

DJNZR1,CLSMEM1

MOVTMOD,#00100001B;

定时器0工作方式(16位)

MOVTH0,#TIMEL

MOVTL0,#TIMEH;

20ms

SJMPINIT

ERROR:

NOP

NOP

INIT:

SETBET0

SETBTR0

SETBEA

MOVPSW,#00H

CLRTEMPONEOK

LJMPMAIN

定时器0中断服务程序

TOIT:

PUSHPSW

MOVPSW,#10H

MOVTH0,#TIMEH

MOVTL0,#TIMEL

INCR7

CJNER7,#32H,TOIT1

MOVR7,#00H

SETBTIME1SOK;

1s定时标志

TOIT1:

POPPSW

RETI

主程序

MAIN:

LCALLDISP1;

调用显示子程序

JNBTIME1SOK,MAIN

CLRTIME1SOK;

测温每1s一次

JNBTEMPONEOK,MAIN2;

上电时先温度转换一次

LCALLREADTEMP1;

读出温度子程序

LCALLCONVTEMP;

温度BCD码计算处理子程序

LCALLDISPBCD;

显示区BCD码温度值刷新子程序

LCALLDISP1;

消闪烁,显示一次

MAIN2:

LCALLREADTEMP;

温度转换开始

SETBTEMPONEOK

子程序区

复位DS18B20

INITDS1820:

SETBTEMPDIN

NOP

CLRTEMPDIN

MOVR6,#0A0H;

延时480us

DJNZR6,$

MOVR6,#0A0H

MOVR6,#32H;

延时70us

MOVR6,#3CH

LOOP1820:

MOVC,TEMPDIN

JCINITDS1820OUT

DJNZR6,LOOP1820

MOVR6,#064H;

延时200us

SJMPINITDS1820

RET

INITDS1820OUT:

SETBTEMPDIN

读DS18B20的程序,从读出DS18B20一字节的数据

READDS1820:

MOVR7,#08H

READDS1820LOOP:

MOVR6,#07H;

延时15us

MOVR6,#3CH;

延时120us

RRCA

DJNZR7,READDS1820LOOP

写DS18B20的程序,从读出DS18B20一字节的数据

WRITEDS1820:

WRITEDS1820LOP:

CLRTEMPDIN

MOVTEMPDIN,C

MOVR6,#34H;

延时104us

DJNZR7,WRITEDS1820LOP

;

******************读温度TEMP*********

READTEMP:

LCALLINITDS1820

MOVA,#0CCH

LCALLWRITEDS1820;

SKIPROM

MOVA,#44H

开始转换

READTEMP1:

MOVA,#0BEH

LCALLWRITEDS1820

MOVR6,#34H

DJNZR6,$

MOVR5,#09H

MOVR0,#TEMPHEAD

MOVB,#00H

READTEMP2:

LCALLREADDS1820

MOV@R0,A

INCR0

READTEMP21:

LCALLCRC8CAL

DJNZR5,READTEMP2

MOVA,B

JNZREADTEMPOUT

MOVA,TEMPHEAD+0

MOVTEMPL,A

MOVA,TEMPHEAD+1

MOVTEMPH,A

READTEMPOUT:

RET

***********处理温度BCD码子程序************

CONVTEMP:

MOVA,TEMPH

ANLA,#80H

JZTEMPC1

CLRC

MOVA,TEMPL

CPLA

ADDA,#01H

MOVA,TEMPH;

"

-"

ADDCA,#00H

MOVTEMPH,A;

TEMPHCHI=符号位

MOVTEMPHC,#0BH

SJMPTEMPC11

TEMPC1:

MOVTEMPHC,#0AH;

+"

TEMPC11:

MOVA,TEMPHC

SWAPA

MOVTEMPHC,A

ANLA,#0FH;

乘以0.625

MOVDPTR,#TEMPDOTTAB

MOVCA,@A+DPTR

MOVTEMPLC,A;

TEMPLCLOW=小数部分BCD

MOVA,TEMPL;

整数部分

ANLA,#0F0H

ANLA,#0FH

ORLA,TEMPL

LCALLHEX2BCD1

SWAPA;

TEMPHCLOW=十位

ORLA,TEMPHC

TEMPHCHI=个位

ORLA,TEMPLC

MOVTEMPLC,A

MOVA,R7

JZTEMPC12

MOVR7,A

MOVA,TEMPHC;

TEMPHCHI=百位BCD

ORLA,r7

TEMPC12:

******************小数码表**************

TEMPDOTTAB:

DB00H

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

当前位置:首页 > 高等教育 > 工学

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

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