基于51单片机及DS18B20温度传感器的数字温度计设计 联系客服

发布时间 : 星期六 文章基于51单片机及DS18B20温度传感器的数字温度计设计更新完毕开始阅读

换命令。适用于单片工作。 告警搜索命令 温度变换 0x44 0xEC 执行后只有温度超过设定值上限或下限的片子才做出响应。 启动DS1820进行温度转换,12位转换时最长为750ms(9位为93.75ms)。结果存入内部9字节RAM中。 读暂存器 写暂存器 0xBE 0x4E 读内部RAM中9字节的内容 发出向内部RAM的3、4字节写上、下限温度数据命令,紧跟该命令之后,是传送两字节的数据。 复制暂存器 重调 EEPROM 读供电方式 0xB4 读DS1820的供电模式。寄生供电时DS1820发送“ 0 ”,外接电源供电 DS1820发送“ 1 ”。 3.1.3 DS18B20传感器的初始化时序

DS18B20传感器为单总线结构器件,在读写操作之前,传感器芯片应先进性复位操作也就是初始化操作。

DS18B20的初始化时序如图3-2所示。首先控制器拉高数据总线,接着控制器给数据总线一低电平,延时480μs,控制器拉高数据总线,等待传感器给数据线一个60-240μs的低电平,接着上拉电阻将数据线拉高,这样才初始化完成。

0x48 0xB8 将RAM中第3 、4字节的内容复制到EEPROM中。 将EEPROM中内容恢复到RAM中的第3 、4字节。 图3-2 DS18B20初始化时序

3.1.4 DS18B20传感器的读写时序 1.写时序

DS18B20传感器的读写操作是在传感器初始化后进行的。每次操作只能读写一位。 当主机把数据线从高电平拉至低电平,产生写时序。有两种类型的写时序:写“0”时序,写“1”时序。所有的时序必须有最短60μs的持续期,在各个写周期之间必须有最短1μs的恢复期。

在数据总线由高电平变为低电平之后,DS18B20在15μs至60μs的时间间隙对总线采样,如果为“1”则向DS18B20写“1”, 如果为“0”则向DS18B20写“0”。如图3-2的上半部分。

对于主机产生写“1”时序时,数据线必须先被拉至低电平,然后被释放,使数据线在写时序开始之后15μs内拉至高电平。

对于主机产生写“1”时序时,数据线必须先被拉至低电平,且至少保持低电平60μs。 2.读时序

在数据总线由高电平变为低电平之后,数据线至少应保持低电平1μs,来自DS18B20的输出的数据在下降沿15μs后有效,所以在数据线保持低电平1μs之后,主机将数据线拉高,等待来自DS18B20的数据变化,在下降沿15μs之后便可开始读取DS18B20的输出数据。整个读时序必须有最短60μs的持续期。如图3-2的下半部分。读时序结束后数据线由上拉电阻拉至高电平。

图3-3 DS18B20传感器的读写时序

3.1.5 DS18B20获取温度程序流程图

DS18B20的读字节,写字节,获取温度的程序流程图如图3-3所示。

开始DQ=1DQ=0延时480μsDQ=1YDQ=1N延时80μsDQ=1结束DS18B20初始化程序流程图开始DS18B20初始化写0xcc跳过读ROM写0x44启动DS18B20延时500μsDS18B20初始化写0xcc跳过读ROM写0xbe读DS18B20结束DS18B20获取温度程序流程图3.2 显示程序设计

开始d=1DQ=1i=8Ni>0Yd >>= 1DQ=0延时2μsDQ=1NDQ=1Yd |= 0x80延时60μsi--return d结束DS18B20读字节程序流程图3-4 DS18B20程序流程图开始i=8Ni>0YDQ=0延时2μsDQ=d&0x01延时30μs延时DQ=160μsd >>= 1i--结束DS18B20写字节程序流程图

显示电路是由四位一体的数码管来实现的。由于单片机的I/O口有限,所以数码管采用动态扫描的方式来进行显示。程序流程图如图3-4所示。

开始i=0Ni<4Y根据i的值进行选择i=0i=1点亮第一个数码管点亮第二个数码管i=2点亮第三个数码管点亮第四个数码管i=3i++结束图3-5 显示程序流程图

3.3 按键程序设计

按键是用来设定上下限报警温度的。具体的程序流程图如图3-5所示。

开始NK1=0YS=0调上限S=1调下限NK1=0YTemp++YTemp--K1=0N结束图3-6 按键程序流程图