温度传感器.ppt
关于温度传感器课件关于温度传感器课件现在学习的是第1页,共17页温度传感器DS18B20DS18B20 的管脚排列如图:n nDQ 为数字信号输入/输出端;n nGND 为电源地;n nVDD 为外接供电电源输入端(在寄生电源接线方式时接地)。现在学习的是第2页,共17页DS18B20 内部结构主要由四部分组成:n n64 位光刻 ROM、n n温度传感器、n n非挥发的温度报警触发器 TH 和 TL、n n配置寄存器。温度传感器DS18B20现在学习的是第3页,共17页 DS18B20 中的温度传感器可完成对温度的测量,以 12 位转化为例:用 16 16 位符号扩展的二进制补码读数形式提供,以0.0625/LSB形式表达,其中形式表达,其中S为符号位。为符号位。LS Byte:MS Byte:BitBit7 7BitBit6 6BitBit5 5BitBit4 4BitBit3 3BitBit2 2BitBit1 1BitBit0 02 23 32 22 22 21 12 20 02 2-1-12 2-2-22 2-3-32 2-4-4BitBit1 15 5BitBit1 14 4BitBit1 13 3BitBit1 12 2BitBit1 11 1BitBit1 10 0BitBit9 9BitBit8 8S SS SS SS SS S2 26 62 25 52 24 4温度传感器温度传感器DS18B20现在学习的是第4页,共17页 这是这是 12 12 位转化后得到的位转化后得到的 12 12 位数据,存储在位数据,存储在 18B20 18B20 的两个的两个 8 8 比特比特的的 RAM RAM 中,二进制中的前面中,二进制中的前面 5 5 位是符号位,如果测得的温度大于位是符号位,如果测得的温度大于 0 0,这,这 5 5 位为位为 0 0,只要将测到的数值乘于,只要将测到的数值乘于 0.0625 0.0625 即可得到实际温度;如果即可得到实际温度;如果温度小于温度小于 0 0,这,这 5 5 位为位为 1 1,测到的数值需要取反加,测到的数值需要取反加 1 1 再乘于再乘于 0.0625 0.0625 即可即可得到实际温度。得到实际温度。Bit7Bit7Bit6Bit6Bit5Bit5Bit4Bit4Bit3Bit3Bit2Bit2Bit1Bit1Bit0Bit02 23 32 22 22 21 12 20 02 2-1-12 2-2-22 2-3-32 2-4-4Bit15Bit15Bit14Bit14Bit13Bit13Bit12Bit12Bit11Bit11Bit10Bit10Bit9Bit9Bit8Bit8S SS SS SS SS S2 26 62 25 52 24 4 例如:例如:+125+125的数字输出为的数字输出为 07D0H07D0H,+25.0625+25.0625的数字输出为的数字输出为 0191H0191H,-25.0625-25.0625的数字输出为的数字输出为 FF6FHFF6FH,-55-55的数字输出为的数字输出为 FC90HFC90H。现在学习的是第5页,共17页控制器对控制器对DS18B20操作流程操作流程 1.1.复位:由单片机给复位:由单片机给DS18B20DS18B20单总线单总线500uS500uS的低电平信号。当的低电平信号。当18B2018B20接到此复接到此复位信号后则会在位信号后则会在1560uS1560uS后回发一个芯片的存在脉冲。后回发一个芯片的存在脉冲。2.2.存在脉冲:在复位电平结束之后,控制器应该将数据单总线拉高,以存在脉冲:在复位电平结束之后,控制器应该将数据单总线拉高,以便于在便于在1560uS1560uS后接收存在脉冲,存在脉冲为一个后接收存在脉冲,存在脉冲为一个60240uS60240uS的低电平信号。的低电平信号。3.3.控制器发送控制器发送ROMROM指令:双方打完了招呼之后最要将进行交流了,指令:双方打完了招呼之后最要将进行交流了,ROMROM指令共有指令共有5 5条,每一个工作周期只能发一条,条,每一个工作周期只能发一条,ROMROM指令分别是读指令分别是读ROMROM数数据、指定匹配芯片、跳跃据、指定匹配芯片、跳跃ROMROM、芯片搜索、报警芯片搜索。、芯片搜索、报警芯片搜索。ROMROM指指令在下文有详细的介绍。令在下文有详细的介绍。4.4.控制器发送存储器操作指令:在控制器发送存储器操作指令:在ROMROM指令发送给指令发送给18B2018B20之后,紧接着之后,紧接着(不间断)就是发送存储器操作指令了。存储器操作指令的功能是命令(不间断)就是发送存储器操作指令了。存储器操作指令的功能是命令18B2018B20作什么样的工作,是芯片控制的关键。作什么样的工作,是芯片控制的关键。5.5.执行或数据读写:一个存储器操作指令结束后则将进行指令执行或数执行或数据读写:一个存储器操作指令结束后则将进行指令执行或数据的读写,这个操作要视存储器操作指令而定。如执行温度转换指令据的读写,这个操作要视存储器操作指令而定。如执行温度转换指令则控制器(单片机)必须等待则控制器(单片机)必须等待18B2018B20执行其指令,一般转换时间为执行其指令,一般转换时间为500uS500uS。如执行数据读写指令则需要严格遵循。如执行数据读写指令则需要严格遵循18B2018B20的读写时序来操作。的读写时序来操作。现在学习的是第6页,共17页控制器对控制器对DS18B20操作流程操作流程 若要读出当前的温度数据我们需要执行两次工作周期,n n第一个周期为复位、跳过ROM指令、执行温度转换存储器操作指令、等待500uS温度转换时间。n n紧接着执行第二个周期为复位、跳过ROM指令、执行读RAM的存储器操作指令、读数据(最多为9个字节,中途可停止,只读简单温度值则读前2个字节即可)。现在学习的是第7页,共17页DS28B20芯片芯片ROM指令表指令表 n nRead ROM(读ROM)33H(方括号中的为16进制的命令字)n nMatch ROM(指定匹配芯片)55Hn nSkip ROM(跳跃ROM指令)CCHn nSearch ROM(搜索芯片)F0Hn nAlarm Search(报警芯片搜索)ECH现在学习的是第8页,共17页DS28B20芯片存储器操作指令表芯片存储器操作指令表 n nWrite Scratchpad Write Scratchpad(向RAMRAM中写数据)中写数据)4EH4EHn nRead Scratchpad Read Scratchpad(从RAMRAM中读数据)中读数据)BEHBEHn nCopy Scratchpad Copy Scratchpad(将RAM数据复制到EEPROMEEPROM中)48H48Hn nConvert TConvert T(温度转换)44H44Hn nRecall EEPROM(将(将EEPROM中的报警值复制到RAM)B8Hn nRead Power SupplyRead Power Supply(工作方式切换)B4HB4H现在学习的是第9页,共17页DS18B20写时间隙写时间隙 写时间隙分为写写时间隙分为写“0”0”和写和写“1”1”,时序如图。在写数据时间隙的,时序如图。在写数据时间隙的前前15uS15uS总线需要是被控制器拉置低电平,而后则将是芯片对总线数据的总线需要是被控制器拉置低电平,而后则将是芯片对总线数据的采样时间,采样时间在采样时间,采样时间在1560uS1560uS,采样时间内如果控制器将总线拉高,采样时间内如果控制器将总线拉高则表示写则表示写“1”1”,如果控制器将总线拉低则表示写,如果控制器将总线拉低则表示写“0”0”。每一位的发。每一位的发送都应该有一个至少送都应该有一个至少15uS15uS的低电平起始位,随后的数据的低电平起始位,随后的数据“0”0”或或“1”1”应该应该在在45uS45uS内完成。整个位的发送时间应该保持在内完成。整个位的发送时间应该保持在60120uS60120uS,否则不,否则不能保证通信的正常。能保证通信的正常。现在学习的是第10页,共17页DS18B20读时间隙读时间隙 读时间隙时控制时的采样时间应该更加的精确才行,读时间隙时读时间隙时控制时的采样时间应该更加的精确才行,读时间隙时也是必须先由主机产生至少也是必须先由主机产生至少1uS1uS的低电平,表示读时间的起始。随后的低电平,表示读时间的起始。随后在总线被释放后的在总线被释放后的15uS15uS中中DS18B20DS18B20会发送内部数据位,这时控制如果发会发送内部数据位,这时控制如果发现总线为高电平表示读出现总线为高电平表示读出“1”1”,如果总线为低电平则表示读出数据,如果总线为低电平则表示读出数据“0”0”。每一位的读取之前都由控制器加一个起始信号。注意:如图所示,必须每一位的读取之前都由控制器加一个起始信号。注意:如图所示,必须在读间隙开始的在读间隙开始的15uS15uS内读取数据位才可以保证通信的正确。内读取数据位才可以保证通信的正确。现在学习的是第11页,共17页实验电路实验电路 现在学习的是第12页,共17页实验要求与任务实验要求与任务 本实验要求示例程序为读取本实验要求示例程序为读取 DS18B20 温度转换数据,温度转换数据,并在数码管上以十进制形式显示。并在数码管上以十进制形式显示。提示:这里用两位数码管来显示温度。显示范围0000到99度,显示精度为度,显示精度为1 1度。因为12位转化时每一位的精度为0.06250.0625度度,我们不要求显示小数所以可以抛弃低我们不要求显示小数所以可以抛弃低4 4位,将高位中的低4 4位和低位中的高4位合并获得一个新字节,这个字节就是实际测量获得的温度。这个转化温度的方法非常简洁无需乘于0.06250.0625系数 现在学习的是第13页,共17页实验流程图实验流程图 现在学习的是第14页,共17页DS18B20参考子程序1INIT_1820:;INIT_1820:;这是这是DS18B20DS18B20复位初始化子程序复位初始化子程序 SETB P1.0SETB P1.0 NOP NOP CLR P1.0 CLR P1.0 MOV R1,#3 ;MOV R1,#3 ;主机发出延时复位低脉冲主机发出延时复位低脉冲TSR1:MOV R0,#163TSR1:MOV R0,#163 DJNZ R0,$DJNZ R0,$DJNZ R1,TSR1 DJNZ R1,TSR1 SETB P1.0 ;SETB P1.0 ;然后拉高数据线然后拉高数据线 NOPNOP NOP NOP NOP NOP MOV R0,#25H MOV R0,#25HTSR2:JNB P1.0,TSR3 ;TSR2:JNB P1.0,TSR3 ;等待等待DS18B20DS18B20回应回应 DJNZ R0,TSR2DJNZ R0,TSR2 LJMP TSR4 ;LJMP TSR4 ;延时延时TSR3:SETB FLAG1 ;TSR3:SETB FLAG1 ;置标志位置标志位,表示表示DS1820DS1820存在存在 LJMP TSR5LJMP TSR5TSR4:CLR FLAG1 ;TSR4:CLR FLAG1 ;清标志位清标志位,表示表示DS1820DS1820不存在不存在 LJMP TSR7LJMP TSR7TSR5:MOV R0,#117TSR5:MOV R0,#117TSR6:DJNZ R0,TSR6 ;TSR6:DJNZ R0,TSR6 ;时序要求延时一段时间时序要求延时一段时间TSR7:SETB P1.0TSR7:SETB P1.0 RET RET现在学习的是第15页,共17页DS18B20参考子程序2WRITE_1820:;WRITE_1820:;写写DS18B20DS18B20的子程序的子程序(有具体的时序要求有具体的时序要求)MOV R2,#8 ;MOV R2,#8 ;一共一共8 8位数据位数据 CLR CCLR CWR1:CLR P1.0WR1:CLR P1.0 MOV R3,#6 MOV R3,#6 DJNZ R3,$DJNZ R3,$RRC A RRC A MOV P1.0,C MOV P1.0,C MOV R3,#23 MOV R3,#23 DJNZ R3,$DJNZ R3,$SETB P1.0 SETB P1.0 NOP NOP DJNZ R2,WR1 DJNZ R2,WR1 SETB P1.0 SETB P1.0 RET RET现在学习的是第16页,共17页27.09.2022感感谢谢大大家家观观看看现在学习的是第17页,共17页