版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机原理及应用
(第十六讲)
08自动化专业适用DS18B20的特性●独立的单线接口方式;●使用时不需要外围元件的支持;●温度测量范围:-55~+125°C,固有测量分辨率为0.5°C;●编成实现9~12位的温度数据;●可实现多点组网测量功能;●具有良好的负压特性。DS18B20封装与引脚
GNDDQVDDNC1●16NCNC215NCNC314NCNC413NCNC512NCNC611NCVDD710NCDQ89GND123DS18B20的操作命令初始化:初始化过程就是单片机向DS18B20芯片发出一个有时间宽度要求的初始化脉冲来实现。ROM操作命令:1.读ROM命令字为[33H]读DS18B20中的ROM命令,在BS18B20内部包含一个64位长的序号,该序号存放在ROM中,,前8为---------产品类型编码10H48位----------芯片惟一的序号后8位---------循环冗余码(CRC校验码)2.匹配ROM命令字为[55H]多温度测量使用3.跳过ROM命令为[CCH]
不必读64位序列号,之后的操作是针对DB18B20。
4.搜索ROM命令字为[F0H]
搜索序列号或芯片
5.报警搜索命令字为[ECH]
温度上、下限的设置
随机存储器(RAM)操作命令
随机存储器的命令主要是用于对DS18B20进行的读、写、启动等操作。在DS18B20中,共有8个随机存储器,与温度有关的主要是前4个。
0字节-------低8位寄存器
1字节-------高8位寄存器
2字节-------温度上限寄存器TH
3字节-------温度下限寄存器TL
1.写随机存储器命令字为[4EH]
2.读随机存储器命令字为[BEH]
从0字节开始读取
3.启动温度变换命令字为[44H]高速暂存RAM的结构为8字节的存储器
结构图温度LSB温度MSB高温限值TH低温限值TL配置寄存器保留保留保留CRC配置寄存器
R1R0的值决定了温度转换的分辨率;默认值为11。0R1R011111R1R0分辨率/位转换时间/ms00993.750110187.510113751112750当BS18B20接收到温度转换命令后,开始启动转换。转换完成的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存RAM的第1、2字节。单片机可以通过单线接口读出该数据,读出数据时,地位在先,高位在后。格式如下:S=0,正值;S=1,负值
2³2²2¹2°2¯¹2¯²2¯³2¯⁴LSBSSSSS2⁶2⁵2⁴MSB
4.复制随机存储器命令字为[48H]
把报警值存入EEPROM
5.重新调用命令字为[B8H]
与复制随机存储器对应
6.读电源命令字为[B4H]
数据总线供电方式返回0;外部供电方式返回1。
9.2DS18B20的工作时序
初始化时序、写时序、读时序三种。
1.初始化时序
480μs
400μs~960μs15μs~60
μs60μs~240μs
t0t1t2t3t4
2.写时序>60μs
15μs45μs>1μs
t0t1
写1时序图
>60μs
15μs45μs>1μs
t0t1
写0时序图===============计算温度的子程序==========
CONVER:MOVA,#0FH
ANLA,TEMPER_H
SWAPA
MOVB,A
MOVA,#0F0H
ANLA,TEMPER_L
SWAPA
ADDA,B
MOV32H,A
BCD:MOVB,#100
DIVAB
MOV30H,A
MOVA,#10
XCHA,B
DIVAB
MOVA_BIT,A
MOVB_BIT,B0000000000110010是否取完64位
RET
;0;读时序
>60μs
15μs>1μs
t0t1t2t3
读时序图
CPU在t0时刻从高拉低电平时,总线只需保持低电平1μs,在t1时刻
将总线拉高,产生读的时序,读时序在t1时刻后t2时刻前有效。跳过ROM命令为[CCH]
不必读64位序列号,之后的操作是针对DB18B20。共8X8=64位序列号
XL1:MOVA,@R0;判断是否送完8位命令字
SETBP1.NC314NCFFFFH判断是否送完8位命令字
SETBP1.读DS18B20,ROM的编码(即64位ROM的地址)启动DS18B20进行温度转换,转换时间最长为500ms(典型值为200ms),结果存入内部9字节RAM中在t2时刻前,CPU必须完成读位,在t0后的60~120μs内释放总线。===========写入DS18B20中1字节子程序=============
入口处A
WRITE:CLREA;3.读时序
>60μs
15μs>1μs
t0t1t2t3
读时序图
CPU在t0时刻从高拉低电平时,总线只需保持低电平1μs,在t1时刻
将总线拉高,产生读的时序,读时序在t1时刻后t2时刻前有效。T2距t0为15μs
。在t2时刻前,CPU必须完成读位,在t0后的60~120μs内释放总线。
9.3温度测量结果的换算
测量范围-55°C~+125°C
测量精度0.5°C温度(°C)二进制输出十六进制输出+125000000001111101000FAH…….
+2500000000001100100032H……..+0.500000000000000010001H000000000000000000000H-0.51111111111111111FFFFH……
-251111111111001110FFCEH…..-1251111111110010010FF92H9.4接口编程
DS18B20硬件接口虽然简单,但是接口编程比较繁。DS18B20与89C51的接口协议是通过严格的时序来实现的,DS18B20的数据的写入和读出都是由单片机读写特定的时间暂存器来实现的。
主要有三个接口程序:
DS18B20初始化程序
写DS18B20子程序
读DS18B20子程序
CPU控制DS18B20完成温度转换必须经过2个步骤:
先启动DS18B20开始转换
再读出温度转换值;==============DS18B20初始化子程序============
ABC:CLREA;关中断
L0:CLRP1.0;给复位信号
MOVR2,#200;延时600μs
L1:CLRP1.0;再确定复位信号
DJNZR2,L1
SETBP1.0;P1.0改为输入口
MOVR2,#32;延时64μs
L4:DJNZR2,L4
CLRC;清位
JBP1.0,L0;DS18B20数据线变低,若没有,说
;明没准备好,重来
MOVR6,#80;已变低,
L5:JBP1.0,L3;DS18B20数据变低,(为0顺序执
;行)收到相应的脉冲,初始化成功
DJNZR6,L5
SJMPL0;初始化失败,跳转L0重来
L3:MOVR2,#240
L2:DJNZR2,L2;DS18B20应答过程最少480μs
SETBEA
RET
;===========写入DS18B20中1字节子程序=============
入口处A
WRITE:CLREA;关中断
MOVR3,#8;设定8位
WR1:SETBP1.0;启动写时序
MOVR4,#8;设定延时时间
RRCA;最低位送C
CLRP1.0;写位送总线
WR2:DJNZR4,WR2;延时16μs
MOVP1.0,C;送C到P1.0口
MOVR4,#30;设定延时时间
WR3:DJNZR4,WR3;保证整个写过程持续60μs
DJNZR3,WR1;判断是否送完8位命令字
SETBP1.0;送完,置位
SETBEA
RET;===========读入DS18B20中1字节子程序============
出口为A
READ:CLREA;关中断
MOVR6,#8;设定8位
RE1:CLRP1.0;启动读时序
MOVR4,#4;设定延时时间
NOP;低电平持续2μs
SETBP1.0;P1.0设定为输入口,位送总线
RE2:DJNZR4,RE2;延时8μs
MOVC,P1.0,;单片机按位读入DB18B20数据
RRCA;数据送入A
MOVR5,#30;设定延时时间
RE3:DJNZR5,RE3;保证整个写过程持续60μs
DJNZR6,RE1;判断是否送完8位命令字
SETBP1.0;送完,置位
SETBEA
RET;================发序列号的子程序=============
入口:R0为DS18B20的序列号存放的首地址
XL:MOVR1,#8;共8X8=64位序列号
XL1:MOVA,@R0;取序列号的8位
LCALLWRINT;写序列号,调子程序
INCR0;
DJNZR1,XL1;是否取完64位
RET
;=================延时1秒的子程序=============
DELAY:MOVR5,#10;1秒延时
D3:MOVR6,#200
D2:MOVR7,#250
DJNZR7,$
DJNZR6D2
DJNZR5D3
RET
;================保存第1个18B20温度值的子程序======
DDD:MOVR1#60H
MOV@R1A
INCR1;====================主程序=====================
ORG0000H
LJMPMAIN
ORG000BH
LJMPINT0
..
ORG0200H
MAIN:…..
LCALLABC
MOVA,#0CCH
LCALLWRITE
MOVA,#44H
LCALLWRITE
LCALLABC
LCALLWRITE
MOVR0,#CC
LCALLXL
LCALLDELAY
MOVA,#0BEH
LCALLWRITE
LCALLREAD
LCALLDDD
---
END;===============常数值的设置=============
DATBITP1.0
TEMPER_LEQU40H
TEMPER_HEQU41H
A_BITEQU60H
B_BITEQU61H
;===============计算温度的子程序==========
CONVER:MOVA,#0FH
ANLA,TEMPER_H
SWAPA
MOVB,A
MOVA,#0F0H
ANLA,TEMPER_L
SWAPA
ADDA,B
MOV32H,A
BCD:MOVB,#100
DIVAB
MOV30H,A
MOVA,#10
XCHA,B
DIVAB
MOVA_BIT,A
MOVB_BIT,B;===========温度比较子程序=============
COMPARE:MOV50H,#50H;设定值在50H,50为37度
MOVA,32H;取温度值
CLRC;清C
CJNEA,50H,RESULT1;比较,不等转
LOOP2:SETBP1.7;相等,报警
LJMPRETURN
RESULY1:JNCLOOP;不等,判C,C为1,温度小于37度
;C为0,温度大于37度,转
CLRP1.7
LJMPRETURN
LOOP:LJMPLOOP2
RETURN:RET
;===========温度数据转换成BCD码子程序======9.2DS12C887的应用
DS12C887是一个24引脚的双列直插芯片,芯片内有锂电池、晶振、驱动和控制电路。主要特点:片内有14字节的时钟和控制寄存器114字节的供用户使用的静态非易失RAM有两种总线模式片内供电可连续工作10年时钟日历选择二进制或BCD码有三种编程中断可编程输出15种频率的方波输出MOT1●24VCC
23SQW
AD04
AD15
AD2619/IRQ
AD3718/RESET
AD4817DS
AD59
AD61015R/W
AD71114AS
GND1213/CSDS18B20DS18B20外部引脚的功能1MOT方式选择端4~11AD0~AD7双向地址/数据复用总线12GND接地端13/CS片选端14AS地址线选通端15R/W读写使能端17DS数据选通或输入18/RESET复位端19/IRQ中断申请端23SQW可编程方波输出端24VCC+5VDS12C887片内地址分配
00014字节130D140E114字节RAM(用户使用)1277F0秒00
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年高职(会展经济与管理)实训测试试题及答案
- 2026年宿迁市中学教师中级专业技术资格理论考试试题及答案
- 2026年水上救生员技能鉴定试题及答案
- 云计算数据中心建设项目可行性研究报告
- 2026糖尿病合并肥胖护理课件
- 某食品冷链企业物流管理细则
- 2026糖尿病低血糖处理课件
- 2026糖尿病低嘌呤饮食指导课件
- 某化工厂实验室管理细则
- 2026年10道心理测试题及答案
- 国家义务教育质量监测八年级劳动素养综合测试题
- 2025山东司法警官职业学院教师招聘考试题目及答案
- 2024年贵州高速公路集团有限公司招聘笔试真题及答案详解(名师系列)
- 重庆一中高2026届高三3月(末)月考(全科)政治+答案
- 2025-2026学年山东省德州市宁津县育新中学(小学部)等校青岛版五年级下学期期中测试数学试题(含答案)
- 2026中国学生出国留学发展报告-
- 劳动仲裁申请书范本
- 六年级美术下册 宇宙之旅 课件
- (自考)创新思维理论与方法整理资料
- GB/T 27476.5-2014检测实验室安全第5部分:化学因素
- 物探-地震勘探理论基础
评论
0/150
提交评论