DSB温传感器的设计 .docx

上传人:C****o 文档编号:13039218 上传时间:2022-04-27 格式:DOCX 页数:27 大小:90.37KB
返回 下载 相关 举报
DSB温传感器的设计 .docx_第1页
第1页 / 共27页
DSB温传感器的设计 .docx_第2页
第2页 / 共27页
点击查看更多>>
资源描述

《DSB温传感器的设计 .docx》由会员分享,可在线阅读,更多相关《DSB温传感器的设计 .docx(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精品名师归纳总结封面可编辑资料 - - - 欢迎下载精品名师归纳总结作者: PanHongliang仅供个人学习学习情境 4- 温度传感器的设计之 基于 DS18B20温度传感器的设计 点名,引言可编辑资料 - - - 欢迎下载精品名师归纳总结Dallas公司的数字化温度传感器 DS1820是世界上第一片支持 一线总线 接口的温度传感器。一线总线特殊而且经济的特点,使用户可轻松的组建传感器网络,为测量系统的构建引入全新概念。其测量温度范畴为-55 C+125 C,在-10 +85 C 范畴内,精度为 0.5 C。现场温度直接以 一线总线 的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境

2、的现场温度测量,如:环境把握、设备或过程把握、测温类消费电子产品等。DS18B20可以程序设定 9 12位的辨论率,精度为 0.5 C。可选更小的封装方式,更宽的电压适用范畴。辨论率设定,及用户设定的报警温度储备在 EEPROM 中,掉电后照旧储存。 DS18B20的性能是新一代产品中最好的!性能价格比也特殊杰出!省略了储备用户定义报警温度、辨论 率参数的 EEPROM,精度降低为 2 C,适用于对性能要求不高,成本把握严格的应用,是经济型产品。 新课讲授4.1 基于 DS18B20 温度传感器的设计表4.1.1 1 DS18B20技术资料1. DS18B20 的新性能1 可用数据线供电,电压

3、范畴: 3.0-5.5V 。2 测温范畴: -55 - +125,在-10 - +85时精度为 0.5 。(3) 可编程的辨论率为 912 位,对应的可辨论温度分别为 0.5 、0.25 、0.125 和 0.0625 。(4) 12 位辨论率时最多在 750ms 内把温度值转换为数字。可编辑资料 - - - 欢迎下载精品名师归纳总结(5) 负压特性:电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。2. DS18B20的外形和内部结构DS18B20 内部结构主要由四部分组成: 64 位光刻 ROM 、温度传感器、非挥发的温度报警触发器 TH 和 TL、配置寄存器。 DS18B20 的管

4、脚排列如下 :图 4-1-1DS18B20外形图引脚定义:(1) DQ 为数字信号输入 / 输出端。(2) GND 为电源的。(3) VDD 为外接供电电源输入端(在寄生电源接线方式时接的)。内部结构:图 4-1-2DS18B20内部结构图DS18B20 有 4 个主要的数据部件:(1) )光刻 ROM 中的 64 位序列号是出厂前被光刻好的,它可以看作是该D S18B20 的的址序列码。 64 位光刻 ROM 的排列是:开头 8 位( 28H )是产品类型标号,接着的 48 位是该 DS18B20 自身的序列号,最终 8 位是前面 56 位的循环冗余校验码( CRC=X8+X5+X4+1)。

5、光刻 ROM 的作用是使每一个 D S18B20 都各不相同,这样就可以实现一根总线上挂接多个DS18B20 的目的。(2) ) DS18B20 中的温度传感器可完成对温度的测量,以12 位转化为例: 用 16 位符号扩展的二进制补码读数形式供应,以0.0625 /LSB 形式表达,其中 S 为符号位。可编辑资料 - - - 欢迎下载精品名师归纳总结表 1 DS18B20温度值格式表这是 12 位转化后得到的 12 位数据,储备在 18B20 的两个 8 比特的 RAM 中,二进制中的前面 5 位是符号位,假如测得的温度大于0,这 5 位为 0 ,只要将测到的数值乘于 0.0625 即可得到实

6、际温度。假如温度小于0 ,这 5 位为1,测到的数值需要取反加 1 再乘于 0.0625 即可得到实际温度。例如+125 的数字输出为 07D0H ,+25.0625 的数字输出为 0191H ,- 25.0625 的数字输出为 FF6FH,-55 的数字输出为 FC90H 。(3) ) DS18B20 温度传感器的储备器DS18B20 温度传感器的内部储备器包括一个高速暂存 RAM 和一个非易失性的可电擦除的 EEPRAM,后者存放高温度和低温度触发器 TH、TL 和结构寄存器。(4) )配置寄存器该字节各位的意义如下:低五位始终都是 1 , TM 是测试模式位,用于设置 DS18B20在工

7、作模式仍是在测试模式。在 DS18B20出厂时该位被设置为0,用户不要去改动。 R1 和R0 用来设置辨论率,如下表所示:( DS18B20 出厂时被设置为 12 位)TMR1R011111表 2配置寄存器结构表 3温度值辨论率设置表R1R0辨论率温度最大转换时间009 位93.75ms0110 位187.5ms1011 位375ms1112 位750ms可编辑资料 - - - 欢迎下载精品名师归纳总结3. 高速暂储备备器高速暂储备备器由 9 个字节组成,其支配如表 5 所示。当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂储备备器的第0 和第 1 个字节。单片机可通过单线

8、接口读到该数据,读取时低位在前,高位在后,数据格式如表 1 所示。对应的温度运算:当符号位S=0 时,直接将二进制位转换为十进制。当 S=1 时,先将补码变为原码,再运算十进制值。表2 是对应的一部分温度值。第九个字节是冗余检验字节。表 4 DS18B20暂存寄存器分布寄存器内容字节的址温度值低位0温度值高位1高温限值 TH2低温限值 TL3配置寄存器4保留5保留6保留7CRC 检验8依据 DS18B20 的通讯协议,主机把握DS18B20 完成温度转换必需经过三个步骤:每一次读写之前都要对DS18B20 进行复位,复位成功后发送一条ROM 指令,最终发送 RAM 指令,这样才能对 DS18B

9、20 进行预定的操作。复位要求主 CPU 将数据线下拉 500 微秒,然后释放, DS18B20 收到信号后等待16 60 微秒左右,后发出 60 240 微秒的存在低脉冲,主 CPU 收到此信号表示复位成功。指 令商定代码表 5 ROM指令表功 能读 ROM33H读 DS1820ROM中的编码(即 64 位的址)符合 ROM55H发出此命令之后,接着发出64 位 ROM 编码,拜望单总线可编辑资料 - - - 欢迎下载精品名师归纳总结上与该编码相对应的DS1820使之作出响应,为下一步对该 DS1820的读写作预备。用于确定挂接在同一总线上DS1820的个数和识别 64位搜寻 ROM0F0H

10、ROM 的址。为操作各器件作好预备。忽视 64位 ROM的址,直接向DS1820发温度变换命跳过 ROM0CCH令。适用于单片工作。执行后只有温度超过设定值上限或下限的片子才做出响告警搜寻命令0ECH应。表 6 RAM指令表指 令商定代码功 能启动 DS1820进行温度转换,转换时最长为500ms(典温度变换44H型为 200ms)。结果存入内部 9 字节 RAM 中。读暂存器0BEH内部 RAM 中 9 字节的内容发出向内部 RAM 的 3 、4 字节写上、下限温度数据命令,写暂存器4EH紧跟该命令之后,是传送两字节的数据。复制暂存器48H将 RAM 中第 3 、4 字节的内容复制到 EEP

11、ROM 中。重调 EEPROM0B8H将 EEPROM 中内容复原到 RAM 中的第 3、4 字节。读 DS1820的供电模式。寄生供电时DS1820发送“0”,读供电方式0B4H外接电源供电 DS1820发送“1”。5. DS1820使用中留意事项DS1820 虽然具有测温系统简洁、测温精度高、连接便利、占用口线少等优点,但在实际应用中也应留意以下几方面的问题:(1) 较小的硬件开销需要相对复杂的软件进行补偿,由于DS1820 与微处理器间接受串行数据传送,因此,在对DS1820 进行读写编程时,必需严格的保证读写时序,否就将无法读取测温结果。在使用PL/M 、C 等高级语言进行系统程序设计

12、时,对 DS1820 操作部分最好接受汇编语言实现。(2) 在 DS1820 的有关资料中均未提及单总线上所挂DS1820 数量问题, 简洁使人误认为可以挂任意多个DS1820 ,在实际应用中并非如此。当单总线上所挂 DS1820 超过 8 个时,就需要解决微处理器的总线驱动问题,这一点在进行多点测温系统设计时要加以留意。可编辑资料 - - - 欢迎下载精品名师归纳总结(3) 连接 DS1820 的总线电缆是有长度限制的。试验中,当接受一般信号电缆传输长度超过 50m 时,读取的测温数据将发生错误。当将总线电缆改为双绞线带屏蔽电缆时,正常通讯距离可达150m ,当接受每 M 绞合次数更多的双绞

13、线带屏蔽电缆时,正常通讯距离进一步加长。这种情形主要是由总线分布 电容使信号波形产生畸变造成的。因此,在用DS1820 进行长距离测温系统设计时要充分考虑总线分布电容和阻抗匹配问题。(4) 在 DS1820 测温程序设计中,向 DS1820 发出温度转换命令后,程序总要等待 DS1820 的返回信号,一旦某个 DS1820接触不好或断线,当程序读该 DS1820 时,将没有返回信号,程序进入死循环。这一点在进行DS1820 硬件连接和软件设计时也要赐予确定的重视。测温电缆线建议接受屏蔽4 芯双绞线,其中一对线接的线与信号线,另一组接 VCC 和的线,屏蔽层在源端单点接的。4.1.2 2 系统硬

14、件设计硬件结构比较简洁,具体连接如图4-1-3所示:图 4-1-3硬件系统结构4.1.3 软件系统设计DSl8B20 必需严格依据单总线通信协议,以保证数据的完整性。该协议定义了几种时隙类型:初始化、应答、写1 、写 0、读 1 、读 0 。除了应答时隙全部这些时隙都是有主机发出。总线上所传输的全部命令和数据都是字节的低位在前。(1) )初始化时隙可编辑资料 - - - 欢迎下载精品名师归纳总结复位时隙和应答时隙。在初始化过程中,主机发送复位脉冲最短为 480 s的低电平信号 接着,释放总线并进入接收状态。当总线被释放后上拉电阻将总线拉高。 DSl8B20 在检测到总线的上升沿之后等待15-6

15、0us接着发出应答脉冲低电平连续 60-240s。(2) )读和写时隙在写时隙期间,主机向 DS18B20 写入数据。而在读时隙期间,主机读入来自 DS18B20 的数据。在每一个时隙,总线只能传输一位数据。存在两种写时隙,即写 1 和写 0。主机在写 1 时隙向 DS18B20 写入规律1。而在写 0 时隙向 DS18B20 写入规律 0。全部写时隙至少需要60 S,而且两次写 l 时隙之间至少需要 lS 的复原时间。两种写时隙均以主机拉低总线开 始。产生写 1 时隙:主机拉低总线后,必需在15uS 内释放总线。然后由上拉电阻将总线拉至高电平。产生写 0 时隙:主机拉低总线后,必需在整个时隙

16、期间保持低电平至少60 S)。在写时隙开头后的 1 5 60 S 期间, DSl8B20 采样总线的状态。假如总线为高电,就规律 1 被写入 DSl8B20 。假如总线为低电平,就 0 规律被写入DSl8B20 。读时隙: DSl8B20 只能在主机发出读时隙时才能向主机传送数据。所以主机在发出读数据命令后,必需马上产生读时隙,以便DSl8B20 能够传送数据。全部读时隙至少 60 s,且在两次独立的读时隙之间至少需要1S 的复原时 间。可编辑资料 - - - 欢迎下载精品名师归纳总结每次读时隙由主机发起,拉低总线至少1S。在主机发起读时隙之后, DSl8B20 开头在总线上传送 1 或 0

17、。如 DS18B20 发送 1,就保持总线为高电平。如发送 O,就拉低总线。当传送0 时, DSl8B20 在该时隙终止时释放总线,再由上拉电阻将总线拉回闲暇高电平状态。DS18B20 发出的数据在读时隙下降沿起始后的 1 5uS 内有效,因此主机必需在读时隙开头后的15 S 内释放总线,并且采样总线状态。其程序流程图如下图所示。图 4-1-3DS18B20程序流程所以在软件设计方面,我们主要是读取温度函数和温度显示函数的编写。1、读取温度函数图 4-1-4 读温度子程序流程图图 4-1-5 温度转换子程序流程图void Read_TemperatureifInit_DS18B20=1 /DS

18、18B20故障DS18B20_IS_OK=0 。elseWriteOneByte0xcc。/ 跳过读取 DS18B20 的系列号WriteOneByte0x44。/ 启动温度转换Init_DS18B20 。WriteOneByte0xcc。/ 跳过读取 DS18B20 的系列号可编辑资料 - - - 欢迎下载精品名师归纳总结WriteOneByte0xbe。/读取温度寄存器Temp_Value0 = ReadOneByte。/ 温度低 8 位Temp_Value1 = ReadOneByte。/ 温度高 8 位DS18B20_IS_OK=1 。上述代码中,未读取 DS18B20 的系列号。2、

19、温度显示函数void Display_Temperatureuchar i 。/ 延时值和负数标志uchar t = 150, ng = 0。/ 高 5 位全为 1(0XF8 )就为负数,为负数时取反加1,并设置负数标识ifTemp_Value1&0xf8=0xf8Temp_Value1 = Temp_Value1。Temp_Value0 = Temp_Value0+1。ifTemp_Value0=0x00Temp_Value1+。/ 负数标识置 1可编辑资料 - - - 欢迎下载精品名师归纳总结ng = 1 。/ 查表得到温度小数部分Display_Digit0 = df_TableTemp

20、_Value0&0x0f。/ 猎取温度整数部分(高字节中的低3 位和低字节中高 4 位,无符号)CurrentT=Temp_Value0&0xf04| Temp_Value1&0x074。/ 将整数部分分解为 3 位待显示的显示数字Display_Digit3 = CurrentT/100。Display_Digit2 = CurrentT%100/10。Display_Digit1 = CurrentT%10。/ 刷新 LCD 显示缓冲Current_Temp_Display_Buffer11 = Display_Digit0 + 0。Current_Temp_Display_Buffer1

21、0 = .。Current_Temp_Display_Buffer9 = Display_Digit1 + 0。Current_Temp_Display_Buffer8 = Display_Digit2 + 0。Current_Temp_Display_Buffer7 = Display_Digit3 + 0。/ 高位为零时不显示ifDisplay_Digit3 = 0Current_Temp_Display_Buffer7 = 。ifDisplay_Digit2 = 0&Display_Digit3=0可编辑资料 - - - 欢迎下载精品名师归纳总结Current_Temp_Display_

22、Buffer8 = 。/ 负数符号显示在恰当的位置ifngifCurrent_Temp_Display_Buffer8 = Current_Temp_Display_Buffer8 = -。else ifCurrent_Temp_Display_Buffer7 = Current_Temp_Display_Buffer7 = -。elseCurrent_Temp_Display_Buffer6 = -。/ 在第一行显示标题Set_LCD_POS0x00 。fori=0 。i16 。i+Write_LCD_DataTemp_Disp_Titlei。/ 在其次行显示当前温度Set_LCD_POS0

23、x40 。fori=0 。i16 。i+Write_LCD_DataCurrent_Temp_Display_Bufferi。可编辑资料 - - - 欢迎下载精品名师归纳总结/ 显示温度符号Set_LCD_POS0x4D 。Write_LCD_Data0x00。Set_LCD_POS0x4E 。Write_LCD_DataC。 课堂小结这节课我们主要介绍了温度传感器DS18B20的工作特点,把握指令以及应用方法。着重分析了读取温度函数的设计和温度显示函数的编写。为我们学习其他温度传感器打下了确定的基础。 完整程序代码#include #include #define uint unsigned

24、 int#define uchar unsigned char#define delayNOP _nop_。_nop_ 。_nop_ 。_nop_ 。 sbit DQ = P33。sbit LCD_RS = P20。sbit LCD_RW = P21。sbit LCD_EN = P22。uchar code Temp_Disp_Title=CurrentTempzxb。uchar Current_Temp_Display_Buffer= Temp = 。可编辑资料 - - - 欢迎下载精品名师归纳总结/ 温度字符uchar code Temperature_Char8 = 0x0c,0x12,

25、0x12,0x0c,0x00,0x00,0x00,0x00。/ 温度小数位对比表uchar code df_Table=0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9。uchar CurrentT = 0。/ 当前读取的温度整数部分uchar Temp_Value=0x00,0x00。/从 DS18B20读取的温度值uchar Display_Digit=0,0,0,0。 / 待显示的各温度数位bit DS18B20_IS_OK = 1。 /传感器正常标志void DelayXusuint xuchar i 。whilex-fori=0。i200 。i+ 。bit LCD_Bu

26、sy_Checkbit result。LCD_RS = 0 。LCD_RW = 1。LCD_EN = 1。可编辑资料 - - - 欢迎下载精品名师归纳总结delayNOP。result = bitP0&0x80。LCD_EN=0 。return result。void Write_LCD_Commanduchar cmdwhileLCD_Busy_Check。LCD_RS = 0 。LCD_RW = 0。LCD_EN = 0。_nop_ 。_nop_ 。P0 = cmd。delayNOP。LCD_EN = 1。delayNOP。LCD_EN = 0。void Write_LCD_Datauch

27、ar datwhileLCD_Busy_Check。可编辑资料 - - - 欢迎下载精品名师归纳总结LCD_RS = 1 。LCD_RW = 0。LCD_EN = 0。P0 = dat。delayNOP。LCD_EN = 1。delayNOP。LCD_EN = 0。void LCD_InitialiseWrite_LCD_Command0x01。DelayXus5。Write_LCD_Command0x38。DelayXus5。Write_LCD_Command0x0c。 DelayXus5。Write_LCD_Command0x06。DelayXus5。void Set_LCD_POSuch

28、ar posWrite_LCD_Commandpos|0x80。void Delayuint x可编辑资料 - - - 欢迎下载精品名师归纳总结while-x。uchar Init_DS18B20/初始化uchar status。DQ = 1。Delay8 。DQ = 0。Delay90。DQ = 1。Delay8 。status=DQ 。Delay100。DQ = 1。return status。uchar ReadOneByte/读一个字节uchar i,dat=0。 DQ = 1。_nop_ 。fori=0。i= 1。DQ = 1。_nop_ 。_nop_ 。ifDQdat |= 0X8

29、0。Delay30。DQ = 1。return dat。void WriteOneByteuchar dat /写一个字节uchar i 。fori=0。i= 1。可编辑资料 - - - 欢迎下载精品名师归纳总结void Read_Temperature/读取温度ifInit_DS18B20=1 /DS18B20 DS18B20_IS_OK=0。else故障WriteOneByte0xcc。/ 跳过读取 DS18B20的系列号WriteOneByte0x44。/ 启动温度转换Init_DS18B20。WriteOneByte0xcc。/ 跳过读取 DS18B20的系列号WriteOneByte

30、0xbe。/读取温度寄存器Temp_Value0 = ReadOneByte 。 / 温度低 8 位Temp_Value1 = ReadOneByte 。 / 温度高 8 位DS18B20_IS_OK=1 。void Display_Temperature/在 LCD 上显示当前温度uchar i 。/ 延时值和负数标志uchar t = 150, ng = 0。可编辑资料 - - - 欢迎下载精品名师归纳总结/ 高 5 位全为 1 ( 0XF8 )就为负数,为负数时取反加1 ,并设置负数标识ifTemp_Value1&0xf8=0xf8Temp_Value1 = Temp_Value1。Te

31、mp_Value0 = Temp_Value0+1。ifTemp_Value0=0x00Temp_Value1+。ng = 1。 / 负数标识置 1/ 查表得到温度小数部分Display_Digit0 = df_TableTemp_Value0&0x0f。/ 猎取温度整数部分(高字节中的低3 位和低字节中高 4 位,无符号)CurrentT = Temp_Value0&0xf04 | Temp_Value1&0x074。/ 将整数部分分解为3 位待显示的显示数字Display_Digit3 = CurrentT/100。Display_Digit2 = CurrentT%100/10。Disp

32、lay_Digit1 = CurrentT%10。/ 刷新 LCD 显示缓冲Current_Temp_Display_Buffer11 = Display_Digit0 + 0。Current_Temp_Display_Buffer10 = .。Current_Temp_Display_Buffer9 = Display_Digit1 + 0。Current_Temp_Display_Buffer8 = Display_Digit2 + 0。可编辑资料 - - - 欢迎下载精品名师归纳总结Current_Temp_Display_Buffer7 = Display_Digit3 + 0。/ 高

33、位为零时不显示ifDisplay_Digit3 = 0Current_Temp_Display_Buffer7 = 。ifDisplay_Digit2 = 0&Display_Digit3=0 Current_Temp_Display_Buffer8 = 。/ 负数符号显示在恰当的位置ifngifCurrent_Temp_Display_Buffer8 = Current_Temp_Display_Buffer8 = -。else ifCurrent_Temp_Display_Buffer7 = Current_Temp_Display_Buffer7 = -。elseCurrent_Temp

34、_Display_Buffer6 = -。/ 在第一行显示标题Set_LCD_POS0x00。fori=0。i16 。i+Write_LCD_DataTemp_Disp_Titlei。可编辑资料 - - - 欢迎下载精品名师归纳总结/ 在其次行显示当前温度Set_LCD_POS0x40。fori=0。i16 。i+Write_LCD_DataCurrent_Temp_Display_Bufferi。/ 显示温度符号Set_LCD_POS0x4D。Write_LCD_Data0x00。Set_LCD_POS0x4E。Write_LCD_DataC。void mainLCD_Initialise。

35、Read_Temperature。Delay50000。Delay50000。 while1Read_Temperature。ifDS18B20_IS_OK可编辑资料 - - - 欢迎下载精品名师归纳总结Display_Temperature。DelayXus100。版权申明本文部分内容,包括文字、图片、以及设计等在网上搜集整理。版权为潘宏亮个人全部This article includes some parts, including text, pictures, and design. Copyright is Pan Hongliangs personal ownership.用户可将本

36、文的内容或服务用于个人学习、争论或观看,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵害本网站及相关权益人的合法权益。除此以 外,将本文任何内容或服务用于其他用途时,须征得本人及相关权益人的书面许可,并支付酬劳。Users may use the contents or services of this article for personal study, research or appreciation, and other non-commercial or non-profit purposes, but at the same time, they

37、shall abide by the provisions of copyright law and other relevant laws, and shall not infringe upon the legitimate rights of this website and its relevant obligees. In addition, when any content or service of this可编辑资料 - - - 欢迎下载精品名师归纳总结article is used for other purposes, written permission and remu

38、neration shall be obtained from the person concerned and the relevant obligee.转载或引用本文内容必需是以新闻性或资料性公共免费信息为使用目的的合理、善意引用,不得对本文内容原意进行曲解、修 改,并自负版权等法律责任。Reproduction or quotation of the content of this article must be reasonable and good-faith citation for the use of news or informative public free information. It shall not misinterpret or modify the original intention of the content of this article, and shall bear legal liability such as copyright.可编辑资料 - - - 欢迎下载

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁