18b20.h

来自「DS18B20单个数据线温度芯片驱动大全」· C头文件 代码 · 共 78 行

H
78
字号
#include <reg52.h>
//#include <stdio.h>
 
sbit EQ=P2^0;

#define uint  unsigned int
#define uchar unsigned char

uchar temp_int,temp_piont;
uint flag;//器件检测位
uint templ;
uint temph;

void delay18b20(unsigned int i)
{
 while(--i);
}
void initial()
{
	 EQ=1;
	 delay18b20(1);
	 EQ=0;
	 delay18b20(600);
	 EQ=1;
	 delay18b20(30);
	 flag=EQ;
	 delay18b20(20);
	 while(flag);
}

void wrbyte(uchar word)
	 {
	  uchar i;
	  for(i=0;i<8;i++)
	  {
		EQ=0;
		EQ=word&0x1;
		delay18b20(15);
		EQ=1;
		word>>=1;
	  }
	 }

uint rebyte(void)
{
	  uchar i,word=0;
	  for(i=0;i<8;i++)
	  {
	   word>>=1;
	   EQ=0;
	   EQ=1;
       delay18b20(1);
	   if(EQ)  word|=0x80;
	   delay18b20(8);
	  }
	 return(word);
}

readtemp()
{
	initial();
	wrbyte(0xcc);//跳过ROM匹配
	wrbyte(0x44);//启动温度转换
	delay18b20(160);
	initial();
	wrbyte(0xcc);//跳过ROM匹配
	wrbyte(0xbe);//读取温度寄存器等
	templ=rebyte();
	temph=rebyte();
	temp_int=((temph<<4)&0x70)|((templ>>4)&0x0f);//整数部分
    temp_piont=(templ&0x0f)*5;//小数部分
}





⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?