当前位置:首页 > 单片机 > 单片机
[导读]简单介绍下DS18B20,它是独特的单线接口,仅需一个端口进行通讯9~12位的分辨率可调(RS)测温范围为-55°C~+125°C;测量范围在-10°C ~+85°C精度为±0.5°C可设置报警温度存储于EEPROM,掉电保护数据不丢适用电压3~5

简单介绍下DS18B20,它是独特的单线接口,仅需一个端口进行通讯9~12位的分辨率可调(RS)测温范围为-55°C~+125°C;测量范围在-10°C ~+85°C精度为±0.5°C可设置报警温度存储于EEPROM,掉电保护数据不丢适用电压3~5.5V

下面介绍我封装好的函数,已经测试可以使用,需要注意的是PORTReadBits,需要根据实际端口相应地移位


DS18B20.H:

#ifndef _DS18B20_H_

#define _DS18B20_H_

#include

#define DQ_PORTIOPORT_D//设置DQ引脚

#define DQ_PINBIT_14

#define SET_OP_1WIREPORTSetBits(DQ_PORT, DQ_PIN)

#define CLR_OP_1WIREPORTClearBits(DQ_PORT, DQ_PIN)

#define SET_DIR_1WIREPORTSetPinsDigitalOut(DQ_PORT, DQ_PIN)

#define CLR_DIR_1WIREPORTSetPinsDigitalIn(DQ_PORT, DQ_PIN)

#define CHECK_IP_1WIREPORTReadBits(DQ_PORT, DQ_PIN)>>14

extern void delay_us(unsigned int num);

extern void delay_ms(unsigned int num);

float gettemp(void);//读取温度值

#endif

DS18B20.C

#include "ds18b20.h"

void init_1820()

{

SET_DIR_1WIRE; //设置PC2为输出

SET_OP_1WIRE;

CLR_OP_1WIRE;

delay_us(480);//480us以上

SET_OP_1WIRE;

CLR_DIR_1WIRE;

delay_us(20);//15~60us

while(CHECK_IP_1WIRE);

SET_DIR_1WIRE;

SET_OP_1WIRE;

delay_us(140);//60~240us

}

void write_1820(unsigned char x)

{

unsigned char m;

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

{

CLR_OP_1WIRE;

if(x&(1<

SET_OP_1WIRE;

else

{CLR_OP_1WIRE;}

delay_us(40);//15~60us

SET_OP_1WIRE;

}

SET_OP_1WIRE;

}

unsigned char read_1820()

{

unsigned char temp,k,n;

temp=0;

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

{

CLR_OP_1WIRE;

SET_OP_1WIRE;

CLR_DIR_1WIRE;

k=(CHECK_IP_1WIRE);//读数据,从低位开始

if(k)

temp|=(1<

else

temp&=~(1<

delay_us(50); //60~120us

SET_DIR_1WIRE;

}

return (temp);

}

float gettemp()//读取温度值

{

unsigned char temh,teml;

unsigned int temp;

float value;

init_1820();//复位18b20

write_1820(0xcc);//发出转换命令

write_1820(0x44);

//delay_nms(800);//不延时也好使,不知道怎么回事!

init_1820();

write_1820(0xcc);//发出读命令

write_1820(0xbe);

teml=read_1820();//读数据

temh=read_1820();

temp=temh;

temp<<=8;

temp|=teml;

value=temp*0.0625;

return value;

}


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

Pt100温度传感器和Pt1000温度传感器的铂基传感器是正温度系数 (PTC) 传感器,可提供高达 500°C 的准确温度测量。在0摄氏度时Pt100是100欧,Pt1000是1000欧。

关键字: ntc 热敏电阻 pt100 温度传感器

PT100是铂热电阻,它的阻值会随着温度的变化而改变。PT后的100即表示它在0℃时阻值为100欧姆,在100℃时它的阻值约为138.5欧姆。它的工作原理:当PT100在0摄氏度的时候它的阻值为100欧姆,它的阻值会随着...

关键字: PT100 铂热电阻 温度传感器

DS18B20是常用的数字温度传感器,其输出的是数字信号,具有体积小,硬件开销低,抗干扰能力强,精度高的特点。

关键字: ds18b20 温度传感器 数字信号

为增进大家对电磁炉的认识,本文将对电磁炉的一些异常予以介绍,并介绍电磁炉的一些使注意事项。

关键字: 电磁炉 指数 温度传感器

温度传感器ad590测温电路是一种较常见的应用电路,关于这电路你了解多少呢?你知道它的原理吗?本文就来介绍关于温度传感器ad590测温电路的电路原理。

关键字: 温度传感器 ad590 电路原理

AD590温度传感器是一种功能强大、性能优良的温度传感器。其具有高精度、线性度好、稳定性强等多种优点,可以广泛应用于各种工业应用领域。

关键字: 温度传感器 ad590 电压放大器

MCP998x系列是单一供应商提供的最大车规级远程温度传感器产品组合之一

关键字: 温度传感器 后视镜控制 电动车窗

【2023年12月19日,德国慕尼黑讯】为提高结温传感的精度,英飞凌科技股份公司(FSE代码:IFX / OTCQX代码:IFNNY)推出带有集成温度传感器的全新CoolMOS™ S7T产品系列。通过在系统中集成该系列半...

关键字: 温度传感器 固态继电器 MOSFET

为增进大家对温度传感器的认识,本文将对温度传感器、温度传感器和温度变送器的区别予以介绍。

关键字: 传感器 指数 温度传感器

为增进大家对温度传感器的认识,本文将对温度传感器好坏测量方法以及温度传感器的用途予以介绍。

关键字: 传感器 指数 温度传感器
关闭
关闭