基于DS18B20的温度采集显示系统的设计 推荐Word格式.docx

上传人:b****7 文档编号:22273946 上传时间:2023-02-03 格式:DOCX 页数:32 大小:534.56KB
下载 相关 举报
基于DS18B20的温度采集显示系统的设计 推荐Word格式.docx_第1页
第1页 / 共32页
基于DS18B20的温度采集显示系统的设计 推荐Word格式.docx_第2页
第2页 / 共32页
基于DS18B20的温度采集显示系统的设计 推荐Word格式.docx_第3页
第3页 / 共32页
基于DS18B20的温度采集显示系统的设计 推荐Word格式.docx_第4页
第4页 / 共32页
基于DS18B20的温度采集显示系统的设计 推荐Word格式.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

基于DS18B20的温度采集显示系统的设计 推荐Word格式.docx

《基于DS18B20的温度采集显示系统的设计 推荐Word格式.docx》由会员分享,可在线阅读,更多相关《基于DS18B20的温度采集显示系统的设计 推荐Word格式.docx(32页珍藏版)》请在冰豆网上搜索。

基于DS18B20的温度采集显示系统的设计 推荐Word格式.docx

六、课程设计进度安排

周次

工作日

工作内容

1

布置课程设计任务,查找相关资料

2

熟悉相关芯片及使用方法

3

完成总体设计方案

4

画出硬件原理图及程序流程图

5

完成硬件接线,编写程序并调试

编写程序并调试

编写程序并调试及准备课程设计报告

完成课程设计报告并于下午两点之前上交

答辩

本课题共需两周时间

七、课程设计考核办法

本课程设计满分为100分,从课程设计平时表现、课程设计报告及课程设计答辩三个方面进行评分,其所占比例分别为20%、40%、40%。

2.设计方案

本次的课题设计要求是基于DS18B20的温度采集显示系统,该系统要求包含温度采集模块、温度显示模块和键盘输入模块及报警模块。

其中温度采集模块所选用的是DS18B20数字温度传感器进行温度采集,温度显示模块用的四位八段共阴极数码管进行温度的实时显示,键盘输入模块采用的是按钮进行温度的设置,报警模块用的是LED灯光报警。

具体方案见图2-1。

图2-1总体设计方案

3.硬件设计方案

3.1最小系统的设计

本次设计单片机采用的是AT89C51系列的,它由一个8位中央处理器(CPU),4k 

字节Flash 

闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个串行I/O口及中断系统等部分组成。

其结构如图3-1所示:

图3-1AT89C51系列单片机引脚排列

图3-2单片机最小系统接线图

图3-2为单片机最小系统的接线图,其中C1、C2均选用20PF的,晶振X1用的是11.0592MHZ的。

晶振电路中外接电容C1,C2的作用是对振荡器进行频率微调,使振荡信号频率与晶振频率一致,同时起到稳定频率的作用,一般选用10~30pF的瓷片电容。

并且电容离晶振越近越好,晶振离单片机越近越好。

晶振的取值范围一般为0~24MHz,常用的晶振频率有6MHz、12MHz、11.0592MHz、24MHz等。

晶振的振荡频率直接影响单片机的处理速度,频率越大处理速度越快。

图3-2中C3,R1及按键构成了最小系统中的复位电路,本次设计选择的是手动按钮复位,手动按钮复位需要人为在复位输入端RST上加入高电平。

一般采用的办法是在RST端和正电源Vcc之间接一个按钮。

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

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

在单片机最小系统中还要将EA的非接高电平,如图3-2也有体现出来。

3.2LED发光报警电路

P1.7

图3-3LED发光报警电路

图3-3为LED报警电路的接法,其中一根线接单片机的8号P1.7口,另外一根接地。

当温度超过预设温度值时LED灯被接通发光报警。

3.3DS18B20的简介及在本次设计中的应用

3.3.1DS18B20的外部结构及管脚排列

DS18B20的管脚排列如图3-4所示:

DS18B20引脚定义:

(1)DQ为数字信号输入/输出端;

(2)GND为电源地;

(3)VDD为外接供电电源输入端(在寄生电源接线方式时接地)

图3-4DS18B20的引脚排列及封装

3.3.2DS18B20的工作原理

DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s减为750ms。

DS18B20测温原理如图3-5所示。

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

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

计数器1和温度寄存器被预置在-55℃所对应的一个基数值。

计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。

图中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。

图3-5DS18B20测温原理图

3.3.3DS18B20的主要特性

(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)负压特性:

电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。

3.3.4DS18B20的测温流程

图3-6DS18B20的测温流程图

3.3.5DS18B20与单片机的连接

P3.7

图3-7DS18B20与单片机的连接电路图

如上图为DS18B20温度传感器与单片机之间的接法,其中2号接单片机的17号P3.7接口。

DS18B20通过P3.7口将采集到的温度实时送入单片机中。

3.4报警温度的设置

P2.5

P2.6

P2.7

图3-8报警温度的设置电路

图3-8为报警温度的设置电路,其中K1,K2,K3分别接到单片机的P2.5,P2.6,P2.7口。

其中K1用于报警温度设定开关,K2用于报警温度的设置时候的加温度(每次加一),K3用于报警温度的设置时的减温度(每次减一)。

实现了报警温度的手动设置。

3.5数码管显示

3.5.1数码管工作原理

图3-9数码管的引脚排列及结构

图3-9为数码管的外形及引脚排列和两种接法(共阴极和共阳极)的结构图。

共阳极数码管的8个发光二极管的阳极(二极管正端)连接在一起。

通常,公共阳极接高电平(一般接电源),其它管脚接段驱动电路输出端。

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

根据发光字段的不同组合可显示出各种数字或字符。

此时,要求段驱动电路能吸收额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。

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

通常,公共阴极接低电平(一般接地),其它管脚接段驱动电路输出端。

当某段驱动电路的输出端为高电平时,则该端所连接的字段导通并点亮,根据发光字段的不同组合可显示出各种数字或字符。

此时,要求段驱动电路能提供额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。

要使数码管显示出相应的数字或字符,必须使段数据口输出相应的字形编码。

字型码各位定义为:

数据线D0与a字段对应,D1与b字段对应……,依此类推。

如使用共阳极数码管,数据为0表示对应字段亮,数据为1表示对应字段暗;

如使用共阴极数码管,数据为0表示对应字段暗,数据为1表示对应字段亮。

如要显示“0”,共阳极数码管的字型编码应为:

11000000B(即C0H);

共阴极数码管的字型编码应为:

00111111B(即3FH)。

依此类推,可求得数码管字形编码如表3-5所示。

表3-5数码管字符表

显示数字

共阴顺序小数点暗

共阴逆序小数点暗

共阳顺序小数点亮

共阳顺序小数点暗

Dpgfedcba

16进制

abcdefgDp

00111111

3FH

11111100

FCH

40H

C0H

00000110

06H

01100000

60H

79H

F9H

01011011

5BH

11011010

DAH

24H

A4H

01001111

4FH

11110010

F2H

30H

B0H

01100110

66H

19H

99H

01101101

6DH

10110110

B6H

12H

92H

6

01111101

7DH

10111110

BEH

02H

82H

7

00000111

07H

11100000

E0H

78H

F8H

8

01111111

7FH

11111110

FEH

00H

80H

9

01101111

6FH

11110110

F6H

10H

90H

显示的具体实施是通过编程将需要显示的字型码存放在程序存储器的固定区域中,构成显示字型码表。

当要显示某字符时,通过查表指令获取该字符所对应的字型码。

 

3.5.2数码管显示电路

P0.1

P0.2

P0.3

P0.4

P0.5

P0.6

P0.7

P2.0

P2.1P2.2

P2.3

图3-10四位八段数码管动态显示电路

图3-10为本次设计所用到的四位八段数码管动态显示,其中段选接到单片机的P0口,位选接到单片机的P2口的低四位。

其中P0口也接的有上拉电阻,图中未标示出来,会在下面的总体电路中标示出来。

采用的是动态显示方式。

3.6硬件电路总体设计

图3-11为本次设计的硬件总体设计图,其中利用K1,K2,K3处进行报警温度的设置,然后有DS18B20进行实时温度采集,并在数码管上同步显示,若采集到的温度达到或者超过预设的报警温度,则LED灯会发光报警,若低于该报警温度,则不会报警。

图3-11硬件电路总体设计图

4.软件设计方案

4.1主程序介绍

4.1.1主程序流程图

本次设计首先对程序进行初始化,然后打开报警温度设定开关,对报警温度进行设定,确认设定值后,DS18B20温度传感器进行温度采集并送入单片机中,单片机将传感器所检测到的温度同步显示在数码管上,并且与设置的报警温度进行比较,若达到或者超过报警温度时,LED灯发光报警,如果没有达到,则继续进行温度采集。

图4-1主程序流程图

4.1.2主流程的C语言程序

main()

{

ALERT=0;

LED=0;

flag=0;

sheding=30;

disdata=0xff;

//初始化端口

discan=0xff;

for(h=0;

h<

4;

h++)//开机显示“8888”scan();

{display[h]=8;

}

ow_reset();

//开机先转换一次

write_byte(0xcc);

//skipROM

write_byte(0x44);

//发转换命令

500;

h++)//开机显示“8888”两秒

{scan();

}

display[0]=0;

display[1]=0;

display[2]=0;

display[3]=0;

flag2=0;

while

(1)

{

if(flag==0&

&

flag2>

1)//温度显示界面

{

LED1=0;

if(display[1]+display[2]*10>

=sheding)//比较

{

ALERT=1;

//报警

}

else

ALERT=0;

}

if(flag==0&

1)

{

read_temp();

//读出温度数据

work_temp();

//处理温度数据

ge=display[3];

shi=display[2];

if(K1==0)

flag2++;

//flag2=0时为初始界面flag2=1时为设定

if(flag2>

flag2=2;

if(flag==0)//flag=0时温度显示flag=1设定显示

flag=1;

elseif(flag==1)

flag=0;

LED=~LED;

key_delay(20);

if(flag==1)

sheding=30;

ge=0;

shi=3;

//display[0]=ge;

//个位设定好的温度用于显示

//display[2]=shi;

//十位

if(flag==1)

LED1=1;

if(K2==0)//++

{

ge++;

if(ge>

9)

{

ge=0;

shi++;

if(shi>

shi=0;

}

sheding=ge+shi*10;

key_delay(20);

if(K3==0)//--

ge--;

if(ge<

0)

ge=9;

shi--;

if(shi<

shi=9;

display[1]=ge;

display[2]=shi;

}

for(h=0;

h++)//显示温度两秒

scan();

}

4.2部分子程序

4.2.1DS18B20复位子程序

流程图如图4-2所示:

图4-2DS18B20复位子程序

DS18B20复位子的C语言程序如下:

ow_reset(void)

{

charpresence=1;

while(presence)

DQ=1;

_nop_();

DQ=0;

delay(50);

//延时550毫秒

delay(6);

presence=DQ;

delay(45);

presence=~DQ;

4.2.2写DS18B20命令子程序

流程图如图4-3所示:

图4-3写DS18B20命令子程序

写DS18B20命令的C语言程序如下:

voidwrite_byte(ucharval)//向1-WIRE总线上写一字节

uchari;

for(i=8;

i>

0;

i--)

DQ=val&

0x01;

//最低位移出

val=val/2;

//右移1位

delay

(1);

}

4.2.3读温度子程序

读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,验有错时,不进行温度数据的改写。

其程序流程图如图4-4所示

DS18B20的各个命令对时序的要求特别严格,所以必须按照所要求的时序才能达到预期的目的,同时,要注意读进来的是高位在后低位在前,共有12位数,小数4位,整数7位,还有一位符号位。

图4-4读温度子程序

读温度的C语言程序如下:

read_temp()

write_byte(0xbe);

temp_data[0]=read_byte();

temp_data[1]=read_byte();

4.2.4计算温度子程序

流程图如图4-5所示:

图4-5计算温度子程序

计算温度的C语言程序如下:

work_temp()

ucharn=0;

if(temp_data[1]>

127)

temp_data[1]=(255-temp_data[1]);

temp_data[0]=(255-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)<

<

4);

display[3]=display[4]/100;

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

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

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

if(!

display[3]){display[3]=0x0a;

display[2]){display[2]=0x0a;

}}//最高位为0时不显示

if(n){display[3]=0x0b;

}//负温度是最高为显示“-”

4.2.5显示扫描过程子程序

流程图如图4-6所示:

图4-6显示扫描过程子程序

显示扫描的C语言程序如下:

scan()

chark;

for(k=0;

k<

k++)//4位LED扫描控制

disdata=dis_7[display[k]];

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

}//当K=1时,P0^7为低电平显示小数点

discan=scan_con[k];

//列扫描

delay(30);

discan=0xFF;

5.基于DS18B20的温度采集显示系统的调试

运行后,按下K1键,开始进入报警温度设置过程,按下K2则温度增加一度,按下K3则温度减少一度,刚开始调试时,由于接的LED报警灯是高电平点亮,程序一运行时,AT89C51给各个引脚都是高电平,所以LED灯一运行就会发光,违背了超过报警温度才发光的要求,所以在子程序中加上了一条开始时将LED所连引脚置0的程序。

之后运行过程中又发现按下报警温度的设置键K1,K2,K3都不是很灵敏,有时按下的时间太短甚至会没有反应,经过与小组成员讨论,发现是由于按键没有进行消抖,在显示扫描子程序中加入了延时函数进行按键的消抖,这一问题也得到了解决。

图5-1温度实时显示且未超过报警温度25摄氏度时LED没有发光报警

图5-2温度实时显示且超过实时报警温度25摄氏度LED发光报警

图5-3实时显示负温度

6.收获和体会

在这一次的课程设计过程,我收获了很多,无论是在理论知识方面,还是理论联系实际的操作方面。

因为已经一个学期没有学习单片机这门课程,很多知识不太清楚,加上以前的基础知识也不是很牢固,对于Proteus和Keil软件的使用也生

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

当前位置:首页 > PPT模板 > 动物植物

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

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