DS18B20实现测温功能Word下载.docx

上传人:b****5 文档编号:16103843 上传时间:2022-11-20 格式:DOCX 页数:17 大小:119.20KB
下载 相关 举报
DS18B20实现测温功能Word下载.docx_第1页
第1页 / 共17页
DS18B20实现测温功能Word下载.docx_第2页
第2页 / 共17页
DS18B20实现测温功能Word下载.docx_第3页
第3页 / 共17页
DS18B20实现测温功能Word下载.docx_第4页
第4页 / 共17页
DS18B20实现测温功能Word下载.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

DS18B20实现测温功能Word下载.docx

《DS18B20实现测温功能Word下载.docx》由会员分享,可在线阅读,更多相关《DS18B20实现测温功能Word下载.docx(17页珍藏版)》请在冰豆网上搜索。

DS18B20实现测温功能Word下载.docx

33pf电容2

10uf电容1

4.7k电阻7

10k电阻5

0.1k电阻1

1k电阻4

5V电源1

四>

硬件原理图

室内温度检测系统硬件原理图

五>

硬件原理图与其软件配合介绍

DS18B20的DQ端与单片机的P2.0口相连,进行数据传送。

DSl8820内部结构主要由4部分组成:

64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。

根据DSl8820的通信协议,主机控制DSl8820完成温度转换必须经过3个步骤:

每一次读写之前都要对其进行复位,复位成功后发送1条ROM指令,最后发送RAM指令,这样才能对DSl8820进行预定的操作。

复位要求主CPU将数据线下拉500μs,然后释放,DSl8820收到信号后等待16~60μs左右,后发出60~240μs的存在低脉冲,主CPU收到此信号表示复位成功。

由于DSl8820采用的是单线进行控制与读取数据,因此对操作的时序要求非常严格,否则由于时序不匹配,将无法完成对器件的正确操作。

P0口与4位LED显示的“字型码”端相连,P1口的低四位与4位LED显示的“位”选择相连,实现将从DS18B20中读取的数据显示出来。

P1口的高四位,分别接四个按钮,实现对温度的设置。

P1.4接“温度设置”按钮,P1.5接“开始测温”按钮,P1.6接“增加温度”按钮,P1.7接“减小温度”按钮。

P3.4口接警铃,当温度高于设定温度时,可实现报警功能。

每次用P1口读入数据时,都要先置1,而后读入数据,如:

SETBP1.4

相关代码如下:

SET_TEMPER;

设置温度上限

LCALLINIT_18B20;

对DS18B20初始化

LCALLGET_TEMPER;

获取温度数据

LCALLCHANGE16;

将得到的16进制温度值转换为10进制数

LCALLDISPLAY;

将得到的温度显示出来

MOVDPTR,#NUMTAB;

采用查表法显示温度

MOVCA,@A+DPTR

六>

程序流程图

温度上限初值设置

读温度初始化DS18B20

写DS18B20获得温度整数部分

结果送显示

七>

源程序清单

------------------------------部分内存分配声明-----------------------------

TEMPER_LEQU31H;

用于保存读出温度的低字节

TEMPER_HEQU30H;

用于保存读出温度的高字节

DATBITP2.2;

DS18B20数据线

------------------------------设置上限温度-----------------------------

ORG0000H

MOVSP,#80H

MOV66H,#26;

66H为温度初值存储地址(温度上限)

CLRC;

欲设温度上限为26度

MOVP3.4,C;

关闭蜂鸣器

MOVR3,#0F0H;

延时

WAIT1:

MOV60H,66H;

初始温度送显示,60H为16进制数暂存地址

LCALLCHANGE16_0

LCALLDISPLAY

DJNZR3,WAIT1

CLRP1.4

CLRP1.5

WAIT4:

CLRC

SETBP1.4

SETBP1.5

NOP

JNBP1.4,SET_TEMPER;

判断是否需要设置温度

JNBP1.5,START

AJMPWAIT4

-----------------------设置温度子程序-----------------------

SET_TEMPER:

CLRP1.6

CLRP1.7

SETBP1.6

SETBP1.7

SET_1:

JNBP1.6,UP1;

温度值加1

JNBP1.7,DOWN1;

温度值减1

JNBP1.5,START;

开始测温

AJMPSET_1

------------------------------加温度子程序-----------------------------

UP1:

MOVA,66H

ADDCA,#01H

MOV66H,A

MOVR3,#0FFH

WAIT2:

MOV60H,66H

DJNZR3,WAIT2

LJMPSET_TEMPER

------------------------------减温度子程序-----------------------------

DOWN1:

MOVA,66H

SUBBA,#01H

WAIT3:

DJNZR3,WAIT3

------------------------------主函数开始-----------------------------

START:

LCALLGET_TEMPER;

调用读温度子程序

LCALLCHANGE16;

将读出的2字节温度整合,并转换为压缩BCD码

LCALLDISPLAY;

显示温度

LJMPSTART

-----------------------DS18B20的温度转换子程序-----------------------

GET_TEMPER:

LCALLINIT_18B20

TSS:

MOVA,#0CCH;

跳过ROM匹配

LCALLWRITE_18B20

MOVA,#44H;

发出温度转换命令

LCALLDISPLAY;

用显示温度(持续1s左右)来等待AD转换结束

12位的话要转换750ms

LCALLINIT_18B20;

准备读温度前先初始化

MOVA,#0CCH;

MOVA,#0BEH;

发出读温度命令

LCALLREAD_18B20

RET

--------------------------DS18B20初始化程序--------------------------

INIT_18B20:

SETBDAT

CLRDAT

MOVR2,#250;

主机发出延时500微秒的复位低脉冲

DJNZR2,$

SETBDAT;

然后拉高数据线

MOVR2,#30

DJNZR2,$;

延时240us

JNBDAT,INIT1;

数据变高,初始化成功

LJMPINIT_18B20

INIT1:

MOVR2,#120

DJNZR2,$

JBDAT,INIT2

LJMPINIT_18B20

INIT2:

MOVR2,#240

-----------------写DS18B20的子程序(有具体的时序要求)-----------------

WRITE_18B20:

MOVR2,#8;

一共8位数据

CLRC

WR0:

CLRDAT

MOVR3,#5

DJNZR3,$

RRCA

MOVDAT,C

MOVR3,#21

DJNZR2,WR0

----------读DS18B20的程序,从DS18B20中读出两个字节的温度数据--------------------------

READ_18B20:

MOVR4,#2;

将温度高位和低位从DS18B20中读出

MOVR1,#TEMPER_L;

低位存入31H(TEMPER_L)

RE0:

MOVR2,#8

RE1:

CLRC

NOP

MOVR3,#4

MOVC,DAT

MOVR3,#30

DJNZR2,RE1

MOV@R1,A

DECR1;

高位存入30H(TEMPER_H)

DJNZR4,RE0

----------整合读出的两字节温度(关于DS18B20读出的2字节温度格式请参考资料)----------

CHANGE16:

MOVP3.4,C

MOVR0,#65H

MOVA,TEMPER_L

SWAPA

MOV@R0,A

MOVA,TEMPER_H

XCHDA,@R0

MOV60H,A;

获得整数部分(1字节)

SUBBA,60H;

判断实际温度是否高于温度上限

JNBACC.7,CHANGE16_0

SETBC

---------------------------将得到的16进制温度转化为10进制数----------------------------

CHANGE16_0:

MOVA,60H

JBACC.7,FUSHU;

判断是否为负数

MOV64H,#00H

MOVB,#100;

将16进制数转换为10进制数

DIVAB

MOV63H,A

MOVA,B

MOVB,#10

MOV62H,A

MOV61H,A

AJMPBACK1

FUSHU:

MOV64H,#0AH

CPLA

INCA

MOV60H,A

MOVB,#100

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

当前位置:首页 > 党团工作 > 思想汇报心得体会

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

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