基于单片机和DS18B20的数字温度计Word格式文档下载.docx

上传人:b****5 文档编号:19832664 上传时间:2023-01-10 格式:DOCX 页数:20 大小:167.06KB
下载 相关 举报
基于单片机和DS18B20的数字温度计Word格式文档下载.docx_第1页
第1页 / 共20页
基于单片机和DS18B20的数字温度计Word格式文档下载.docx_第2页
第2页 / 共20页
基于单片机和DS18B20的数字温度计Word格式文档下载.docx_第3页
第3页 / 共20页
基于单片机和DS18B20的数字温度计Word格式文档下载.docx_第4页
第4页 / 共20页
基于单片机和DS18B20的数字温度计Word格式文档下载.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

基于单片机和DS18B20的数字温度计Word格式文档下载.docx

《基于单片机和DS18B20的数字温度计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于单片机和DS18B20的数字温度计Word格式文档下载.docx(20页珍藏版)》请在冰豆网上搜索。

基于单片机和DS18B20的数字温度计Word格式文档下载.docx

随着工业现代化的发展,对温度测量仪表的要求越来越高,而数字温度表具有结构简单,抗干扰能力强,功耗小,可靠性高,速度快等特点,更加适合于工业过程中以及科学试验中对温度进行在线测量的要求。

近年来,数字温度表广泛应用在各个领域,它与模拟式温度表相比较,归纳起来有如下特点。

⑴准确度高,⑵测量范围宽、灵敏度高,⑶测量速度快,⑷使用方便、操作简单,⑸抗干扰能力强,⑹自动化程度高,⑺读数清晰、直观方便。

数字温度计的高速发展,使它已成为实现测量自动化、提高工作效率不可缺少的仪表。

数字化是当前计量仪器仪表发展的主要方向之一。

而高准确度数字温度计的出现,又使温度计进入了精密标准测量领域。

与此相适应,测量的可靠性、准确性显得越来越重要。

1.2主要功能

①实时显示环境温度。

4位数码管显示,3位整数,1位小数。

②温度范围:

-55~125℃。

③上电运行,实时显示温度。

2总体方案设计

通过查阅大量相关技术资料,并在老师的指导下,使我对整个电路系统有了一个比较全面的了解。

本设计主要是实现模拟量温度的采集,然后使其转换为数字量,最后将其转化为直观的十进制示值。

2.1方案比较

对同一种目的的实现,可以用不同的方案,下面就着重介绍以下两种方案对同一目的的实现方法。

并比较两种方案的优劣。

方案一

原理框图如图1所示:

图1方案一的原理框图

方案一的原理简述:

该方案的各部分电源均由总电源供电,温度传感器为热电偶,热电偶的热端感受被测物体温度t,产生相应的热电势。

热电势与热端温度成单值函数关系,用模数转换器ADC将热电势转化为数字量,按照热电势与温度的函数关系将该数字量转换为对应温度值,经译码显示电路显示在数码管上,从而实现数字温度计的功能。

方案二

原理框图如图2所示:

图2方案二的原理框图

方案二的原理简述:

该方案的各部分电源均由总电源供电,51单片机作为中央处理器及控制核心,控制数字温度计采集温度,数字温度传感器在采集到温度后直接输出数字量,传给单片机进行处理,单片机将传回的二进制数据处理后转换为相应温度,由译码显示电路以十进制形式显示在数码管上。

方案三

原理框图如图3所示:

图3方案三的原理框图

该方案的各部分电源均由总电源供电,由模拟及数字元器件组成的控制电路作为核心,控制数字温度计采集温度,数字温度传感器在采集到温度后直接输出数字量,传给控制电路进行处理,控制电路将传回的二进制数据处理后转换为相应温度,由译码显示电路以十进制形式显示在数码管上。

2.2方案论证

以上三种方案都是可行的,第一种方案的优点是由纯硬件电路构成,不涉及软件编程,但是由于热电势与温度之间的函数关系较复杂,利用硬件电路完成其转化较复杂,设计该电路难度较大且电路将比较庞大。

第二种方案的难点主要是单片机程序编制,但其硬件电路相对简单,借助于微控制器的强大功能可使设计周期缩短,测量精度高,且易于扩展功能,增强了电路对各种工作要求的适应性。

第三种方案的优点是由纯硬件电路构成,不涉及软件编程,但是数字式温度传感器的工作涉及复杂的时序,用硬件电路实现将十分复杂,电路设计难度大且电路庞大。

2.3方案选择

考虑到自己先前自学过单片机知识,对单片机有一定了解以及电路的灵活性和适用性,经过上面三个方案的分析,第二个方案的可行性高,所以我选择第二个方案作为设计方案。

在第二个方案中,数字式温度传感器和单片机起着主导作用,单片机控制传感器测温并将其传回的数据进行处理,通过改变程序,可改变测量精度及电路的功能,可实现设计要求。

3硬件电路设计

3.1元器件的选择

在本设计中主要采取较为熟悉的AT89C51单片机和由美国DALLAS半导体公司研制的DS18B20温度传感器以及4位LED数码管。

3.2电路原理图

电路原理图如图4所示。

图4

3.3特殊元器件的介绍

3.3.1AT89C51介绍

AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。

AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。

单片机的可擦除只读存储器可以反复擦除100次。

该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。

AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

1.主要特性:

a)与MCS-51兼容

b)4K字节可编程闪烁存储器

c)寿命:

1000写/擦循环

d)数据保留时间:

10年

e)全静态工作:

0Hz-24Hz

f)三级程序存储器锁定

g)128*8位内部RAM

h)32可编程I/O线

i)两个16位定时器/计数器

j)5个中断源

k)可编程串行通道

l)低功耗的闲置和掉电模式

m)片内振荡器和时钟电路

2.管脚说明:

VCC:

供电电压。

GND:

接地。

P0口:

P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。

当P1口的管脚第一次写1时,被定义为高阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。

在FLASH编程时,P0口作为原码输入口,当FLASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:

P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4个TTL门电流。

P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:

P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。

并因此作为输入时,P2口的管脚被外部拉低,将输出电流。

这是由于内部上拉的缘故。

P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。

在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。

P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:

P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。

当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。

作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

P3口也可作为AT89C51的一些特殊功能口,如下所示:

图5AT89C51管脚图

P3.0RXD(串行输入口)

P3.1TXD(串行输出口)

P3.2/INT0(外部中断0)

P3.3/INT1(外部中断1)

P3.4T0(记时器0外部输入)

P3.5T1(记时器1外部输入)

P3.6/WR(外部数据存储器写选通)

P3.7/RD(外部数据存储器读选通)

P3口同时为闪烁编程和编程校验接收一些控制信号。

RST:

复位输入。

当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

ALE/PROG:

当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。

在FLASH编程期间,此引脚用于输入编程脉冲。

在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。

因此它可用作对外部输出的脉冲或用于定时目的。

然而要注意的是:

每当用作外部数据存储器时,将跳过一个ALE脉冲。

如想禁止ALE的输出可在SFR区中的8EH地址上置0。

此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。

另外,该引脚被略微拉高。

如果微处理器在外部执行状态ALE禁止,置位无效。

PSEN:

外部程序存储器的选通信号。

在由外部程序存储器取指期间,每个机器周期两次PSEN有效。

但在访问外部数据存储器时,这两次有效的PSEN信号将不出现。

EA/VPP:

当EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。

注意加密方式1时,EA将内部锁定为RESET;

当EA端保持高电平时,此间内部程序存储器。

在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

XTAL1:

反向振荡放大器的输入及内部时钟工作电路的输入。

XTAL2:

来自反向振荡器的输出。

3.振荡器特性:

XTAL1和XTAL2分别为反向放大器的输入和输出。

该反向放大器可以配置为片内振荡器。

石晶振荡和陶瓷振荡均可采用。

如采用外部时钟源驱动器件,XTAL2应不接。

有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。

4.芯片擦除:

整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms来完成。

在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。

此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。

在闲置模式下,CPU停止工作。

但RAM,定时器,计数器,串口和中断系统仍在工作。

在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。

3.3.2DS18B20介绍

温度传感器DS18B20是一种新型数字温度传感器,它采用独特的单线接口方式,仅需一个端口引脚来发送或接收信息,在单片机和DS18B20之间仅需一条数据线和一条地线进行接口。

DS18B20采用TO-92或8脚SOIC封装,引脚排列如图6所示。

各引脚功能如下:

●GND:

地。

●DQ:

单线应用的数据输入/输出引脚。

●VDD:

可选的外部供电电源引脚。

DS18B20内部有三个主要数字部件:

64位激光ROM、温度传感器、非易失性温度报警触发器TH和TL。

DS18B20可以采用寄生电源方式工作,从单总线上汲取能量,在信号线处于高电平期间把能量储存在内部电容里,在信号线处于低电平期间消耗电容上的电能工作,直到高电平到来再给寄生电源(电容)充电。

DS18B20也可用外部3~5.5V电源供电,这两种供电方式的电路如图7所示。

图7

采用寄生电源方式时,VDD引脚必须接地,另外为了得到足够的工作电流,应给单片机的I/O口线提供一个强上拉,一般可以使用一个场效应管将I/O口线直接拉到电源上。

采用外部供电方式时可以不用强上拉,但外部电源要处于工作状态,GND引脚不得悬空。

温度高于100℃时,不推荐使用寄生电源,应采用外部电源供电。

DS18B20依靠一个单线端口通信,必须先建立ROM操作协议,才能进行存储器和控制操作。

因此,单片机必须先提供下面5个ROM操作命令之一:

⒈读出ROM,代码为33H,用于读出DS18B20的序列号,即64位激光ROM代码。

⒉匹配ROM,代码为55H,用于辨识(或选中)某一特定的DS18B20进行操作。

⒊搜索ROM,代码为F0H,用于确定总线上的节点数以及所有节点的序列号。

⒋跳过ROM,代码为CCH,命令发出后系统将对所有DS18B20进行操作,通常用于启动所有DS18B20转换之前,或系统中只有一个DS18B20时。

⒌报警搜索,代码为ECH,主要用于鉴别和定位系统中超出程序设定的报警温度界限的节点。

这些命令对每个器件的激光ROM部分进行操作,在单线总线上挂有多个器件时,可以区分出单个器件,同时指明有多少器件或是什么型号的器件。

DS18B20内部存储器映像如图4所示。

存储器由一个高速暂存器和一个存储高低温报警触发值TH和TL的非易失性电可擦除E²

RAM组成。

头2个字节为实测温度值,低字节在前,高字节在后,第3和第4字节是用户设定温度报警值TH和TL的拷贝,是易失的,每次上电时被刷新。

第5字节为配置寄存器,其内容用于确定温度值得数字转换分辨率,DS18B20工作时按此寄存器中的分辨率将温度转换为相应精度的数值。

配置寄存器各位的分布如下:

其中,TM为测试模式位,用于设定DS18B20为工作模式还是为测试模式,出厂时TM被设置为0,用户一般不要改动。

R1和R0用于设定温度转换的精度分辨率。

如表1所示。

其余低5位全为1。

DS18B20温度转换时间较长,而且设定的分辨率越高,所需转换时间越长,因此实际应用中要根据具体情况权衡考虑。

高速暂存器的第6、7、8字节保留未用,读出值为全1。

第9字节为前面8个字节的CRC校验码,用于保证数据通信的正确性。

DS18B20提供了如下存储器操作命令:

⒈温度转换,代码为44H,用于启动DS18B20进行温度测量,温度转换命令被后DS18B20保持等待状态。

如果主机在这条命令之后跟着发出读时间隙,而DS18B20又忙于进行温度转换的话,DS18B20将在总线上输出“0”,若温度转换完成,则输出“1”。

如果使用寄生电源,主机必须在发出这条命令后立即启动强上拉,并保持750ms,在这段时间内单总线上不允许进行任何其他操作。

⒉读暂存器,代码为BEH,用于读取暂存器中的内容,从字节0开始最多可以读取9个字节,如果不想读完所有字节,主机可以在任何时间发出复位命令来终止读取。

⒊写暂存器,代码为4EH,用于将数据写入到DS18B20暂存器的地址2和地址3(TH和TL字节)。

可以在任何时刻发出复位命令来终止写入。

⒋复制暂存器,代码为48H,用于将暂存器的内容复制到DS18B20的非易失性E²

RAM中,即把温度报警触发字节存入非易失性存储器里。

如果主机在这条命令之后跟着发出读时间隙,而DS18B20又正在忙于把暂存器的内容复制到E²

RAM存储器,DS18B20就会输出一个“0”,如果复制结束的话,DS18B20则输出“1”。

如果使用寄生电源,主机必须在这条命令发出后立即启动强上拉并最少保持10ms,在这段时间内单总线上不允许进行任何其他操作。

⒌重读E²

RAM,代码为B8H,用于将存储在非易失性E²

RAM中的内容重新读入到暂存器(温度触发器)中。

这种复制操作在DS18B20上电时自动执行,这样器件一上电,暂存器里马上就存在有效的数据了。

若在这条命令发出之后发出读时间隙,器件会输出温度转换忙的标志:

“0”代表忙,“1”代表完成。

⒍读电源,代码为B4H,用于将DS18B20的供电方式信号发送到主机。

若在这条命令发出之后发出读时间隙,DS18B20将返回它的供电模式:

“0”代表寄生电源,“1”代表外部电源。

一条温度转换命令启动DS18B20完成一次温度测量,测量结果以二进制补码形式存放在高速暂存器中,占用暂存器的字节1(LSB)和字节2(MSB)。

用一条读暂存器内容的存储器操作命令可以把暂存器中的数据读出。

温度报警触发器TH和TL各由一个E²

PROM字节构成,可以用一条写存储器操作命令对TH和TL进行写入,对这些寄存器的读出需要通过暂存器。

所有数据都以低位(LSB)在前的方式进行读写,数据格式以0.0625℃/LSB形式表示如下:

LSB字节

MSB字节

当符号位S=0时,表示测得的温度值为正,可以直接对测得的二进制数进行计算并转换为十进制数。

当符号位S=1时,表示测得的温度值为负,此时测得的二进制数为补码数,要先变成原码数再进行计算。

表2所示为部分温度值对应的二进制数据。

DS18B20完成温度转换后,就把测得的温度值t与暂存器中的TH、TL字节内容进行比较,若t>

TH或t<

TL,则将DS18B20内部报警标志位置1,并对主机发出的报警搜索命令做出响应,因此可用多只DS18B20进行多点温度循环检测。

4总结

此次课程设计是我大学生活重要的一步。

从最初的选题,开题到写论文直到完成论文。

其间,查找资料,老师指导,与同学交流,然后反复修改,每一个过程都是对自己能力的一次检验和充实。

通过这次实践,锻炼了设计实践能力,此次课程设计是对我专业知识和专业基础知识一次实际检验和巩固。

这次课程设计收获很多,比如学会了查找相关资料相关标准,分析数据,提高了自己的制作能力。

终于完成了我的单片机课程设计,虽然没有完全达到设计要求,但从心底里说,还是高兴的,毕竟这次设计花了我很多心血,高兴之余不得不深思呀!

在本次设计的过程中,我发现很多的问题,,比如缺乏综合应用专业知识的能力,对材料的不了解等等。

由于时间有限,未能完成全部安装与调试工作,对设计结果没有作出最后的检验,也感到遗憾。

这次实践是对自己大学三年所学的一次大检阅,使我明白自己知识还很不全面。

单片机课程设计重点就在于软件算法的设计,需要有很巧妙的程序算法,虽然以前写过几次程序,但我觉的写好一个程序并不是一件简单的事,只有我们去试着做了,才能真正的掌握,只学习理论有些东西是很难理解的,更谈不上掌握。

从这次的课程设计中,使我真正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单机片机更是如此,程序只有在经常的写与读的过程中才能提高,这就是我在这次课程设计中的最大收获。

在此感谢老师的悉心指导和同学们的大力帮助!

5参考文献

1.张靖武、周灵彬.单片机原理、应用与PROTEUS仿真.北京:

电子工业出版社,2008年8月

2.徐爱钧.单片机原理实用教程—基于Proteus虚拟仿真.北京:

电子工业出版社,2009年1月

3.李全利.单片机原理及接口技术.北京:

高等教育出版社,2009年1月

4.欧阳文.ATMEL89系列单片机的原理与开发实践.北京:

中国电力出版社.2007年6月

5.倪志莲.单片机应用技术.北京:

北京理工大学出版社.2007年6月

6.AT89单片机原理及应用.北京:

国防工业出版社.2008年2月

附录

本设计的应用程序

温度传感器DS18B20采用器件默认的12位转化。

晶振频率为12MHz,最大转化时间为750ms。

DS18B20的通信线与P3.7相接,程序设计如下。

ORG00H

TMPLEQU29H;

用于保存读出温度的低8位

TMPHEQU28H;

用于保存读出温度的高8位

FLAG1EQU38H;

是否检测到DS18B20标志位27H

DATAINBITP1.7

MAIN:

LCALLGET_TEMPER;

调用读温度子程序

LCALLCVTTMP

LCALLDISP1

AJMPMAIN

;

DS18B20复位初始化子程序

INIT_1820:

SETBDATAIN

NOP

CLRDATAIN

主机发出延时537ms的复位低脉冲

MOVR1,#3

TSR1:

MOVR0,#107

DJNZR0,$

DJNZR1,TSR1

SETBDATAIN;

然后拉高数据线

NOP

MOVR0,#25H

TSR2:

JNBDATAIN,TSR3;

等待DS18B20回应

DJNZR0,TSR2

CLRFLAG1;

清标志位,表示DS18B20不存在

SJMPTSR7

TSR3:

SETBFLAG1;

置标志位,表示DS18B20存在

CLRP1.7;

检查到DS18B20就点亮P1.7LED

MOVR0,#117

TSR6:

DJNZR0,$;

时序要求延时一段时间

TSR7:

RET

读出转换后的温度值

GET_TEMPER:

LCALLINIT_1802;

先复位DS18B20

JBFLAG1,TSS2

RET;

判断DS18B20是否存在?

若DS18B20不存在,则返回

TSS2:

MOVA,#0CCH;

跳过ROM匹配

LCALLWRITE_1820

MOVA,#44H;

发出温度转换命令

ACALLDISP1

LCALLINIT_1820;

准备读温度前复位

MOVA,#0BEH;

发出读温度命令

LCALLREAD_1820;

将读出的温度数据保存到35H/36H

写DS18B20的子程序(有具体的时序要求)

WRITE_1820:

MOVR2,#8;

一共8位数据

CLRC

WR1:

MOVR3,#6

DJNZR3,$

RRCA

MOVDATAIN,C

MOVR3,#23

DJNZR2,WR1

读DS18B20的程序,从DS18B20中读出两个字节的温度数据

READ_1820:

MOVR4,#2;

将温度高位和低位从DS18B20中读出

MOVR1,#29H;

低位存入

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

当前位置:首页 > 法律文书 > 调解书

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

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