基于单片机的DS18B20温度测量.docx

上传人:b****1 文档编号:1665606 上传时间:2023-05-01 格式:DOCX 页数:15 大小:193.13KB
下载 相关 举报
基于单片机的DS18B20温度测量.docx_第1页
第1页 / 共15页
基于单片机的DS18B20温度测量.docx_第2页
第2页 / 共15页
基于单片机的DS18B20温度测量.docx_第3页
第3页 / 共15页
基于单片机的DS18B20温度测量.docx_第4页
第4页 / 共15页
基于单片机的DS18B20温度测量.docx_第5页
第5页 / 共15页
基于单片机的DS18B20温度测量.docx_第6页
第6页 / 共15页
基于单片机的DS18B20温度测量.docx_第7页
第7页 / 共15页
基于单片机的DS18B20温度测量.docx_第8页
第8页 / 共15页
基于单片机的DS18B20温度测量.docx_第9页
第9页 / 共15页
基于单片机的DS18B20温度测量.docx_第10页
第10页 / 共15页
基于单片机的DS18B20温度测量.docx_第11页
第11页 / 共15页
基于单片机的DS18B20温度测量.docx_第12页
第12页 / 共15页
基于单片机的DS18B20温度测量.docx_第13页
第13页 / 共15页
基于单片机的DS18B20温度测量.docx_第14页
第14页 / 共15页
基于单片机的DS18B20温度测量.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于单片机的DS18B20温度测量.docx

《基于单片机的DS18B20温度测量.docx》由会员分享,可在线阅读,更多相关《基于单片机的DS18B20温度测量.docx(15页珍藏版)》请在冰点文库上搜索。

基于单片机的DS18B20温度测量.docx

基于单片机的DS18B20温度测量

基于DS18B20的温度测量系统

组员:

计佳辰11221120

组员:

徐文杰11221110

1.课题要求

测量环境中的温度,以BCD码的形式在LED上显示

 

2.设计背景

随着现代信息技术的飞速发展和传统工业改造的逐步实现,能够独立工作的温度检测和显示系统应用于诸多领域。

传统的温度检测以热敏电阻为温度敏感元件。

热敏电阻的成本低,但需后续信号处理电路,而且可靠性相对较差,测温准确度低,检测系统也有一定的误差,这里设计的数字温度计具有读数方便,测温围广,测温精确,数字显示,适用围宽等特点。

本设计选用AT89C51单片机作为主控制器件,DS18B20作为测温传感器,通过LM016L实现温度显示。

通过DS18B20直接读取被测温度值,进行数据转换,该器件的物理化学性能稳定,线性度较好,在0℃~100℃最大线性偏差小于0.01℃。

该器件可直接向单片机传输数字信号,便于单片机处理及控制。

另外,该温度计还能直接采用测温器件测量温度,从而简化数据传输与处理过程。

 

3.设计方案

3.1总体设计思路方案与系统框图

采用数字温度芯片DS18B20测量温度,输出信号全数字化。

采用了单总线的数据传输,由数字温度计DS18B20和AT89C51单片机构成的温度测量装置,DS18B20的DQ与AT89C51的P3.7口相连,与它直接输出温度的数字信号,采用AT89C51单片机控制,温度显示由四位八段LED显示屏完成,LED的D0~D7为8位双向数据端,与AT89C51的P1口相连,系统框图如下图所示。

3.2DS18B20芯片介绍

DS18B20引脚定义:

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

(2)GND为电源地

(3)VDD为外接供电电源输入端

温度寄存器(0和1字节)

DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:

16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位。

这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。

DS18B20的温度操作是使用16位,也就是说分辨率是0.0625。

BIT15~BIT11是符号位,为了就是表示转换的值是正数还是负数。

 

3.3LED显示屏(共阴)介绍

A,B,C,D,E,F,G,DP管脚是段选引脚,1,2,3,4是位选引脚(低电平有效),字形码如下:

3.4.AT89C51芯片

VCC:

供电电压。

GND:

接地。

P0口:

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

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

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

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

P1口:

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

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的一些特殊功能口,如下表所示:

口管脚备选功能

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的输出可在SFR8EH地址上置0。

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

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

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

/PSEN:

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

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

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

/EA/VPP:

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

注意加密方式1时,/EA将部锁定为RESET;当/EA端保持高电平时,此间部程序存储器。

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

XTAL1:

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

XTAL2:

来自反向振荡器的输出。

3.5硬件电路图

本系统过温度传感器DS18B20的数据线DQ与主控芯片51单片机的P3.7相连接,DS18B20将采集到的数据送给单片机,经过单片机出来后,显示在8位数据线与单片机P1口的液晶LED上。

位选由P2控制。

3.6程序设计

 

 

4.仿真与调试

 

附录

TMPLEQU29H

TMPHEQU28H

DATAINBITP3.7

ORG0000H

MAIN:

MOVP1,#0FFH;LED显示清零(空格)

LCALLGET_TEMPER;调用初始化,写指令,读指令子程序

LCALLCVTTMP;十六进制转换为BCD码

LCALLDISP1;LED显示温度子程序

AJMPMAIN

;初始化DS18B20

INIT_1820:

SETBDATAIN

NOP

CLRDATAIN;拉低DQ发送复位脉冲

MOVR1,#3;延时

TSR1:

MOVR0,#107

DJNZR0,$

DJNZR1,TSR1

SETBDATAIN;拉高DQ

NOP

DATAIN,$;等待应答脉冲

MOVR0,#117;延时

TSR6:

DJNZR0,$

TSR7:

SETBDATAIN

RET

;初始化完毕

;调用初始化,写指令,读指令子程序

GET_TEMPER:

SETBDATAIN

LCALLINIT_1820;调用初始化子程序

MOVA,#0CCH

LCALLWRITE_1820;写命令,0CCH送入DS18B20,跳过ROM检测

MOVA,#44H

LCALLWRITE_1820;写命令,把44H送入DS18B20,在DS18B20部进行温度转换。

把测得的数据转换成十六进制

LCALLINIT_1820;调用初始化子程序

MOVA,#0CCH

LCALLWRITE_1820;写命令,把0CCH送入DS18B20,跳过ROM检测

MOVA,#0BEH

LCALLWRITE_1820;读命令,把0BEH送入DS18B20,准备读DS18B20的温度数据(十六进制)

LCALLREAD_18200;读命令,把温度数据读入单片机(以十六进制保存)

RET

;调用初始化,写指令,读指令子程序完毕

WRITE_1820:

;调用写指令子程序开始

MOVR2,#8

CLRC

WR1:

CLRDATAIN

MOVR3,#6

DJNZR3,$

RRCA

MOVDATAIN,C

MOVR3,#23

DJNZR3,$

SETBDATAIN

NOP

DJNZR2,WR1

SETBDATAIN

RET;调用写指令子程序完毕

READ_18200:

;调用读指令子程序开始

MOVR4,#2

MOVR1,#29H

RE00:

MOVR2,#8

RE01:

CLRC

CLRDATAIN

NOP

SETBDATAIN

MOVR3,#9

RE10:

DJNZR3,RE10

MOVC,DATAIN

MOVR3,#23

RE20:

DJNZR3,RE20

RRCA

DJNZR2,RE01

MOVR1,A

DECR1

DJNZR4,RE00

RET;调用读指令子程序完毕

CVTTMP:

MOVA,TMPH;调用温度转换子程序,十六进制转换为BCD码

MOVR0,A

ANLA,#80H

JZTMPC11

MOVA,TMPL

CPLA

ADDA,#1

MOVTMPL,A

MOVA,TMPH

CPLA

ADDCA,#0

MOVTMPH,A

TMPC11:

MOVA,TMPL

ANLA,#0FH

MOVDPTR,#TMPTAB

MOVCA,A+DPTR

MOV70H,A

MOVA,TMPL

ANLA,#0F0H

SWAPA

MOVTMPL,A

MOVA,TMPH

ANLA,#0FH

SWAPA

ORLA,TMPL

H2BCD:

MOVB,#100

DIVAB

MOV73H,A

B2BCD1:

MOVA,#10

XCHA,B

DIVAB

MOV72H,A

MOV71H,B

MOVA,R0;调整指令,调整负号,空格

ANLA,#80H

JZZHENG

MOVA,72H

JNZDIS0

MOV73H,#0AH

MOV72H,#0BH

SJMPDISBCD1

DIS0:

MOV73H,#0BH

SJMPDISBCD1

ZHENG:

MOVA,73H

CJNEA,#00H,DISBCD1

MOV73H,#0AH

MOVA,72H

CJNEA,#00H,DISBCD1

MOV72H,#0AH

DISBCD1:

RET;温度转换子程序完毕

TMPTAB:

DB0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9

DISP1:

MOVR1,#70H;显示子程序开始(共阴极)

MOVR5,#0FEH

PLAY:

MOVP1,#00H

MOVA,R5

MOVP2,A

MOVA,R1

MOVDPTR,#TAB

MOVCA,A+DPTR

MOVP1,A

MOVA,R5

ACC.1,L00P1

SETBP1.7;第二位小数点保留,其他位清掉

L00P1:

LCALLDL1MS

INCR1

MOVA,R5

JNBACC.3,ENDOUT

RLA

MOVR5,A

SJMPPLAY

ENDOUT:

MOVP1,#00H

MOVP2,#0FFH

RET;显示子程序完毕

TAB:

DB3FH,06H,5BH,4FH,66H

DB6DH,7DH,07H,7FH,6FH,00H,40H

DL1MS:

MOVR6,#14H;延时子程序

DL1:

MOVR7,#100

DJNZR7,$

DJNZR6,DL1

RET

END

 

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

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2