DS18B20数字温度计设计实验报告

单片机原理及应用 课程设计报告书

题 目: DS18B20数字温度计

姓名学号:

指导老师: 万青

设计时间: 2015年12月

电子与信息工程学院

目 录

1.

1.1.

1.2. 引 言 ............................................................................................................................. 3 设计意义 ................................................................................................................ 3 系统功能要求 ....................................................................................................... 3

2.

3.

4.

5.

6.

7.

8.

9.

方案设计 ..................................................................................................................... 4 硬件设计 ..................................................................................................................... 2 软件设计 ..................................................................................................................... 5 系统调试 ..................................................................................................................... 7 设计总结 ..................................................................................................................... 8 附 录 ............................................................................................................................. 9 作品展示 ................................................................................................................... 15 参考文献 ................................................................................................................... 17

DS18B20数字温度计设计

1. 引 言

1.1. 设计意义

在日常生活及工农业生产中,经常要用到温度的检测及控制,传统的测温元

件有热电偶和热电阻。而热电偶和热电阻测出的一般都是电压,再转换成对应的

温度,需要比较多的外部硬件支持。其缺点如下:

● 硬件电路复杂;

● 软件调试复杂;

● 制作成本高。

本数字温度计设计采用美国DALLAS 半导体公司继DS1820之后推出的一种改

进型智能温度传感器DS18B20作为检测元件,测温范围为-55~125℃,最高分辨

率可达0.0625℃。

DS18B20可以直接读出被测温度值,而且采用三线制与单片机相连,减少了

外部的硬件电路,具有低成本和易使用的热点。

1.2. 系统功能要求

设计出的DS18B20数字温度计测温范围在-55~125℃,误差在±0.5℃以内,

采用LED 数码管直接读显示。

2. 方案设计

按照系统设计功能的要求,确定系统由3个模块组成:主控制器、测温电

路和显示电路。

数字温度计总体电路结构框图如4.1图所示:

图4.1

3. 硬件设计

温度计电路设计原理图如下图所示,控制器使用单片机AT89C2051,温度传

感器使用DS18B20,使用四位共阳LED 数码管以动态扫描法实现温度显示。

主控制器 单片机AT89C2051

具有低电压供电和小体积等特点,

两个端口刚好满足电路系统的设计需

要,很适合便携手持式产品的设计使用。系统可用两节电池供电。AT89C2051的

引脚图如右图所示:

1、VCC :电源电压。

2、GND :地。

3、P1口:P1口是一个8位双向I/O口。口引脚P1.2~P1.7提供内部上拉

电阻,P1.0和P1.1要求外部上拉电阻。P1.0和P1.1还分别作为片内精密模拟

比较器的同相输入(ANI0)和反相输入(AIN1)。P1口输出缓冲器可吸收

20mA 电流并能直接驱动LED 显示。当P1口引脚写入“1”时,其可用作输入端,

当引脚P1.2~P1.7用作输入并被外部拉低时,它们将因内部的写入“1”时,其

可用作输入端。当引脚P1.2~P1.7用作输入并被外部拉低时,它们将因内部的上

拉电阻而流出电流。

4、P3口:P3口的P3.0~P3.5、P3.7是带有内部上拉电阻 的七个双向I/O

口引脚。P3.6用于固定输入片内比较器的输出信号并且它作为一通用I/O引脚

而不可访问。P3口缓冲器可吸收20mA 电流。当P3口写入“1”时,它们被内部

上拉电阻拉高并可用作输入端。用作输入时,被外部拉低的P3口脚将用上拉电

阻而流出电流。

5、RST :复位输入。RST 一旦变成高电

平所有的I/O引脚就复位到“1”。当振荡器

正在运行时,持续给出RST 引脚两个机器周

期的高电平便可完成复位。每一个机器周期

需12个振荡器或时钟周期。

6、XTAL1:作为振荡器反相器的输入和

内部时钟发生器的输入。

7、XTAL2:作为振荡器反相放大器的输出。

总线驱动器 74LS244

74LS244为3态8位缓冲器,一般用作总线驱动器。引脚图见上图。

显示电路

显示电路采用4位共阳极LED 数码管,从P1口输出段码,列扫描用P3.0

P3.3口来实现,列驱动用8055三极管。

温度传感器 DS18B20

DS18B20的性能特点:

1、适应电压范围更宽,电压范围:3.0~5.5V ,在寄生电源方式下可由数据

线供电。

2、独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即

可实现微处理器与DS18B20的双向通讯。

3、 DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,

实现组网多点测温。

4、DS18B20在使用中不需要任何外围元件,全部 传感元件及转换电路集成

在形如一只三极管的集成电路内。

5、温范围-55℃~+125℃,在-10~+85℃时精度为±0.5℃。

6、可编程 的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、

0.125℃和0.0625℃,可实现高精度测温。

7、在9位分辨率时最多在 93.75ms内把温度转换

为数字,12位分辨率时最多在750ms 内把温度值转换

为数字,速度更快。

8、测量结果直接输出数字温度信号,以" 一线总

线" 串行传送给CPU ,同时可传送CRC 校验码,具有极

强的抗干扰纠错能力。

9、负压特性:电源极性接反时,芯片不会因发热

而烧毁, 但不能正常工作。DS18B20与单片机的接口

电路(引脚图见右图)

DS18B20可以采用电源供电方式,此时DS18B20

的第1 脚接地,第2脚作为信号线,第3脚接电源。

4. 软件设计

系统程序主要包括主程序、读出温度子程序、温度转换命令子程序、计算温

度子程序和显示数据刷新子程序等。

4.1 主程序

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

值。温度测量每1s 进行一次。主程序流程图如图4.1所示。

4.2 读出温度子程序

读出温度子程序的主要功能是读出RAM 中的9字节。在读出时必须进行CRC

校验,校验有错时不能进行温度数据的改写。读出温度子程序流程图如下图所示:

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

读出时须进行CRC 校验,校验有错时不进行温度数据的改写。得出温度子程序流

程图如下图所示。

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

采用12位分辨率时,转换时间约为750ms 。在本程序设计中,采用1s 显示程序

延时法等待转换的完成。温度转换命令子程序流程图如下图所示。

计算温度子程序 计算温度子程序将RAM 中读取值进行BCD 码的转换运算,

并进行温度值正负的判定。计算温度子程序流程图如下左图所示.

现实数据刷新子程序 现实数据刷新子程序主要是对显示缓冲器中的显示

数据进行刷新操作,当最高数据显示位为0时,将符号显示位移入下一位。现实

数据刷新子程序流程图如下右图所示.

5. 系统调试

系统的调试以程序调试为主。

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

通电检测。

软件调试可以先编写显示程序并进行硬件的正确性检验,然后分别进行主程

序、读出温度子程序、温度转换命令子程序、计算温度子程序和现实数据刷新子

程序等的编程及调试

由于DS18B20与单片机采用串行数据传送,因此,对DS18B20进行读/写编

程时必须严格地保证读/写时序;否则将无法读取测量结果。本程序采用单片机

汇编或C 语言编写用Wave3.2或Keil C51编译器编程调试。

软件调试到能显示温度值,并且在有温度变化时显示温度能改变,救基本完

成。

性能测试可用制作的温度机和已有的成品温度计同时进行测量比较。由于

DS18B20的精度很高,所以误差指标可以限制在0.5℃以内。

另外,-55~+125℃的测温范围使得该温度计完全适合一般的应用场合,其低

电压供电特性可做成用电池供电的手持温度计。

DS18B20温度计还可以在高低温报警、远距离多点测温控制等方面进行应用

开发,但在实际设计中应注意以下问题;

1、DS18B20工作时电流高大1.5mA ,总线上挂接点数较多且同时进行转换时

要考虑增加总线驱动,可用单片机端口在温度转换时导通一个MOSFET 供电。

2、连接DS18B20的总线电缆是有长度限制的,因此在用DS18B20进行长距

离测温系统设计时要充分考虑总线分布电容和阻抗匹配等问题。

3、在DS18B20测温程序设计中,向DS18B20发出温度转换命令后,程序总要等待DS18B20的返回信号。一旦某个DS18B20接触不好或断线,当程序读DS18B20时,将没有返回信号,程序进入死循环。这一点在进行DS18B20硬件连接和软件设计时要给予一定的重视。

6. 设计总结

历时2个星期的单片机课程设计已经结束了,在这两个星期的时间里,我们在老师的指导下完成了基于DS18B20的数字温度计的设计和制作。在进行实验的过程中,我们了解并熟悉DS18B20、AT89C2051以及74LS244的工作原理和性能。并且通过温度计的制作,我们将电子技能实训课堂上学到的知识进行运用,并在实际操作中发现问题,解决问题,更加增加对知识的认识和理解。

在课程设计的过程中,也遇到了一些问题。比如最开始根据课本上的电路图进行合理的设计布局和布线。有些同学的布局不合理,导致焊接的过程中任务相当繁重,并且不美观。在之后的烧程序调试的时候,出现问题之后,没有合理布线的同学在查找问题的过程中相当棘手。

在焊接过程中,出现最多的就是虚焊问题。对于这个问题,在焊接的过程中,我尽量依照书中的指导,尽量将焊点焊成水滴状,最后接电后再根据数码管的显示情况进行逐个排查。

在将程序烧到单片机之后,接上电源,发现数码管没有出现正常的“000.0”,而是出现了“666.6”,在检查线路无误之后,和其他的同学讨论之后得出结论:书中程序是对于单片机、电阻及数码管是直接连接而设计的,而在加入了74LS244之后,要将8个输入输出端口进行掉序。于是,我便将8个端口进行调换,之后再次接通电源,数码管显示“000.0”,调试成功。

在自己的温度计制作完成之后,我还帮助其他没有完成的同学进行检修,并且成功帮助2位同学找到问题进行解决,最后都调试成功。

总之,在这2个星期中,通过自己在实验室动手制作数字温度计,不仅将课本的知识与实践相结合,而且在实践中更加深入了解书中原本抽象的知识。这也

是整个课程设计中最有收获的地方。

7. 附 录

源程序代码

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

//

// DS18B20温度计C 程序

// 2005.2.28通过调试

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

//使用AT89C2051单片机,12MHZ 晶振,用共阳LED 数码管

//P1口输出段码,P3口扫描

//#pragma src(d:\aa.asm)

#include "reg51.h"

#include "intrins.h" //_nop_();延时函数用

#define Disdata P1 //段码输出口

#define discan P3 //扫描口

#define uchar unsigned char

#define uint unsigned int

sbit DQ=P3^7; //温度输入口

sbit DIN=P1^0; //LED小数点控制

uint h;

//

//

//*******温度小数部分用查表法**********//

Uchar code ditab[16]={0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09}

uchar code

dis_7[12]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff,0xbf};

/* 共阳LED 段码表 "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "不亮" "-" */

uchar code scan_con[4]={0xfe,0xfd,0xfb,0xf7}; // 列扫描控制字 uchar data temp_data[2]={0x00,0x00}; // 读出温度暂放 uchar data display[5]={0x00,0x00,0x00,0x00,0x00};//显示单元数据, 共4个数据, 一个运算暂存用

//

//

//

/***********11微秒延时函数**********/

//

void delay(uint t)

{

for(;t>0;t--);

}

//

/***********显示扫描函数**********/

scan()

{

char k;

for(k=0;k

{

Disdata=dis_7[display[k]];

if(k==1){DIN=0;}

discan=scan_con[k];delay(90);discan=0xff;

}

}

//

//

/***********18B20复位函数**********/

ow_reset(void)

{

char presence=1;

while(presence)

{

while(presence)

{

DQ=1;_nop_();_nop_(); DQ=0; // delay(50); // 550us DQ=1; // delay(6); // 66us presence=DQ; // presence=0继续下一步

}

delay(45); //延时500us

presence = ~DQ;

}

DQ=1;

}

//

//

/**********18B20写命令函数*********/

//向 1-WIRE 总线上写一个字节

void write_byte(uchar val)

{

uchar i;

for (i=8; i>0; i--) //

{

DQ=1;_nop_();_nop_();

DQ = 0;_nop_();_nop_();_nop_();_nop_();_nop_();//5us

DQ = val&0x01; //最低位移出

delay(6); //66us

val=val/2; //右移一位

}

DQ = 1;

delay(1);

}

//

/*********18B20读1个字节函数********/

//从总线上读取一个字节

uchar read_byte(void)

{

uchar i;

uchar value = 0;

for (i=8;i>0;i--)

{

DQ=1;_nop_();_nop_();

value>>=1;

DQ = 0; //

_nop_();_nop_();_nop_();_nop_(); //4us

DQ = 1;_nop_();_nop_();_nop_();_nop_(); //4us

if(DQ)value|=0x80;

delay(6); //66us

}

DQ=1;

return(value);

}

//

/***********读出温度函数**********/

//

read_temp()

{

ow_reset(); //总线复位

write_byte(0xCC); // 发Skip ROM命令

write_byte(0xBE); // 发读命令

temp_data[0]=read_byte(); //温度低8位

temp_data[1]=read_byte(); //温度高8位

ow_reset();

write_byte(0xCC); // Skip ROM

write_byte(0x44); // 发转换命令

}

//

/***********温度数据处理函数**********/

work_temp()

{

uchar n=0; //

if(temp_data[1]>127)

{temp_data[1]=(256-temp_data[1]);temp_data[0]=(256-temp_data[0]);n=1;}//负温度求补码

display[4]=temp_data[0]&0x0f;display[0]=ditab[display[4]];

display[4]=((temp_data[0]&0xf0)>>4)|((temp_data[1]&0x0f)

display[1]=display[4]%100;

display[2]=display[1]/10;

display[1]=display[1]%10;

if(!display[3]){display[3]=0x0A;if(!display[2]){display[2]=0x0A;}}//最高位为0时都不显示

if(n){display[3]=0x0B;}//负温度时最高位显示"-"

}

//

//

/**************主函数****************/

main()

{

Disdata=0xff; //初始化端口

discan=0xff;

for(h=0;h

ow_reset(); // 开机先转换一次

write_byte(0xCC); // Skip ROM

write_byte(0x44); // 发转换命令

for(h=0;h

{scan();} //开机显示"8888"2秒

while(1)

{

read_temp(); //读出18B20温度数据

work_temp(); //处理温度数据

for(h=0;h

{scan();} //显示温度值2秒

}

}

//

//*********************结束**************************//

作品展示


相关文章

  • 温度测量显示电路设计与制作(课程设计报告)
  • 课 程 设 计 课程名称 题目名称学生学院专业班级 学 号学生姓名指导教师 2009年 1月8日 广东工业大学本科生课程设计(论文)任务书 题目名称 学 院 专业班级 姓 名 学 号 温度测量显示电路设计与制作 信息工程学院 06级计算机测 ...

  • 数字温度控制器的设计与制作毕业论文
  • 毕业教学环节成果 题 目 数字温度控制器的设计与制作 毕业设计(论文)原创性声明和使用授权说明 原创性声明 本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果.尽我所知,除文中特别加以标注和致谢的地 ...

  • 外腔稳频半导体激光器数字温控电路的设计
  • 毕业设计(论文) 外腔稳频半导体激光器数字温控电路的 设计 学院(系): 专业班级: 学生姓名: 指导教师: 学位论文原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果.除了文中特别加以标注引用的内容外, ...

  • 课程设计内容
  • 课程设计 目录 一.概述„„„„„„„„„„„„„„„„„„„错误!未定义书签. 二.设计思路„„„„„„„„„„„„„„„„„„„3 三.软件及元件的选取介绍„„„„„„„„„„„„„4 (一)Proteus 简介„„„„„„„„„„„„ ...

  • 传感器设计
  • 课程设计(论文) 题 目 院 系 机械工程学院 专 业 机械设计及其自动化 年 级 学生姓名 学生学号 指导教师 完成设计(论文)时间 2012 年 12 月 目 录 摘要.................................. ...

  • 51单片机水温水位控制系统
  • 摘 要 本温度设计采用现常见的89C51单片机,配以DS18B20数字温度传感器,该温度传感器可自行设置温度上下限.单片机将检测到的温度信号与输入的温度上.下限进行比较,由此作出判断是否启动继电器以开启设备.系统包括单片机模块.温度检测模块 ...

  • 电子温度计设计
  • 毕 业 设 计 正 文 电子温度计的毕业设计 [摘 要]随着科技的不断进步,在工业生产中温度是常用的被控参数,而采用单片机来对这些被控参数进行控制已成为当今的主流.本文介绍了数字温度测量及自动控制系统的设计.本文采用单片机来实现对温度的控制 ...

  • DS18B20温度传感器工作原理及其应用电路图
  • DS18B20温度传感器工作原理及其应用电路图 时间:2012-02-16 14:16:04 来源:赛微电子网 作者: 前言 温度与工农业生产密切相关,对温度的测量和控制是提高生产效率.保证产品质量以及保障生产安全和节约能源的保障.随着工业 ...

  • 基于51单片机的温度计设计
  • 单片机原理与接口技术课程课程名称: 设计题目: 专 业: 设 计 者: 指导老师:设计 单片机原理与接口技术 基于51单片机的数字温度计设计 信 息 工 程 摘要 随着现代信息技术的飞速发展和传统工业改造的逐步实现.能够独立工作的温度检测和 ...

  • 温度控制系统毕业设计
  • 摘 要 在日常生活及工农业生产中,对温度的检测及控制时常显得极其重要.因此,对 数字显示温度计的设计有着实际意义和广泛的应用.本文介绍一种利用单片机实 现对温度只能控制及显示方案.本毕业设计主要研究的是对高精度的数字温度计 的设计,继而实现 ...

© 2024 范文参考网 | 联系我们 webmaster# 12000.net.cn