DS18B20温度传感器与串口通信详解 DS18B20是美国DALLAS公司生产的单总线数字式传感器,能够将温度物理量转化为数字信号,而且每个器件具有唯一的序号,因此能够实现多点测量。它的测量范围为-55°C~+125°C,其中在-10°C~+85°C的范围内的测量精度可以达到±0.5°C。 DS18B20的特点 * 能够将温度物理量转化为数字信号 * 每个器件具有唯一的序号,因此能够实现多点测量 * 测量范围为-55°C~+125°C * 在-10°C~+85°C的范围内的测量精度可以达到±0.5°C DS18B20的工作原理 DS18B20的工作原理是通过将温度物理量转化为数字信号来实现温度测量的。它只有三个引脚,GND、DQ、VDD,可以直接由数据线本身寄生供电,也可以采用外部供电,使用起来很方便。 DS18B20的初始化过程 DS18B20的初始化过程是通过发送一复位脉冲(最短为480us的低电平信号),接着释放总线并进入接收状态,DS18B20在检测到总线的上升沿之后,等待15~60us,接着若初始化成功,DS18B20会发出存在脉冲(低电平,持续60~240us)。 DS18B20的串口通信 DS18B20可以通过串口通信与上位机进行通信。采集到的温度以16进制分别以高8位和低8位的形式通过RS232串口发送到上位机,后续的处理就交由上位机编程控制了。 DS18B20的使用注意事项 * DS18B20的DQ口需要接一个上拉电阻,这是因为一般的IO引脚驱动能力是20mA以内,而上拉电阻的意义就是为了增加驱动能力。 * 由于每个DS18B20在温度转换期间工作电流达到1mA,当几个温度传感器挂在同一根I/O线上进行多点测温时,只靠4.7K上拉电阻就无法提供足够的能量,会造成无法转换温度或温度误差极大。 Keil C51的程序代码 以下是Keil C51的程序代码,用于实现DS18B20的温度测量和串口通信: ```c #include <intrins.h> // 定义DS18B20端口DQ sbit DQ=P3^3; // 初始化DS18B20 uchar Init_DS18B20(void) { DQ=1; // DQ复位 Delay(8); // 稍做延时 DQ=0; // 单片机将DQ拉低 Delay(90); // 精确延时 大于 480us DQ=1; // 拉高总线 Delay(8); presence=DQ; // 如果=0则初始化成功 =1则初始化失败 Delay(100); DQ=1; return(presence); // 返回信号,0=presence,1= no presence } // 读一个字节 uchar ReadOneChar(void) { uchar i; uchar value=0; for(i=8;i>0;i--) { DQ=1; _nop_();_nop_(); value>>=1; DQ=0; _nop_();_nop_();_nop_();_nop_(); DQ=1; _nop_();_nop_();_nop_();_nop_(); if(DQ) value|=0x80; Delay(6); //66 us } DQ=1; return(value); } // 写一个字节 void WriteOneChar(unsigned char dat) { unsigned char i=0; for(i=8;i>0;i--) { DQ=0; DQ=dat&0x01; Delay(5); DQ=1; dat>>=1; } } ``` DS18B20是一种功能强大且易于使用的温度传感器,通过串口通信可以与上位机进行通信,用于实现多点测温等应用。
- 粉丝: 9
- 资源: 926
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助