温度检测与控制实验报告Word文档下载推荐.docx

上传人:b****0 文档编号:13475662 上传时间:2022-10-11 格式:DOCX 页数:13 大小:81.21KB
下载 相关 举报
温度检测与控制实验报告Word文档下载推荐.docx_第1页
第1页 / 共13页
温度检测与控制实验报告Word文档下载推荐.docx_第2页
第2页 / 共13页
温度检测与控制实验报告Word文档下载推荐.docx_第3页
第3页 / 共13页
温度检测与控制实验报告Word文档下载推荐.docx_第4页
第4页 / 共13页
温度检测与控制实验报告Word文档下载推荐.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

温度检测与控制实验报告Word文档下载推荐.docx

《温度检测与控制实验报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《温度检测与控制实验报告Word文档下载推荐.docx(13页珍藏版)》请在冰豆网上搜索。

温度检测与控制实验报告Word文档下载推荐.docx

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

64位光刻ROM的排列是:

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

光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。

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

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

 

LSByte:

Bit7

Bit6

Bit5

Bit4

Bit3

Bit2

Bit1

Bit0

23

22

21

20

2-1

2-2

2-3

2-4

MSByte:

Bit15

Bit14

Bit13

Bit12

Bit11

Bit10

Bit9

Bit8

S

26

25

24

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

如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。

例如+125℃的数字输出为07D0H,+25.0625℃的数字输出为0191H,-25.0625℃的数字输出为FF6FH,-55℃的数字输出为FC90H。

温度

数据输出(二进制)

数据输出(十六进制)

+125℃

0000011111010000

07D0h

+85℃

0000010101010000

0550h

+25.0625℃

0000000110010001

0191h

+10.125℃

0000000010100010

00A2h

+0.5℃

0000000000001000

0008h

0℃

0000000000000000

0000h

-0.5℃

1111111111111000

FFF8h

-10.125℃

1111111101011110

FF5Eh

-25.0625℃

1111111001101111

FE6Fh

-55℃

1111110010010000

FC90h

DS18B20温度传感器的存储器

DS18B20温度传感器的部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的E2RAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。

暂存存储器包含了8个连续字节,前两个字节是测得的温度信息,第一个字节的容是温度的低八位,第二个字节是温度的高八位。

第三个和第四个字节是TH、TL的易失性拷贝,第五个字节是结构寄存器的易失性拷贝,这三个字节的容在每一次上电复位时被刷新。

第六、七、八个字节用于部计算。

第九个字节是冗余检验字节。

该字节各位的意义如下:

TM

R1

R0

1

低五位一直都是1,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。

在DS18B20出厂时该位被设置为0,用户不要去改动。

R1和R0用来设置分辨率,如下表所示:

(DS18B20出厂时被设置为12位)

分辨率设置表:

分辨率

温度最大转换时间

9位

93.75ms

10位

187.5ms

11位

375ms

12位

750ms

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

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

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

2.本实验在读取温度的基础上,完成类似空调恒温控制的实验。

用加热电阻代替加热电机,制冷采用自然冷却。

温度值通过LED静态显示电路以十进制形式显示出来,同时显示电路还将显示设定的恒温值,通过键盘可以改变设定值。

按一次‘升高’键,恒温值加1℃,按一次‘降低’键,恒温值减小1℃。

恒温值在2℃~50℃围可调。

当实际温度低于设定的恒定温度2℃时,单片机发出指令信号,继电器吸合,红色LED点亮,加热电阻开始加热。

当温度超过设定的恒温值2℃时,单片机发出指令信号,继电器断开,红色LED熄灭,加热电阻停止加热,制冷采用自然冷却。

三、实验容及步骤

1.用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:

缺口朝上。

2.打开KeiluVision2仿真软件,首先建立本实验的项目文件,接着添加“DS18B20.ASM”源程序,编译无误后,全速运行程序。

3.程序正常运行后,按下自锁开关‘控制’。

5LED数显为“XX20”,“XX”为十进制温度测量值,当气温低于0℃,或者模拟信号输入端的电位器没有逆时针旋到底时,温度值前面出现“-”号。

“20”为十进制温度设定值,按设定键‘升高’、‘降低’可以改变设定值。

当测量值小于设定值2个字时,加热启动,当实际值超过设定值2个字时,加热停止。

4.可把源程序编译成可执行文件,烧录到89C51芯片中。

四、源程序

LEDBufEQU60H;

显示缓存1

TEMPEQU65H;

显示缓存2

UPEQU1;

1键定义为增加键

DOWNEQU2;

2键定义为减小键

LowLimitEQU2;

设定值最低为2

HighLimitEQU50;

设定值最高为50

FLAG1EQU38H;

是否检测到DS18B20标志位

SetTempEQU50h;

温度设定值缓存

CurTempEQU29h;

温度实际值缓存

DINBITP3.0;

串行显示数据口

CLKBITP3.1;

串行显示时钟口

ORG0000H

ljmpStart

ORG0100H

Start:

movSetTemp,#20;

设定值初值20

MLoop:

LCALLTestKey;

测试键盘是否有键按下

CJNEA,#03H,KeyPressed;

有键按下,处理按键

MLOOP1:

ACALLDisplayResult;

无键按下,调显示

ACALLDisplayLED

ACALLGET_TEMPER;

调用读温度子程序

mova,CurTemp

jbacc.7,LE0;

为负值

clrc

movb,SetTemp;

为正值时与设定值比较

decb

subba,b

jncGN2;

小于(设定值-2),加热

LE0:

setbp3.2

sjmpGN4

GN2:

mova,CurTemp

setbc

movb,SetTemp

incb

jcGN4;

大于(设定值+2),停止加热

CLRP3.2

GN4:

ACALLDELAY1

LjmpMLoop;

大循环

KeyPressed:

处理按键

LCALLGetKey;

读取键值

movb,a

xrla,#DOWN

jnzKey0

mova,SetTemp

xrla,#LowLimit

jzKey1

DECSetTemp

sjmpKey1

Key0:

mova,b

xrla,#UP

jnzKey1

xrla,#HighLimit

incSetTemp

Key1:

LjmpMLooP1

INIT_1820:

这是DS18B20复位初始化子程序

SETBP2.0

NOP

CLRP2.0;

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

MOVR1,#3

TSR1:

MOVR0,#107

DJNZR0,$

DJNZR1,TSR1

SETBP2.0;

然后拉高数据线

MOVR0,#25H

TSR2:

JNBP2.0,TSR3;

等待DS18B20回应

DJNZR0,TSR2

LJMPTSR4;

延时

TSR3:

SETBFLAG1;

置标志位,表示DS1820存在

LJMPTSR5

TSR4:

CLRFLAG1;

清标志位,表示DS1820不存在

LJMPTSR7

TSR5:

MOVR0,#117

TSR6:

DJNZR0,TSR6;

时序要求延时一段时间

TSR7:

RET

GET_TEMPER:

读出转换后的温度值

LCALLINIT_1820;

先复位DS18B20

JBFLAG1,TSS2

RET;

判断DS1820是否存在?

若DS18B20不存在则返回

TSS2:

MOVA,#0CCH;

跳过ROM匹配

LCALLWRITE_1820

MOVA,#44H;

发出温度转换命令

这里通过调用显示子程序实现延时一段时间,等待AD转换结束

LCALLDELAY1

准备读温度前先复位

MOVA,#0BEH;

发出读温度命令

LCALLREAD_18200;

将读出的温度数据保存到35H/36H

MOVA,CurTemp

MOVC,40H;

将28H中的最低位移入C

RRCA

MOVC,41H

MOVC,42H

M

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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