DS18B20简易温度计设计报告.docx

上传人:b****8 文档编号:9864241 上传时间:2023-02-07 格式:DOCX 页数:25 大小:1.80MB
下载 相关 举报
DS18B20简易温度计设计报告.docx_第1页
第1页 / 共25页
DS18B20简易温度计设计报告.docx_第2页
第2页 / 共25页
DS18B20简易温度计设计报告.docx_第3页
第3页 / 共25页
DS18B20简易温度计设计报告.docx_第4页
第4页 / 共25页
DS18B20简易温度计设计报告.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

DS18B20简易温度计设计报告.docx

《DS18B20简易温度计设计报告.docx》由会员分享,可在线阅读,更多相关《DS18B20简易温度计设计报告.docx(25页珍藏版)》请在冰豆网上搜索。

DS18B20简易温度计设计报告.docx

DS18B20简易温度计设计报告

 

电子综合设计报告

 

题目简易温度计设计

系别

年级专业电子科学与技术

班级学号

学生姓名

指导教师职称讲师

设计时间2012.6.20

目录

1.概述1

1.1设计任务1

1.2设计需求1

1.3设计功能1

2.系统设计2

2.1方案论证2

2.2实施方案2

3.硬件设计3

3.1主要器件介绍3

3.1.1DS18B20简介3

3.1.28段共阴集数码管4

3.2单元电路5

3.2.1晶振电路5

3.2.2复位电路5

3.2.3电源及其指示灯电路6

3.2.4ISP下载电路6

3.2.5DS18B20温度数据采集电路7

3.2.6数码管显示电路7

3.2.7端口配置8

3.3器件清单8

4.软件设计10

4.1软件功能模块划分10

4.1.1读操作10

4.1.2写操作11

4.1.3DS18B20复位流程12

4.1.4温度转化程序流程图12

4.1.5温度读取流程13

4.1.6定时器0的初始化13

4.1.7数码管显示14

4.2各功能模块间关系描述14

5.系统调试16

5.1硬件调试16

5.2软件调试17

5.3设计效果18

结束语19

参考文献20

1.概述

1.1设计任务

(1)采用DS18B20实现温度的采集;

(2)通过数码管显示温度。

1.2设计需求

随着科技的不断发展,社会对各种信息的准确度和精确度的要求有了大幅度的提升。

因而有大量的先进技术应用于各种领域。

本课程介绍了DS18B20在数字温度计中的应用,人民的生活与环境的温度息息相关,在工业生产过程中需要实时测量温度,在农业生产中也离不开温度的测量,因此研究温度的测量方法和装置具有重要的意义,将其广泛的应用于各个领域。

1.3设计功能

本设计主要由温度测量和数据采集两部分电路组成,采用数字温度芯片DS18B20实现,并利用AT89S51芯片控制温度传感器DS18B20进行实时温度检测,当手握着温度传感器时,温度会逐渐升高,直到达到最高温度,当手离开温度传感器时,温度会自动降至室温,然后再通过数码管将这些温度的变化显示出来。

 

2.系统设计

2.1方案论证

(1)方案一:

由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦;

图2-1利用热敏电阻测温度的框图

(2)方案二:

采用AT89S52作为系统处理器对采集的温度信号进行处理,温度的范围是0~100度。

温度传感器TC1047首先将温度信号转化成电压信号,再经过信号处理,最后送到TLC5510进行A/D转换,最后将结果通过数码管显示出来[1];

图2-2利用温度传感器TC1047采集温度的框图

(3)方案三:

采用数字温度传感器DS18B20采集温度,温度测量范围为-55~125℃,通过AT89S52处理信号,不需要进行A/D转换,其自身可将模拟信号转化成数字信号,然后再通过数码管输出结果。

图2-3利用数字温度传感器DS18B20采集温度的框图

2.2实施方案

方案一虽经济但由于要用到A/D转换,所以电路比较复杂,不利于硬件连线,所以不采用此方案;方案二测量温度精度高、消耗低,电路比方案一简单,但成本价太高,所以不采用此方案。

方案三中温度测量精度更高,无需进行A/D转换,且DS18B20芯片的管脚简单,无需外围硬件设备即可进行温度测量,与单片机交换信息仅需一根I/O口线,占用微处理器的端口较少,可以节省大量的引线和逻辑电路,完全符合本课程设计的要求,因此采用此方案。

3.硬件设计

本系统需要:

电源及其指示灯电路,ISP下载电路、晶振电路、复位电路、DS18B20温度数据采集电路,数码管显示电路,单元电路划分如图3-1所示:

图3-1数字温度计总框图

3.1主要器件介绍

3.1.1DS18B20简介

DS18B20是Dallas半导体公司推出的一线总线数字化温度传感器,可以在进行现场温度数据采集的同时,将温度数据直接转换成数字量输出。

DS18B20测量温度范围为-55~125摄氏度,其中在-10~85摄氏度的范围内,精度为0.5度,支持3~5.5V的电压范围,使系统设计更灵活,方便。

现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性,适合于恶劣环境的现场温度测量,主要用于环境控制、设备或过程控制、测温类消费电子产品中。

DS18B20内部结构主要由64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL以及内部存储器等部分组成。

64位光刻ROM中的64位序列号是出厂前被光刻好的,可以看作是该DS18B20的地址序列码。

64位光刻ROM的排列是:

开始8位(0x28)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。

每一个DS18B20的地址序列码各不相同,这样就可以实现在一根总线上挂接多个DS18B20的目的。

[2]

DS18B20中的温度传感器可完成对我温度的检测。

以12位转化为例,读数用16位符号扩展的二进制补码形式提供,以0.0625摄氏度/LSB形式表达,其中S为符号位。

下图为DS18B20温度值格式表。

表3-1DS18B20温度值格式表

地位

字节

Bit7

Bit6

Bit5

Bit4

Bit3

Bit2

Bit1

Bit0

2^3

2^2

2^1

2^0

2^(-1)

2^(-2)

2^(-3)

2^(-4)

高位

字节

Bit15

Bit14

Bit13

Bit12

Bit11

Bit10

Bit9

Bit8

S

S

S

S

S

2^6

2^5

2^4

3.1.28段共阴集数码管

(1)8段数码管显示器结构

常用的数码管有7段或8段(8段比7段多了一个小数点“dp”段)。

还可以利用不同的电路的接法将数码管分为共阴集和共阳集两种,本课程中我们采用共阴集数码管来显示温度。

其结构及接法如图3-2所示。

图中a、b、c、d、e、f、g分别代表7段直线型发光二极管及其引脚,而dp代表圆点型发光二极管,用于显示小数点。

[3]

图3-28段数码管管脚图

(2)LED显示器工作原理

共阴极数码管的8个发光二极管的阴极连接在一起。

通常,共阴极接低电平,其他阴极接段驱动电路输出端。

当某段驱动电路的输出端为高电平时,则该段所连接的字段导通并点亮。

为了使LED显示器显示不同的符号和数字,就要把不同段的发光二极管点亮,这样就需要为LED显示器提供代码,因为这些代码是为了显示字符的,因此称之为字符码(或段码)。

7段发光二极管和1个小数点位,共计8段。

因此提供给LED显示器的段码正好为1字节。

各段与字节中各位的对应关系见表3-2所示。

表3-2LED各段与字节中各位的对应关系

代码位

D7

D6

D5

D4

D3

D2

D1

D0

显示段

dp

g

f

e

d

c

b

a

3.2单元电路

3.2.1晶振电路

图3-3晶振电路

每个单片机系统里都有晶振,全程是叫晶体震荡器。

如图3-3电路所示,C3、C4为瓷片电容,其大小均为30PF;Y1即为晶振,其大小为11.0592MHz,电路中的XTAL1与XTAL2分别与AT89S51的第19脚和第18脚相连。

在单片机系统里晶振的作用非常大,他结合单片机内部的电路,产生单片机所必须的时钟频率,单片机的一切指令的执行都是建立在这个基础上的,晶振的提供的时钟频率越高,那单片机的运行速度也就越快。

3.2.2复位电路

图3-4复位电路

单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始状态,并从初态开始工作。

如图3-4所示电路可实现上电复位与手动复位。

图中的SW为微动按钮,C2为电解电容,其大小为10uF/16V,所用的电阻R13为1KΩ。

手动按钮复位需要人为在复位输入端RST上加入高电平。

当人为按下按钮时,则Vcc的+5V电平就会直接加到RST端。

由于人的动作再快也会使按钮保持接通达数十毫秒,所以,完全能够满足复位的时间要求。

3.2.3电源及其指示灯电路

图3-5电源及指示灯电路

单片机在启动时都需要外界给它供电,利用指示灯来判断是否通电,灯亮则各器件处于通电的状态,如图3-5所示,图中所用的电阻R1为1KΩ。

3.2.4ISP下载电路

图3-6ISP下载电路

如图3-6所示,ISP下载器的1端口与AT89S51的P1.5/MOSI相连接,3端口不需要连接,5端口与AT89S51的RST相连接,7端口与AT89S51的P1.7/SCK相连接,9端口与AT89S51的P1.6/MISO相连接;端口2接电源,端口4、6、8、10都接地。

ISP是在系统编程,意思就是单片机通过几根线就能不脱离电路板或使用系统,直接在其中编程。

数据格式比较简单,分数据线、时钟线、复位线等。

3.2.5DS18B20温度数据采集电路

图3-7DS18B20温度数据采集电路

如图3-7所示,该DS18B20的3脚封装的管脚说明如下表所示[4]:

表3-3DS18B20的引脚说明表

引脚

功能说明

GND

DQ

VDD

接地端;

数字信号输入/输出端,对于单线操作:

漏极开路;

外接供电电源输入端,在寄生电源接线方式时接地

电路中采用R15为5K的上拉电阻,作用是在电路驱动器关闭时给线路(节点)以一个固定的电平。

在与P2.0相连接时中间要连接一个R14为100Ω的电阻,用以保护电路。

3.2.6数码管显示电路

图3-8数码管显示电路

本电路的两个数码管各段码的先连接在一起,再同时与AT89S52的P0口相连接,位码与AT89S52的P3口相连接,如图3-8所示:

需用到驱动ULN2003,然后再与P3口的P3.7、P3.6连接。

3.2.7端口配置

以上各单元电路的端口配置见表3-4:

[5]

表3-4单片机端口配置表

编号

网络标号

端口配置

输入/输出

功能描述

1

P1.5/MOSI

P1.5

输入

串行数据输入

2

P1.6/MISO

P1.6

输出

串行数据输出

3

P1.7/SCK

P1.7

输入

串行时钟输入

4

RST

RST

输入

复位输入端

5

XTAL2

XTAL2

输出

片内振荡器的反向放大器的输出端

6

XTAL1

XTAL1

输入

片内振荡器的反向放大器的输入端

7

P3.7~P3.6

P3.7~P3.6

输出

输出位码

8

P0.0~P0.7

P0.0~P0.7

输出

输出段码

9

P2.0

P2.0

输入

输入采集的温度

其中P1.5、P1.6、P1.9、RST都用于ISP下载数据,XTAL1和XTAL2用于外部晶体管振荡的输入与输出,而P3.6、P3.7则用来传送位码,P2.0用来将采集的温度传输给AT89S52,P0.0~P0.7用来传送段码。

3.3器件清单

表3-5主要器件清单

编号

器件名称

型号

数量

1

万能板

5cm*7cm

2

2

集成电路

AT89S51

1

3

集成电路插座

DIP40

1

4

电阻

1K

11

5

电阻

100

4

6

瓷片电容

30pF

2

7

瓷片电容

104

2

8

电解电容

10uF/16V

1

9

红色发光二极管

LED

2

10

接插件

CON2

4

11

接插件

IDC10

1

12

双排针8*2

HEADER8*2

6

13

微动按钮

SW

1

14

晶振

11.0592MHz

1

15

温度传感器

DS18B20芯片3管脚

1

16

电阻

5K

1

17

反向驱动电路

ULN2003

1

18

集成电路插座

DIP16

1

19

8段数码管

SR120501D

2

器件中除最小系统外,我们还根据本设计的要求,自行添加了一个1KΩ的电阻、一个100Ω的电阻、一个5KΩ的电阻、一个发光二极管、8×2的双排针2个、CON2接插件2个、温度传感器DS18B20一个、反相驱动电路ULN2002及插座各一个,根据原理图将各器件连接起来,完成硬件焊接。

4.软件设计

图4-1温度采集的总流程图

如图4-1所示:

系统软件功能包括:

对DS18B20的初始化及对它进行复位。

复位结束后,发出跳过序列号检测命令,进行温度转换。

再次对DS18B20进行复位操作,发出跳过序列号检测命令,然后进行对温度的读取。

进入中断,通过数码管显示温度。

4.1软件功能模块划分

4.1.1读操作

给DQ一个负脉冲信号,读出数据,并且右移一位,再让DQ数据线拉高,检测数据线的状态,如果数据线拉高,则当前数据位置1,否则保持不变,判断结束后进入延时,此操作循环8次。

流程图如图4-2所示:

图4-2读操作的主要流程

主要代码分析如下:

DQ=0;

dat>>=1;

DQ=1;

if(DQ){dat|=0x80;}

delay(10);

4.1.2写操作

给DQ一个负脉冲,把当前的数据位送到数据线,延迟一段时间,再将数据线拉高,最后将下一个数据位移到最低位,此操作循环8次,完成了写操作。

流程图如图4-3所示:

图4-3写操作的主要流程

其主要代码如下:

DQ=0;

DQ=wdata&0x01;

delay(10);

DQ=1;

wdata>>=1;

4.1.3DS18B20复位流程

对DS18B20进行复位操作时,首先将DQ数据线拉为低电平,延迟一段时间,再将数据线拉为高电平,再延迟一段时间即可。

流程图如图4-4所示:

图4-4DS18B20复位流程图

其主要代码如下:

voidds1820_rst()

{

DQ=0;

delay(50);

DQ=1;

delay(20);

}

4.1.4温度转化程序流程图

先将DS18B20进行复位,使用0CCH命令允许主机跳过ROM序列号检测,直接对寄存器操作,节省了时间,DS18B20接收到44H命令后立即开始进行温度转化。

流程图如图4-5所示:

图4-5温度转化主要流程

其主要代码如下:

ds1820_rst();

ds1820_write(0xcc);

ds1820_write(0x44);

4.1.5温度读取流程

首先对DS18B20进行复位,使用0CCH命令允许主机跳过ROM序列号检测,直接对寄存器操作,节省了时间,发送0BEH命令读出寄存器中的内容。

流程图如图4-6所示:

图4-6温度读取流程图

其主要代码如下:

ds1820_rst();

ds1820_write(0xcc);

ds1820_write(0xbe);

4.1.6定时器0的初始化

通过对TMOD方式控制寄存器赋值,确定定时器的工作方式,经过计算确定定时器0的计数初值为1000(定时时间1ms),若T0中断允许(使能ET0=1,EA=1),则CPU立即停止当前程序,跳转到T0对应的中断入口,执行中断服务程序。

流程图如图4-7所示:

图4-7定时器0的初始化

其主要代码如下:

#defineCOUNT1000

TMOD=(TMOD&0Xf0)|0X01;

TH0=(65536-COUNT)/256;

TL0=(65536-COUNT)%256;

ET0=1;

EA=1;

TR0=1;

4.1.7数码管显示

利用定时器0设置中断,确定TH0和TL0的值,调用读取温度值的函数,得到温度值的十位与个位数,通过数码管显示出来。

流程图如图4-8所示:

图4-8数码管显示流程

其主要代码如下:

staticunsignedchai;

unsignedcharLED_seg[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

unsignedcharLED_bit[2]={0x80,0x40};

ds1820_RD();

P0=LED_seg[LED_buf[i]];

P3=LED_bit[i];

4.2各功能模块间关系描述

在主程序中,对定时器0进行了初始化,对DS18B20的初始化进行调用。

在定时器0的中断服务函数中,再次设定计数值,确定数码管的段码和位码,将接收到的温度值通过数码管显示。

在读取温度值的函数中调用了复位模块、读操作模块和写操作模块。

通过写操作模块实现了温度转换、跳过序列号检测和读取温度的操作。

再从读操作模块中得到了高8位和低8位的数据,对高8位和低8位进行移位操作,得到所需要的温度值的十位和个位,通过定时中断模块设置定时时间,对十位数和个位数进行数码管输出的操作。

5.系统调试

5.1硬件调试

利用AltiumDesignerSummer09画出原理图,利用电烙铁实现各器件的连接,发现绘制出的原理连线多、图纸紊乱,直接影响其可读性。

后改成单元电路加网络标号的形式进行绘制,绘制出的原理图美观、大方。

在进行AltiumDesignerSummer09软件画图时,部分器件的封装形式在库中找不到,采用自己制作完成;在布局时采用手动布局,布局效果较好。

具体焊接流程是:

先焊接电源并进行调试,通过后焊接矮的器件,再焊接高的器件;按单元电路焊接一部分进行调试一部分,通过测试后焊下一单元电路。

实验中我们遇到了如下问题:

(1)在焊接AT89S52与ISP下载电路连接时,ISP下载电路的第7脚与第9脚分别与AT89S52的P1.7和P1.6管脚相连接,电路中由于两端口电路接反,调试时不能检测到器件;

(2)数码管的位码分别与反向驱动ULN2003的OUT1及OUT2相连接,而IN1与IN2应该与AT89S52的P3.7及P3.6相连接。

但实验过程中我们将IN与OUT的端口接反,导致显示结果十位与个位数字相同或显示结果混乱;

(3)DS18B20的外形和引脚图看错,把DS18B20的GND与VDD接反,烧坏了芯片,导致温度不发生变化。

如图5-1所示,为最小系统实物图的正反面:

图5-1最小系统的正面与反面

如图5-2所示,为数码管显示及温度传感器DS18B20实物图的正反面:

图5-2数码管显示及温度传感器DS18B20的正反面

5.2软件调试

软件开发环境采用KeiluVision2,界面见图5-3。

开发步骤包括编辑、编译、连接、下载运行等步骤。

图5-3软件调试结果

实验中我们遇到了如下问题:

(1)两个数码管的亮度不同,我们通过添加定时器0的中断服务程序,把数码管显示的程序添加到中断服务程序中,使得两数码管亮度相同,使结果很美观;

(2)数码管个位和十位数值始终相同,经过程序调试后知道,位码的连线有误;

(3)数码管数值不停地闪动,经过调试发现延时时间设定不正确,只要设定合适的延时时间,数码管现实的数据才能稳定。

5.3设计效果

从图5-4中可以看出目前室温为26度。

当升高外界环境温度,数码管的示数也会跟着升高;若离开热源,温度将回到原室温,数码管的数值也随之改变。

系统实物与运行效果图5-4所示:

图5-4系统控制板面实物图

 

结束语

在这个学期期末我们进行了单片机的电子综合课程设计。

我们本次设计的课题是:

基于DS18B20的数字温度计设计。

我们组员4人经过查阅资料、系统硬件的设计、软件设计以及系统调试后,终于完成了课程设计的任务。

经过这几天课程设计,我们学到了许多课本上没有的知识。

本课程设计不仅加深了我们对单片机知识的了解,而且还提高了我们在硬件方面的动手能力。

通过这次综合设计,我们对单片机的运作有了一个非常感性的认识,这跟只看书然后自己想象运行是完全两码事。

虽然我们从课本上已经基本上了解了AT89S52的各种引脚的作用、把数码管显示、中断、定时器等知识,但要将这些知识同时应用到本课程中,还是有一定难度的,我们可以参考一些资料,看看别人怎样编程,然后再根据本课程要求及硬件连线、段位码端口设置等,自己尝试编程,经过调试最终运行出结果。

这不仅让我们的c语言编程能力有了一定的提高,而且综合性设计也得到了提高。

我们必须学会掌握调试程序的方法,应该自己学会发现问题和学会如何解决问题。

看看程序运行过中是不是有什么偏差,找出影响结果的地方,改正过来。

这一个过程非常重要,通过程序的排错,你可以学到的知识是书上得不到的。

找到解决问题思路比解决代码更重要。

我们用单片机来控制周边器件,达到我们想到的目的,这是一个题目,而如何写出一个程序,来控制器件按你想要的结果去运作,这个就是解题的思路。

要写程序,就得先找到解决问题的思路,你学会找出这个解题思路,比你编写出代码更为重要。

开动脑筋,运用多种方法,不断优化自己的程序。

想想用各种不同方法来实现同一功能。

这是一个练习和提高的过程,一个问题,你解决了,那么你再想想,能不能换种写法,也可以实现同一功能,或者说,你写出来的代码,能不能再精简一点,让程序执行效率更高,这个过程,就是一个进步的过程。

很多知识和经验的获得,并不是直接写在书让你看就可以得到的,需要自己去实践,开动脑筋,经验才能得到积累,编程水平才能有所提高。

 

参考文献

[1]郑锋,王巧芝,程丽平等.51单片机典型应用开发范例大全[M].北京:

中国铁道出版社.2011

[2]胡杰,吴磊,赵鸣.51单片机C语言应用与开发[M].北京:

北京航空航天大学出版社.2010

[3]高玉芹.单片机原理与应用及C51编程技术[M].北京:

机械工业出版社.2011

[4]吴银琴,陈锟.51单片机实践教程[M].北京:

科学出版社.2011

[5]刘同法,肖志刚,彭继卫.C51单片机C程序模板与应用工程实践[M].北京:

北京航空航天大学出版社.2010

附录1系统原理图

课程设计独创性声明:

本次综合电子课程设计是由本小组成员独立完成的。

 

学生签名:

年月日

指导教师评语:

 

学生:

成绩:

学生:

成绩:

学生:

成绩:

学生:

成绩:

指导教师签名:

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

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

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

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