基于DS18B20的温度测量系统设计.docx

上传人:b****7 文档编号:11415294 上传时间:2023-02-28 格式:DOCX 页数:21 大小:503.90KB
下载 相关 举报
基于DS18B20的温度测量系统设计.docx_第1页
第1页 / 共21页
基于DS18B20的温度测量系统设计.docx_第2页
第2页 / 共21页
基于DS18B20的温度测量系统设计.docx_第3页
第3页 / 共21页
基于DS18B20的温度测量系统设计.docx_第4页
第4页 / 共21页
基于DS18B20的温度测量系统设计.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

基于DS18B20的温度测量系统设计.docx

《基于DS18B20的温度测量系统设计.docx》由会员分享,可在线阅读,更多相关《基于DS18B20的温度测量系统设计.docx(21页珍藏版)》请在冰豆网上搜索。

基于DS18B20的温度测量系统设计.docx

基于DS18B20的温度测量系统设计

课程设计(论文)

 

题目名称基于DS18B20温度测量系统设计

课程名称单片机原理及应用

学生姓名尹彬涛

学号1341301075

系、专业电子信息工程

指导教师江世民

 

2015年6月12日

摘要

随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研、各个领域,已经成为一种比较成熟的技术, 本文主要介绍了一个基于STC89C52单片机的测温系统,详细描述了利用数字温度传感器DS18B20开发测温系统的过程,重点对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析,特别是数字温度传感器DS18B20的数据采集过程。

对各部分的电路也一一进行了介绍,该系统可以方便的实现实现温度采集和显示,并可根据需要任意设定上下限报警温度,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,适合于我们日常生活和工、农业生产中的温度测量,也可以当作温度处理模块嵌入其它系统中,作为其他主系统的辅助扩展。

DS18B20与STC89C52结合实现最简温度检测系统,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量,有广泛的应用前景。

 

关键词:

 单片机;  DS18B20;  温度传感器; 数字温度计; STC89C52 

 

 

摘要.........................................................1

引言.........................................................3

一、方案介绍.................................................3

1、显示部分..................................................3

2、温度采集..................................................5

3、方案流程图...............................................5

二、总体方案设计............................................6

1、硬件设计................................................6

1.1温度采集设计............................................6

1.2温度显示设计.............................................6

2、软件设计................................................7

2.1DS18B20程序设计.........................................7

2.2显示部分程序设计.........................................8

三、实验调试过程.............................................10

1、软件调试..................................................10

1.1显示部分调试............................................10

四、心得体会.................................................10

五、致谢.....................................................11

六、参考文献.................................................12

七、附录.....................................................12

附录一程序代码............................................12

附录二仿真电路图..........................................18

 

引言

在日常生活及工农业生产中经常要涉及到温度的检测及控制,传统的测温元件有热点偶,热敏电阻还有一些输出模拟信号得温度传感器,而这些测温元件一般都需要比较多的外部硬件支持。

其硬件电路复杂,软件调试繁琐,制作成本高,阻碍了其使用性。

因此美国DALLAS半导体公司又推出了一款改进型智能温度传感器——DS18B20。

本设计就是用DS18B20数字温度传感器作为测温元件来设计数字温度计。

 

本设计所介绍的数字温度计与传统温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示。

本设计显示精度为1,只能用于日常生活粗测。

该设计控制器使用单片机STC89C51,测温传感器使用DS18B20,显示器使用液晶显示。

 

一、方案介绍

1、显示部分

显示部分是本次设计的重要部分,一般有以下两种方案:

方案一:

采用LED显示,分静态显示和动态显示。

对于静态显示方式,所需的译码驱动装置很多,引线多而复杂,可靠性也较低。

对于动态显示方式,虽可以避免静态显示的问题,占用单片机IO口少,节约资源,而且接线简单。

方案二:

采用LCD显示。

LCD液晶显示具有丰富多样性、灵活性、电路简单、易于控制而且功耗小等优点,对于信息量多的系统,是比较适合的。

鉴于该系统信息量少,我们采用方案一。

2、温度采集

由于现在用品追求多样化,多功能化,给系统加上温度测量显示模块,能够方便人们的生活,使该设计具有人性化。

本次实验是设计列车车轴实时温度检测系统,所以我们采用温度传感器DS18B20,用DS18B20测温度就无需外接A/D转换电路,其输出的温度值就是已经经过了A/D转换,已经是数字量了。

DS18B20可以满足从-55摄氏度到+125摄氏度测量范围,且DS18B20测量精度高,精度为0.0625摄氏度,固有的测温分辨率为0.5℃,在一秒内把温度转化成数字,测得的温度值的存储在两个八位的RAM中,单片机直接从中读出数据转换成十进制就是温度,使用方便。

基于DS18B20的以上优点,我们决定选取DS18B20来测量温度。

3、方案流程图

温度传感器DS18B20集成了A/D转换的功能,所以在连接单片机时无需进行A/D转换电路的连接,将采集的温度数据经过DS18B20的处理将温度值输出给单片机,通过单片机的控制输出使数码管显示,倘若实测的温度大于人为设置的温度时,单片机I/O口P3.0输出高电平,使报警系统工作报警。

流程图如图1.3所示:

图1.3流程图

二、总体方案设计

1、硬件设计

1.1温度采集设计

温度传感器采用DSl8820,其是一种单总线智能型温度传感器,只有三线接口,分别为地线(GND)、数据线(DQ)、电源线(VCC)。

DSl8820输出信号为数字信号,处理器与DSl8820通过数据线(DQ)来完成双向通信,因此采用DSl8820使得电路十分简单。

温度变换功率可以来源于外电源,也可以来源于数据总线,总线本身也可以向所挂接的DSl8820供电。

DSl8820的电压范围为+3.0~+5.5V,测温范围为-55~+125℃,固有的测温分辨率为0.5℃,最高精度可达0.0625℃,最大的转换时间为200ms。

一条总线上面可以挂接多个DSl8820实现多点测温。

本实验温度路数只有一路,所以单独使用一个+5V电源对DS18B20供电。

引脚图如图2.1.1(a),元件图如图2.1.1(b):

图2.1.1(a)图2.1.1(b)

1.2温度显示设计

在实验中,我们采用四位一体LED共阴极数码管显示,段选端由单片机P0口控制,之间外接上拉电阻。

理想情况下单片机P0口输出的高电平为+5V,足以使数码管点亮,但在实际接线中,要接一个上拉电阻,这样才能使数码管正常工作。

数码管的位选端与单片机P2口连接,通过程序控制P2口输出高低电平来控制数码管位选。

图2.12(a)、图2.1.2(b)分别为数码管引脚图和实物图:

图2.1.1(a)数码管引脚图2.1.2(b)实物图

2、软件设计

2.1DS18B20程序设计

对于DS18B20的程序编写要特别注意时序问题,如果采用C语言编程,其对时序要求很严,倘若时序错误会导致单片机读不到数据,或是读到的数据都是错误的,更严重就是传感器不工作,无法进行温度采集;汇编语言对时序要求没有那么严格,因为程序运行每一条汇编语句都会有一个机器周期。

下面就是DS18B20各个状态下得时序介绍:

1、DS18B20复位初始化时序

先通过单片机把DQ电平拉低,即DQ=0,然后通过一个480us到960us的延时,再拉高电平等待15us,当对传感器进行复位操作时,成功了则DS18B20会自动将DQ拉低,此时单片机对DQ温度值进行读取;倘若不成功则DQ一直保持高电平,单片机无法从DS18B20读取温度值。

复位时序如图2.2.1(a)所示:

图2.2.1(a)DS18B20复位初始化时序图

2、写DS18B20温度时序

写周期一开始做为主机先把总线拉低1微秒表示写周期开始。

随后若主机想写0,则继续拉低电平最少60微秒直至写周期结束,然后释放总线为高电平。

若主机想写1,在一开始拉低总线电平1微秒后就释放总线为高电平,一直到写周期结束。

而做为从机的DS18B20则在检测到总线被拉低等待15微秒然后从15us到45us开始对总线采样,在采样期内总线为高电平则为1,若采样期内总线为低电平则为0。

温度写时序如图2.2.1(b):

图2.2.1(b)写DS18B20温度时序图

3、读DS18B20温度时序

先将DQ电平拉低,然后单片机再将DQ电平拉高,如果DQ的数据是“1”时,则单片机在采样时就会采到一个高电平;如果在DQ的数据变成了“0”,则说明DS18b20自动将电平拉低,单片机采样时就会得到一个低电平。

温度读时序如图2.2.1(c):

图2.2.1(c)读DS18B20温度时序图

2.2显示部分程序设计

显示有静态显示和动态显示,两者区别在于静态显示接线多,用到的IO口多,所以对单片机资源浪费大,但是其编程简单;动态显示接线少,占用的IO口少,资源利用充分,但是其编程比较复杂。

本实验采用动态显示,采用四位一体共阴极数码管,段选端用P0口控制,位选端用P2口控制,显示图如图2.2.2(a)所示

图2.2.2(a)显示图

因此,整个的程序流程图如图2.2.2(b),单片机上电,进行单片机初始化,之后进行DS18b20的初始化,将原有的温度擦除。

初始化完成后,当总线接收到从高电平到低电平的脉冲时,则温度传感器进行写操作,将温度值写入。

温度数据转换完成后,单片机P1口将温度值读入单片机中,经过程序处理显示到数码管上。

在单片机进行数据处理时,倘若实际温度大于设定温度时,触发报警电路工作,产生报警,如果温度正常则报警电路不工作。

图2.2.2(b)程序流程图

三、实验调试过程

1、软件调试

1.1显示部分调试

为了减少错误的发生,我们采用了分步调试,首先直接将一位数码管接地选通,然后通过单片机控制显示;如果没有错误,再进行两位显示,在两位显示之前要将数据进行处理,取出十位,个位,如此依次将三位温度值显示出来。

但是在显示过程中我们发现显示的数据一直在闪烁,不是静止的,我们试着把延时时间延长,但是任然不起作用,没有任何变化。

经过多番努力,江老师一语惊醒梦中人,我们在将P2口置了数选通数码管之后,下一个数据在选通数码管时没有重新将P2口初始化即还原(MOVP2,#0FFH)。

程序如下:

MOVA,32H

MOVDPTR,#SGTB1

MOVCA,@A+DPTR

MOVP2,#0FFH;P2口复位

MOVP0,A;显示温度"个位"值

MOVP2,#0FDH;位选

LCALLDELAY

有了P2口的复位这条程序,显示的闪烁问题就解决了,数据显示变得稳定。

四、心得体会

在第十周星期五上午刚考完,江老师就过来布置课设任务,讲了很多很多,当时听完也很有兴趣,应为在实验室是个能出成就的地方,每当你取得一点点的成功,你都会感觉很充实,就会觉得这一天没有虚度,学到了东西。

下午,大家网上选题,什么事都讲究效率,我们还在睡午觉,二班的同学就在选题了,看到那个题目我都晕了,不知道从何处下手,纠结啊,硬着头皮选了个挑战性的题目。

搞得星期六上课都在想到底要怎么开始,自己什么都不懂,什么东西都得从开始学起,所以星期天开始从基础开始学。

基础就得从一些基础软件开始,起初我对画电路图用什么软件,编程用什么软件,程序,仿真用哪种软件以及如何烧单片机程序一无所知。

所以星期天慢慢的熟悉一下这些软件的基本操作,这个过程很痛苦,什么东西都不懂要去问别人是件很痛苦的事情。

经过一天的熟悉之后,我们弄了一个最简单的汇编语句,想让数码管显示一个“5”,体验一下整个过程到底是怎么样的,经过一番折腾终于出来了,当时很高兴,慢慢的对自己的题目如何开展有了信心了。

经过一到两天的资料查询,渐渐的对编程有了一点头绪,一些特定的元器件,它的程度编写都是固定的,只是需要把程序看懂,修改其中参数,然后自己慢慢将数据处理部分和显示部分程序编好。

编程过程中经常遇到问题,想问老师吧,老师又很忙,不可能一直都在实验室随叫随到,所以在编程的第一天没什么进展。

后面请了一个对编程比较有经验的同学在旁边指导我,遇到问题我们相互商量,然后解决,就这样一条一条,一个模块一个模块,用了将近两天的时间将程序的大体框架汇编了出来。

到这个时候,我们就尝试着开始仿真,在仿真过程中也经常发现问题,慢慢的找出问题,将程序一点一点的完善,然后将整个调试完成。

值得提得是,起初大家都并不知道如何开展自己的题目,我们可以在QQ群上提出来跟大家一起交流,所有的同学,包括指导老师都会给你提出一个如何开题的建议。

每一天,老师要问大家现在的进展如何,虽然看起来是随口一问,但我认为是非常有意义的,这是有督促,鼓励作用的。

除此之外,我们还可以将这一天遇到的问题大胆的在群上提出来,老师现场给我们做出解答,也许这不仅仅是你一个人在实验中遇到这样的问题,其他同学一样有这样的困惑,通过这样的方式,大家都可以在晨会上解决一些前一天遗留的问题。

我觉得这个平台非常有必要,很有存在的意义,应该继续发扬,一届一届传承,进而成为测控专业的一个传统。

总得来说,课设两个星期下来,真的心里有喜有悲,一个实物调试了一两天都没能调试出来,心里确实很有压力,有时都不想再进实验室了,很纠结。

但是我们确实学到了很多东西,不仅仅简单的完成了一个课设,精华是在这个过程,我们享受的是这个过程。

在这个过程中,不仅认识了实验室的器件,懂得了一些常用软件件的操作,更重要的是我们动手了,整个课设下来,一个系统的完成是我们一点一滴动手设计搭建出来的,想到这个你会很有成就感,会觉得实验室并没有白待,几个星期没有白费。

同学之间交流多了,感情就会加重,同学情就变得更浓厚了,师生之间通过交流,解决问题,聊天,慢慢的我们彼此之间就像是朋友了,师生情也变得融洽了。

经过这次课设,我认识到了团队的力量是无限的,对于你个人来说很难解决的问题,放在一个团队面前就显得很渺小了,许多个人无法解决的难题,经过大家相互商量讨论,问题就会一步一步迎刃而解。

课设过程中我们就是一个团队,充分发挥合作精神,我们就能将课设彻底、完美的完成。

五、致谢

在课设的过程中,我遇到了很多很多的的问题,多亏有我们这个团队,我的同学,我的老师,有他们的帮忙我才顺利的完成了这次课设。

首先要感谢的是我的指导老师——江世明老师。

在课设还没开始的前一天下午,我们在实验室就遇到了江世明老师,跟他交流的过程中,我们慢慢的将显示部分是采用静态还是动态决定下来了。

除此之外在程序编写过程中,程序仿真,实物调试,江老师都给我们很大的帮助,有一点不懂得地方,老师都会讲解的很详细,让我尽量的听明白。

还有李老师,他组织的晨会让我收获很多,在会上,我从一点都不会,慢慢的懂得了如何查资料,如何确定总体方案,如何根据实验室现有器材搭建实物等等,在实验过程中遇到的一些问题也可以在晨会上得到解决。

遇到了困难,晨会上大家相互鼓励,然后又信心满满了。

其次要感谢李波同学,我从刚开始的文盲,到现在初步了解一些软件的操作,是他教会了我如何使用proteus,如何运用keil编程,以及如何将程序烧入单片机等等。

在实验过程中,遇到什么问题可以想他请教,他也一一给我解答,在此非常感谢。

最后还得感谢我的另一位同学谈黎明,在编写程序方面,他给了我很大的帮助。

起初我对DS18B20的程序编写几乎毫无头绪,是他给我慢慢讲解,给我详细的解释了DS18B20程序的编写过程。

在我编写程序的两三天中,他一直跟我一起讨论,有什么问题,他都能给我解答,他在编程这方面有了一定的经验,所以在程序编写过程中我少走了很多弯路,所以在此非常感谢他。

在这次课设中,由于有指导老师以及这些同学的帮助,我才能很顺利的完成这次课设。

六、参考文献

[1]江世明.单片机原理及应用.[M].上海交通大学出版社(第一版),2013

[2]孙传友,孙晓斌.测控系统原理与设计[M].北京航空航天大学出版社(第2版),2007.

[3]谭浩强.C程序设计教程[M].清华大学出版社,2007.

[4]杜洋.18B20温度传感器应用解析[R].2005-12-02/2007-03-16.

七、附录

附录一程序代码

#include

#defineucharunsignedchar

#defineuintunsignedint

sbitDQ=P3^0;//接ds18b20数据端口

sbitp20=P2^0;

sbitp21=P2^1;

sbitp22=P2^2;

sbitp23=P2^3;

codeuchartab[]={0xc0,0xF9,0xA4,0xB0,0x99,0x92,

0x82,0xF8,0x80,0x90};//0~9

codeuchartab1[]={0x40,0x79,0x24,0x30,0x19,0x12,

0x02,0x78,0x00,0x10};

uchara,b,t;

ucharbai,shi,ge;

voiddelay(unsignedinti)

{

while(i--);

}

int_DS18B20()//对ds18b20初始化

{

unsignedcharx=0;

DQ=1;//DQ复位

delay(8);//延时

DQ=0;//单片机将DQ拉低

delay(80);//精度延时大于480us

DQ=1;//拉高总线

delay(10);

x=DQ;//x=0则初始化成功,x=1则初始化失败

delay(20);

returnx;

}

read()//读温度数值

{

unsignedchari=0;

unsignedchardat=0;

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

{DQ=0;

dat>>=1;

DQ=1;

if(DQ)

dat|=0x80;

delay(4);

}

return(dat);

}

voidwrite(unsignedchardat)

{

unsignedchari=0;

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

{DQ=0;

DQ=dat&0x01;

delay(5);

DQ=1;

dat>>=1;

}

delay(4);

}

voidint_()

{

while(int_DS18B20());

write(0xCC);

write(0x44);

}

voidmain()

{

uintcount=0;

P2=0xFF;

int_();

delay(220);

for(count=0;count<100;count++)//数码管初始化00

{p20=1;

P0=tab[0];

delay(100);

p20=0;

p21=1;

P0=tab[0];

delay(100);

p21=0;

p22=1;

delay(100);

p22=0;

p23=1;

P0=0xc6;

delay(100);

p23=0;

}

while

(1)

{

delay(10);

while(int_DS18B20());

write(0xCC);

write(0xBE);

a=read();//读高八位

b=read();//读低八位

if(b>127)//判断温度正负B>127为负

{

a=~a;

b=~b;

a=a>>4;

t=b<<4;

t=t|a;

t+=1;

shi=t/10;

ge=t%10;

for(count=0;count<123;count++)

{

if(t>=10)

{

p20=1;

P0=0xBF;

delay(30);

p20=0;

p21=1;

P0=tab[shi];

delay(30);

p21=0;

p22=1;

P0=tab1[ge];

delay(30);

p22=0;

p23=1;

P0=0xc6;

delay(30);

p23=0;

}

else

{

p20=0;

p21=1;

P0=0xBF;

delay(30);

p21=0;

p22=1;

P0=tab1[ge];

delay(30);

p22=0;

p23=1;

P0=0xc6;

delay(30);

p23=0;

}

}

}

else

{

count=0;

a=a>>4;

t=b<<4;

t=t|a;

bai=t/100;

shi=t%100/10;

ge=t%10;

for(count=0;count<123;count++)

{if(bai)

{p20=1;

P0=tab[bai];

delay(20);

p20=0;

}

else

p20=0;

if(shi)

{p21=1;

P0=tab[shi];

delay(20);

p21=0;

}

p21=0;

p22=1;

P0=tab1[ge];

delay(20);

p22=0;

p23=1;

P0=0xc6;

delay(20);

p23=0;

}

}

int_();

}

}

附录二仿真电路图

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

当前位置:首页 > 求职职场 > 简历

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

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