历史上的今天
返回首页

历史上的今天

今天是:2025年08月15日(星期五)

正在发生

2019年08月15日 | 单片机ds18b20的介绍和源码

2019-08-15 来源:eefocus

DS18B20温度模块


1.1模块特征:


 

供电方式 (两种供电方式:供电为:3— 5.5V)


 

DS18B20结构图


        

主要由2部分组成:64位ROM、9字节暂存器,如图所示


   (1)64位ROM。它的内容是64位序列号,它可以被看做是该DS18B20de地址序列码,


        其作用是使每个DS18B20都不相同,这样就可以实现一根总线上挂载多个DS18B20


        的目的。(由于实验条件,本次只在一根总线下挂载了一个DS18B20)。


   (2)9字节暂存器包含:温度传感器、上限触发TH高温报警器、下线触发TL低温报警


        器、高速暂存器、8位CRC产生器。


以上部分为9字节的暂存单元(包括EEPROM)。



字节0—1是温度暂存器,用来存储转换好的温度。


字节2—3是用户用来设置最高报警和最低报警值。软件实现。(由于设计时的气候环境,


         只设置了一个上限温度报警,而没有设定下限温度报警)。


字节4是配置寄存器,用来配置转换精度,让它工作在9—12位。


字节5—7保留位。


字节8 CRC校验位。是64位ROM中的前56位编码的校验码。由CRC发生器产生。




温度寄存器


    温度寄存器结构图


          

   

      温度寄存器由两个字节组成,分为低8位和高8位,一共16个字节。


        *其中,第0位到第3位,存储的是温度值的小数部分。


        *第4位到第10位存储的是温度值的整数部分。


        *第11位到第15位为符号位,全0表示是正温度,全1表示负温度。


        *下表中的数值,如果相应的位为1,表示存在,如果相应的位为0,表示不存在。


         


  配置寄存器


    配置寄存器结构图


 

      精确值:


           9--bit       0.5℃


           10-bit       0.25℃


           11-bit       0.125℃


           12-bit       0.0625℃


            一般都默认为12--bit 


  初始化:

         初始化时序包括:主机发出的复位脉冲和从机发出的应答脉冲。主机通过拉低单总线480-960us产生复位脉冲;然后由主机释放总线,并进入接收模式。主机释放总线时,    会产生一由低电平跳变为高电平的上升沿,单总线器件检测到该上升沿后,延时15-60us,接着单总线器件通过拉低总线60-240us来产生应答脉冲。主机接收到从机的以应     答脉冲后,说明有单总线器件在线,初始化完成,主机可以对从机进行ROM命令和操作。


位写入时序


   

      写时隙:当主机把数据线从逻辑高电平拉到逻辑低电平时候,开始写时隙,两种写时间隙:写1和写0。所有写时隙必须最少持续60us,包括两个写周期间至少1us的恢            复时间。DQ引脚电平变低后,DS18B20在一个15us到60us的时间内对DQ引脚采样。如果DQ引脚高电平,写1,如果低电平,写0,主机要生成一个写1时间隙。


         必须把数据线拉到低电平然后释放,在写时隙开始后的15us内允许数据拉到高电平。主机要生成一个写0时间隙,必须把数据线拉到低电平并保持60us。


 位读入时序


 

  当主机把总线从高电平拉低,并保持至少1us后释放总线;并在15us内读取从DS18B20输出的数据。


 


DS18B20的ROM操作命令


  用途:主要用于选定在单总线上的DS18B20,分为5个命令。


1:读出ROM,代码为33H,用于读出DS18B20的序列号,即64位激光ROM代码。


2:匹配ROM,代码为55H,用于识别(或选中)某一特定的DS18B20进行操作。


3:搜索ROM,代码为F0H,用于确定总线上的节点数以及所有节点的序列号。


4:跳过ROM,代码为CCH,当总线仅有一个DS18B20时,不需要匹配。


5:报警搜索,代码为ECH,主要用于鉴别和定位系统中超出程序设定的报警温度


        界限的节点。


 


 启动温度转换


   三个步骤:


   1、复位DS18B20


   2、发出跳过ROM命令(CCH)


   3、发出启动温度转换命令(44H)


 其中Skip ROM 命令仅适用于总线上只有一个DS18B20时的情况。




部分源码:


 


#include

#include "./delay/delay.h"

#include

#include

#include "./LCD1602/LCD1602.h"

 

sbit ds = P3^4;

bit ack = 0;

 

void ds18b20_reset()

{

ds = 1;

ds = 0;

delay_us(200);

delay_us(200);

ds = 1;

delay_us(30);

if(0 == ds)

{

ack = 1;

}

else

{

ack = 0;

}

delay_us(200);

delay_us(200);

}

 

void ds18b20_write_byte(unsigned char byte)

{

unsigned char i;

for(i = 0; i < 8; i++)

{

ds = 0;

_nop_();

_nop_();

ds = byte & 0x01;

byte >>= 1;

delay_us(30);

ds = 1;

}

delay_us(30);

}

 

bit ds18b20_read_bit()

{

bit temp;

ds = 1;

ds = 0;

_nop_();

_nop_();

ds = 1;

temp = ds;

delay_us(30);

return temp;

}

 

unsigned char ds18b20_read_byte()

{

unsigned char i, j, k;

for(i = 0; i < 8; i++)

{

j = ds18b20_read_bit();

k = (j << 7) | (k >> 1);

}

return k;

}

 

void main()

{

unsigned char a;

unsigned char i;

unsigned int temp, b;

float wendu;

unsigned char disbuf[20];

BLK = 0;

lcd1602_init();

while(1)

{

ds18b20_reset();

ds18b20_write_byte(0xcc);

ds18b20_write_byte(0x44);

ds18b20_reset();

ds18b20_write_byte(0xcc);

ds18b20_write_byte(0xbe);

a = ds18b20_read_byte();

b = ds18b20_read_byte();

temp = (b << 8) | a;

wendu = (float)temp * 0.0625;

sprintf(disbuf,"temp is:%7.3f",wendu);

lcd1602_dis_str(0,0,disbuf);

 

}

}


推荐阅读

史海拾趣

亿佰特(EBYTE)公司的发展小趣事

亿佰特注重团队建设和人才培养。公司吸引了一批具有丰富经验和专业技能的人才加入,形成了一支高效、专业的团队。公司还注重员工的培训和发展,为员工提供广阔的晋升空间和职业发展机会。正是这支优秀的团队,为亿佰特的发展提供了源源不断的动力。

Extech公司的发展小趣事

1994年,Extech公司推出了国内第一套基于“AutoCAD FOR WINDOWS”的XTMCAD软件,这一创新举措标志着公司在CAD领域迈出了坚实的步伐。XTMCAD软件凭借其先进的技术和易用性,迅速获得了市场的认可,并在同年荣获了国家教委科技进步一等奖。这一荣誉不仅是对Extech公司技术实力的肯定,也为公司未来的发展奠定了坚实的基础。

Deltrol Controls公司的发展小趣事

随着物联网技术的不断发展,电子设备对继电器的要求也越来越高。Deltrol Controls紧跟行业趋势,对继电器产品进行了智能化改造。通过集成传感器、控制器等智能元件,新型继电器能够实现对电路状态的实时监测和远程控制。这一创新产品不仅提高了电子设备的智能化水平,也为客户带来了更多的便利和价值。

ELMOS公司的发展小趣事

ELMOS公司自创立以来,就专注于汽车电子领域的发展。多年来,公司不断积累在模拟混合信号集成电路设计方面的专业知识,形成了深厚的技术底蕴。这种长期的技术积累使得ELMOS在汽车和工业物理接口领域拥有广泛的产品线,特别是在供电和DC/DC方面积累了丰富的经验。这种技术积累不仅为ELMOS赢得了市场的认可,也为公司的持续发展奠定了坚实的基础。

安路科技(Anlogic)公司的发展小趣事

随着技术的不断积累和市场的逐步开拓,安路科技在XXXX年成功推出了其首款高性能FPGA产品。这款产品以其优异的性能、稳定的品质和良好的性价比,迅速赢得了市场的青睐。此后,安路科技的产品线不断丰富,逐渐覆盖了更多应用领域,公司的市场份额也逐年攀升。

Everbuild公司的发展小趣事

随着全球对环保和可持续发展的重视,Everbuild也将绿色环保理念融入到产品设计和生产过程中。公司采用环保材料和节能技术,减少生产过程中的污染和能源消耗。同时,Everbuild还积极参与环保公益活动,倡导绿色生活方式。这些举措不仅提高了公司的社会责任感,也为公司的可持续发展奠定了基础。

问答坊 | AI 解惑

请帮忙设计干扰器

本人上司要求设计一个针对2.4GHZ的干扰器,看了很多有关的原理介绍,想设计个以扫频方式工作的干扰器。有人说可以使用一个NE555电路产生锯齿波低频振荡电路,调制于高频振荡电路的容变二极管上,直接产生射频扫描信号,再进行功率放大。 但是由于 ...…

查看全部问答>

开关变压器实计工作和计算的差距

开关变压器实计工作和计算的差距…

查看全部问答>

风力发电机结构

  机舱:机舱包容着风力发电机的关键设备,包括齿轮箱、发电机。维护人员可以通过风力发电机塔进入机舱。机舱左端是风力发电机转子,即转子叶片及轴。   转子叶片:捉获风,并将风力传送到转子轴心。现代600千瓦风力发电机上,每个转子叶片的 ...…

查看全部问答>

用定时中断扫描键盘和LED显示

用5ms的定时中断扫描键盘模块的LED现实模块, 键盘20ms一次  显示100ms一次  请高手指点下,最好有流程图 编程的话用汇编…

查看全部问答>

让你的软件飞起来

  ---------------------------------------     文章的确很不错, 尤其是《让你的软件飞起来》,作者的精益求精、奇思妙想,令人叫绝。读后深受启迪,受益匪浅。     不推荐对不起天下人,故写了这几句话。  ...…

查看全部问答>

FIFO和双口RAM

FIFO和RAM有什么区别 什么时候用FIFO 什么时候用RAM…

查看全部问答>

请问mc39i的串口电平是RS232电平还是TTL电平

在网上看到的信息,有说是RS232电平的,有说的TTL电平的,我看DATASHEET上说的电平是low :…

查看全部问答>

pic 外部中断函数 求解

#include #define uchar unsigned char #define uint  unsigned int #define rclk  RC6 __CONFIG(0X3B31); void extern_init() {         GIE=1;//总中断         PEIE=1;// ...…

查看全部问答>

如何自学嵌入式软件开发

我是学习.Net的,但是对嵌入式比较感兴趣,希望各位高手给小弟指点一下,谢谢各位了…

查看全部问答>

求个51的课题

    要参加个小比赛,老师让自己找个课题做,想请教下各位有没有什么简单点的又好玩的课题,给个简单思路,小妹感激不尽啊。。。…

查看全部问答>