DS18B20温度传感器流程图讲课稿
第3讲 如何使用DS18B20温度传感器

第讲如何使用DS18B20温度传感器教学方法:讲授法授课时数:2学时教学目的:1、掌握DS18B20的硬件结构2、掌握DS18B20的操作时序3、初步DS18B20的使用编程方法教学重点:DS18B20的使用编程方法教学难点:DS18B20的使用编程方法教学环节:组织教学:检查学生人数,强调作业要求。
新授课:DS18B20的使用编程方法教学目的:1、……..2、……. 教学重点作业一、DS18B20的硬件结构1、……2、……3、……..二、DS18B20的操作时序1、…….2、…….3、……... 三、DS18B20的使用编程方法1、…….2、…….参考资料:DALLAS 达拉斯公司的相应产品资料;《数字温度传感器DS1820(DS18B20)的应用》Skyle整理----skyle@-----有不对之处请来信指正一、DS18B20的硬件结构每只D51820都可以设置成两种供电方式即数据总线供电方式和外部供电方式采取数据总线供电方式可以节省一根导线但完成温度测量的时间较长采取外部供电方式则多用一根导线但测量速度较快DSl820中还有用于贮存测得的温度值的两个8位存贮器RAM编号为0号和1号1号存贮器存放温度值的符号如果温度为负()则1号存贮器8位全为1否则全为00号存贮器用于存放温度值的补码LSB(最低位)的1表示0.5将存贮器中的二进制数求补再转换成十进制数并除以2就得到被测温度值(-550-125)温度计算1、Ds1820用9位存贮温值度最高位为符号位下图为18b20的温度存储方式负温度S=1正温度S=0如00AAH为+85,0032H为25FF92H为552、Ds18b20用12位存贮温值度最高位为符号位下图为18b20的温度存储方式负温度S=1正温度S=0如0550H为+850191H为25.0625,FC90H为-55二、DS18B20的操作时序DSl820工作过程及时序DSl820工作过程中的协议如下初始化、ROM操作命令、存储器操作命令、处理数据1、初始化单总线上的所有处理均从初始化开始2、ROM操作品令总线主机检测到DSl820的存在便可以发出ROM操作命令之一这些命令如指令代码Read ROM(读ROM) [33H]Match ROM(匹配ROM) [55H]Skip ROM(跳过ROM] [CCH]Search ROM(搜索ROM) [F0H]Alarm search(告警搜索) [ECH]3、存储器操作命令指令代码Write Scratchpad(写暂存存储器) [4EH]Read Scratchpad(读暂存存储器) [BEH]Copy Scratchpad(复制暂存存储器) [48H]Convert Temperature(温度变换) [44H]Recall EPROM(重新调出) [B8H]Read Power supply(读电源) [B4H]4、时序主机使用时间隙(time slots)来读写DSl820的数据位和写命令字的位(1)、初始化时序见图2.25-2主机总线to时刻发送一复位脉冲(最短为480us的低电平信号)接着在tl 时刻释放总线并进入接收状态DSl820在检测到总线的上升沿之后等待15-60us接着DS1820在t2时刻发出存在脉冲(低电平持续60-240 us)如图中虚线所示以下子程序在MCS51仿真机上通过其晶振为12M.初始化子程序RESETPUSH B ;保存B寄存器PUSH A 保存A寄存器MOV A,#4 ;设置循环次数CLR P1.0 ;发出复位脉冲MOV B,#250 ;计数250次DJNZ B,$ ;保持低电平500usSETB Pl.0 ;释放总线MOV B,#6 ;设置时间常数CLR C ;清存在信号标志WAITL: JB Pl.0,WH ;若总线释放跳出循环DJNZ B,W AITL ;总线低等待DJNZ ACC,W AITL;释放总线等待一段时间SJMP SHORTWH: MOV B,#111WH1: ORL C,P1.0DJNZ B,WH1 ;存在时间等待SHORT: POP APOP BRET(2)写时间隙当主机总线t o时刻从高拉至低电平时就产生写时间隙见图2253图2254从to时刻开始15us 之内应将所需写的位送到总线上DSl820在t后15-60us间对总线采样若低电平写入的位是0见图2253若高电平写入的位是1见图2254连续写2位间的间隙应大于1us写位子程序(待写位的内容在C中)WRBIT:PUSH B ;保存BMOV B,#28 ;设置时间常数CLR P1.0 ;写开始NOP ;1usNOP ;1usNOP ;1usNOP ;1usN0P ;1usMOVPl.0,C ;C内容到总线WDLT: DJNZ B,WDLT;等待56UsPOP BSETB Pl.0 ;释放总线RET ;返回写字节子程序(待写内容在A中):WRBYTB:PUSH B :保存BMOV B#8H ;设置写位个数WLOP: RRC A ;把写的位放到CACALL WRBIT ;调写1位子程序DJNZ BWLOP ;8位全写完?POP BRET(3)读时间隙见图2255主机总线to时刻从高拉至低电平时总线只须保持低电平l 7ts之后在t1时刻将总线拉高产生读时间隙读时间隙在t1时刻后t 2时刻前有效t z距to为15捍s也就是说t z时刻前主机必须完成读位并在t o后的60尸s一120 fzs内释放总线读位子程序(读得的位到C中)RDBIT:PUSH B ;保存BPUSH A ;保存AMOV B,#23 ;设置时间常数CLR P1.0 ;读开始图2255的t0时刻NOP ;1usNOP ;1usNOP ;1usNOP ;1usSETB Pl.0 ;释放总线MOV A,P1 ;P1口读到AMOV C,EOH ;P1.0内容CNOP ;1usNOP ;1usNOP ;1usNOP ;1usRDDLT: DJNZ B,RDDLT ;等待46usSETB P1.0POP APOP BRET读字节子程序(读到内容放到A中)RDBYTE:PUSH B ;保存BRLOP MOV B,#8H ;设置读位数ACALL RDBIT ;调读1位子程序RRC A ;把读到位在C中并依次送给ADJNZ B,RLOP ;8位读完?POP B ;恢复BRET三、DS18B20的使用编程方法温度转换和读取;|----------------------------------------------------------------------------------------------| ;| 获取单个ds1820转化的温度值的应用程序,P1.6接ds1820 |;|----------------------------------------------------------------------------------------------| ORG 0000HAJMP MAINORG 0020HMAIN:MOV SP,#60HLCALL GET_TEMPSJMP $GET_TEMP:CLR PSW.4SETB PSW.3 ;设置工作寄存器当前所在的区域CLR EA ;使用ds1820一定要禁止任何中断产生LCALL INT ;调用初使化子程序MOV A,#0CCHLCALL WRITE ;送入跳过ROM命令MOV A, #44HLCALL WRITE ;送入温度转换命令LCALL INT ;温度转换完全,再次初使化ds1820MOV A,#0CCHLCALL WRITE ;送入跳过ROM命令MOV A,#0BEHLCALL WRITE ;送入读温度暂存器命令LCALL READMOV R7,A ;读出温度值低字节存入R7LCALL READMOV R6,A ;读出谩度值高字节存入R6SETB EARETINT: ;初始化ds1820子程序CLR EAL0:CLR P1.6 ;ds1820总线为低复位电平MOV R2,#200L1:CLR P1.6DJNZ R2,L1 ;总线复位电平保持400usSETB P1.6 ;释放ds1820总线MOV R2,#30L4:DJNZ R2,L4 ;释放ds1820总线保持60usCLR C ;清存在信号ORL C,P1.6JC L0 ;存在吗?不存在则重新来MOV R6,#80L5:ORL C,P1.6JC L3DJNZ R6,L5SJMP L0L3:MOV R2,#240L2:DJNZ R2,L2RETWRITE: ;向ds1820写操作命令子程序CLR EAMOV R3,#8 ;写入ds1820的bit数,一个字节8个bit WR1:SETB P1.6MOV R4,#8RRC A ;把一个字节data(A)分成8个bit环移给CCLR P1.6 ;开始写入ds1820总线要处于复位(低)状态WR2:DJNZ R4,WR2 ;ds1820总线复位保持16usMOV P1.6,C ;写入一个bitMOV R4,#20WR3:DJNZ R4,WR3 ;等待40usDJNZ R3,WR1 ;写入下一个bitSETB P1.6 ;重新释放ds1820总线RETREAD:CLR EAMOV R6,#8 ;连续读8个bitRE1:CLR P1.6 ;读前总线保持为低MOV R4,#4NOPSETB P1.6 ;开始读总线释放RE2:DJNZ R4,RE2 ;持续8usMOV C,P1.6 ;从ds1820总线读得一个bitRRC A ;把读得的位值环移给AMOV R5,#30RE3:DJNZ R5,RE3 ;持续60usDJNZ R6,RE1 ;读下一个bitSETB P1.6 ;重新释放ds1820总线RETEND。
DS18B20温度传感器原理ppt课件

精品课件
普中STM32开发板带您进入ARM世界
八.DS18B20读时序
(1).将数据线拉低“0”。 (2).延时4微妙。 (3).将数据线拉高“1”,释放总线准备读数据。 (4).延时10微妙。 (5).读数据线的状态得到1个状态位,并进行数据处理。 (6).延时45微妙。 (7).重复1~7步骤,直到读完一个字节。
15
精品课件
普中STM32开发板带您进入ARM世界
九.DS18B20写时序
(1).数据线先置低电平“0”
(2).延时15微妙。
(3).按从低位到高位的顺序发送数据(一次只发送一位)。
(4).延时60微妙。
(5).将数据线拉到高电平。
(6).重复1~5步骤,直到发送完整的字节。
(7).最后将数据线拉高。
7
精品课件
普中STM32开发板带您进入ARM世界
这是12位转化后得到的12位数据,存储在DS18B20的两个8位的RAM 中,高字节的前5位是符号位,如果测得的温度大于0,这5位为‘0’, 只要将测到的数值乘以0.0625即可得到实际温度;如果温度小于0,这 5位为‘1’,测到的数值需要取反加1再乘以0.0625即可得到实际温度。
2
精品课件
普中STM32开发板带您进入ARM世界
二. DS18B20的特点
1、适应电压范围更宽,电压范围:3.0~5.5V,在寄生电源方式下可由数据线供电 2、独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微
处理器与DS18B20的双向通讯。 3、DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网
置R0和R1位来设定DS18B20的精度。上电默认设置:R0=1、R1=1(12位精 度)。注意:精度和转换时间之间有直接的关系。暂存器的位7和位0-4 被器件保留,禁止写入。
DS18B20温度传感器工作原理及其应用电路图

DS18B20温度传感器工作原理框图如图所示:
D低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在-55℃所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。
DS18B20温度传感器工作原理及其应用电路图
DS18B20温度传感器工作原理及其应用电路图
DS18B20温度传感器工作原理及其应用电路图
时间:2021-02-16 14:16:04 来源:赛微电子网 作者:
温度与工农业生产密切相关,对温度的测量和控制是提高生产效率、保证产品质量以及保障生产安全和节约能源的保障。随着工业的不断发展,由于温度测量的普遍性,温度传感器的市场份额大大增加,居传感器首位。数字化温度传感器DS18B20是世界上第一片支持“一线总线”接口的温度传感器。现在,新一代的DS18B20温度传感器体积更小、更经济、更灵活。DS18B20温度传感器测量温度范围为-55℃~+125℃。在-10℃~+85℃范围内,精度为±0.5℃。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。基于DS18B20温度传感器的重要性,小编整理出DS18B20温度传感器工作原理及其应用电路图供大家参考。
18b20流程图

写完8位数据?
数据右移
延时数微秒
结束
函数功能:从ds18b20读数据 函数名date>>=1;:readonechar 返回值:temp
开始
将数据线拉高,延时1微秒
将数据线拉低,延时1微秒
将数据线拉高,延时6微秒
数据右移
如果数据线=1,data和80H或,否则data和00H或
读完8位数据?
延时数微秒 返回读到的数据
将数据线拉高,延时6微秒
将数据线拉低,延时600微秒
Байду номын сангаас
释放数据线(拉高),延时30微秒
主机从数据线采样
延时数毫秒,返回采样值
函数功能:向ds18b20写数据 函数名:writeonechar 形式参数:dat
开始
将数据线拉高,延时1微秒
将数据线拉低(启动写功能)
将数据最低位写入数据线,延时30微秒
释放数据线,延时数微秒
以下是DS18b20的流程图
时序
• 1.首先启动 :打开测温功能(1.初始化2. 命令字) • 2.调用数值 :告诉18b20调温度值(0xbe) • 3.读温度 跳过rom (0xcc) 温度变换 (0x44)
函数功能:18b20的初始化 函数名:init-ds18b20 返回值:falg 开始
温度传感器DS18B20PPT课件

MS Byte:
Bit Bit Bit Bit Bit Bit Bit Bit 11111198 543210
S
S
S
S
S 精2选6PPT课2件5
24
4
Bit7 23
Bit6 22
Bit5 21
Bit4 20
Bit3 2-1
Bit2 2-2
Bit1 2-3
2. 存在脉冲:在复位电平结束之后,控制器应该将数据单总线拉高, 以便于在15~60uS后接收存在脉冲,存在脉冲为一个60~240uS的 低电平信号。
3. 控制器发送ROM指令:双方打完了招呼之后最要将进行交流了, ROM指令共有5条,每一个工作周期只能发一条,ROM指令分别 是读ROM数据、指定匹配芯片、跳跃ROM、芯片搜索、报警芯 片搜索。ROM指令在下文有详细的介绍。
精选PPT课件
8
DS28B20芯片存储器操作指令表
Write Scratchpad (向RAM中写数据)[4EH] Read Scratchpad (从RAM中读数据)[BEH] Copy Scratchpad (将RAM数据复制到EEPROM中)
[48H] Convert T(温度转换)[44H] Recall EEPROM(将EEPROM中的报警值复制到
例如:+125℃的数字输出为 07D0H,+25.0625℃的数字输 出为 0191H,-25.0625℃的数字输出为 FF6FH,-55℃的数字输 出为 FC90H。
精选PPT课件
5
控制器对DS18B20操作流程
1. 复位:由单片机给DS18B20单总线500uS的低电平信号。当18B20 接到此复位信号后则会在15~60uS后回发一个芯片的存在脉冲。
DS18B20数字温度计的设计的演示稿精品PPT课件

(a) 寄生电源工作方式
(b) 外接电源工作方式
7. 结 论
本设计以智能集成温度传感DS18B20为例, 介绍了基DS18B20传感器的数字温度计的设计, 该设计适用于人们的日常生活及环境温度不高 于125 ℃的温度的检测与控制。
以DS18B20温度传感器设计的数字温度计线 路简单、硬件少、成本低廉、软件设计简单等 优点,有着广阔的应用前景。尤其是其具有完 善的单总线通信协议,无需复杂、繁琐的布线, 只需3 根连线就能很容易地组成多点测温系统, 因此在工农业生产和科学研究中有着广阔的应 用前景。
设计任务及具体要求
一、设计任务: 设计一个以单片机为核心的温度测量系统 。
二、 具体要求: (1)测量温度值精度为±1℃。 (2)系统允许的误差范围为1℃以内。 (3)系统可由用户预设温度值,测温范围为-55 ℃ ~+125℃。 (4)超出预置值时系统会自动报警,即发光二极管 亮。 (5)系统具有数码显示功能,能实时显示设定温度 值和测得的实际温度值。
按键显示流程图
结论
DS18B20
设计简述
人们生活与环境温度息息相关,在工业生产过程中 需要实时测量温度,在工业生产中也离不开温度的测 量,因此研究温度的测量方法和控制具有重要的意义。
测量温度的关键是温度传感器,温度传感器的发展 经历了3个阶段:传统的分立式温度传感器、模拟集 成温度传感器、智能集成温度传感器。目前,国际上 新型温度传感器正从模拟式向数字式、从集成化向智 能化、网络化的方向发展。在此以智能集成温度传感 器DS18B20为例 ,介绍DS18B20数字温度计的设计。
表1
段名称 a b c d e f g dp
I/0 口名称 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
最新DS18B20使用教程教学讲义PPT
DS18B20 单线通信功能是分时完成的,他有严格的时隙概念,如果出现序列混乱, 1-WIRE 器件将不响应主机,因此读写时序很重要。系统对 DS18B20 的各种操作必 须按协议进行。根据 DS18B20 的协议规定,微控制器控制 DS18B20 完成温度的转 换必须经过以下 4 个步骤 : (1)每次读写前对 DS18B20 进行复位初始化。复位要求主 CPU 将数据线 下拉 500us ,然后释放, DS18B20 收到信号后等待 16us~60us 左右,然后发出 60us~240us 的存在低脉冲,主 CPU 收到此信号后表示复位成功。 (2)发送一条 ROM 指令
主机首先发出一个480-960微秒的低电平脉冲,然后释放总线变为高电平,并在随后 的480微秒时间内对总线进行检测,如果有低电平出现说明总线上有器件已做出应答。 若无低电平出现一直都是高电平说明总线上无器件应答。
做为从器件的DS18B20在一上电后就一直在检测总线上是否有480-960微秒的低 电平出现,如果有,在总线转为高电平后等待15-60微秒后将总线电平拉低60-240微 秒做出响应存在脉冲,告诉主机本器件已做好准备。若没有检测到就一直在检测等待。
温度的低八位数据 温度的高八位数据 高温阀值 低温阀值 保留 保留 计数剩余值 每度计数值 CRC 校验
0 1 2 3 4 5 6 7 8
DS18B20的工作时序
DS18B20的一线工作协议流程是:
初始化→ROM操作指令→存储器操作指令→数据传输。
其工作时序包括:
初始化时序
写时序
读时序
初始化时序
对于读数据操作时序也分为读0时序和读1时序两个过程。读时隙是从主机把单总线拉 低之后,在1微秒之后就得释放单总线为高电平,以让DS18B20把数据传输到单总 线上。DS18B20在检测到总线被拉低1微秒后,便开始送出数据,若是要送出0就把 总线拉为低电平直到读周期结束。若要送出1则释放总线为高电平。主机在一开始 拉低总线1微秒后释放总线,然后在包括前面的拉低总线电平1微秒在内的15微秒时 间内完成对总线进行采样检测,采样期内总线为低电平则确认为0。采样期内总线 为高电平则确认为1。完成一个读时序过程,至少需要60us才能完成
《单片机》教学课件DS18B20单总线数字温度传感器
复位
上拉数据线 下拉数据线 主机发出延时500微秒的复位低脉冲 拉高数据线 延时60us等待DS18B20回应 ;flag=0,18B20不存在 ;flag=1,18B20存在 上拉数据线
6
写时序
下拉数据线 延时15微秒 读一位数据 延时45us 上拉数据线 循环8次,写8位数据
7
读时序
上拉数据线 下拉数据线 上拉数据线 延时15微秒 读一位数据 延时45us 循环16次,读取16位数据
8
DS18B20单总线数字温度传感 器
1
一
DS18B20管脚、接口电路
二
读DS18B20温度
三
复位时序
四
写3
接口电路
4
读温度流程
复位 判断18B20是否存在 写CCH; 跳过ROM匹配 写44H;发出转换温度转换命令 复位 写CCH; 跳过ROM匹配 写BEH ;发出读温度命令 读数据
(完整word版)DS18B20水温控制系统+电路图程序
水温控制系统摘要:该水温控制系统采用单片机进行温度实时采集与控制。
温度信号由“一线总线”数字化温度传感器DS18B20提供,DS18B20在-10~+85°C范围内,固有测温分辨率为0.5 ℃。
水温实时控制采用继电器控制电热丝和风扇进行升温、降温控制.系统具备较高的测量精度和控制精度,能完成升温和降温控制。
关键字:AT89C51 DS18B20 水温控制Abstract: This water temperature control system uses the Single Chip Microcomputer to carry on temperature real-time gathering and controling。
DS18B20,digitized temperature sensor, provides the temperature signal by "a main line”. In -10~+85℃the scope,DS18B20’s inherent measuring accuracy is 0.5 ℃. The water temperature real-time control system uses the electricity nichrome wire carring on temperature increiseament and operates the electric fan to realize the temperature decrease control。
The system has the higher measuring accuracy and the control precision,it also can complete the elevation of temperature and the temperature decrease control. Key Words:AT89C51 DS18B20 Water temperature control目录1.系统方案选择和论证 (2)1。
DS18B20温度传感器详解带c程序
00A2H
+0.5
0000 0000 0000 000
0000H
-0.5
1111 1111 1111 1000
FFF8H
-10.125
1111 1111 0110 1110
FF5EH
-25.0625
1111 1110 0110 1111
FF6FH
-55 执行序列与介绍 3.1 执行序列
duan=1; switch(i) {
case 0: if(zf==0) P1=numfh[zf];
else if(bai!=0) P1=numd[bai]; else if(shi!=0) P1=numd[shi]; else P1=numdg[ge]; break;
case 1: if(zf==0&&shi!=0) P1=numd[shi];
表 3.2 DS18B20 温度/数字对应关系表
温度(℃)
输出的二进制码
对应的十六进制码
+125
0000 0111 1101 0000
07D0H
+85
0000 0101 0101 0000
0550H
+25.0625
0000 0001 1001 0001
0191H
+10.125
0000 0000 1010 0010
uchar x,y; for(x=z;x>0;x--)
for(y=110;y>0;y--); } /******************15us 延时函数****************/ void delay(uint z) {
while(z--); } /******************初始化 DS18B20 函数****************/ void reset_ds18b20() {