⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ds18b20驱动.h

📁 温度传感器DS18B20的51 C语言驱动。
💻 H
字号:
/*****************************************
*微秒延时子程序
*****************************************/
void Delay_us(uchar Times)
{
	for(;Times!=0;Times--)
		{
		_nop_();
		}
}

sbit WD		=P2^0;
/*******************************************************************************************
** 函数名称: resetDS18B20
** 功能描述: DS18B20初始化
*******************************************************************************************/
void resetDS18B20(void)
{
	unsigned char errTime;
while(1)
	{
	WD=1;
	errTime=0;
	WD=0;
	Delay_us(142);		//250us
	Delay_us(142);		//250us复位低电平480us~960us
	WD=1;
	while(WD)	
		{
		Delay_us(2);//延时5us
		errTime++;
		if(errTime>20)
			{
			Error_Alarm(TempResError);
			continue;
			}
		}
	errTime=0;
	while(!WD)	
		{
		Delay_us(5);//延时10us
		errTime++;
		if(errTime>30)
			{
			Error_Alarm(TempResError);
			break;
			}
		}
	break;
	}
}
/*******************************************************************************************
** 函数名称: readByteDS18B20(void)
** 功能描述: 读DS18B20一个字节
*******************************************************************************************/
unsigned char readByteDS18B20(void)
{
	unsigned char i=0;
	unsigned char dat = 0;
	for (i=8;i>0;i--)
 		{
  		WD = 0; // 给脉冲信号
  		dat>>=1;
  		WD = 1; // 给脉冲信号
  		if(WD)
   		dat|=0x80;
  		Delay_us(16);		//延时30us
	 	}
 return(dat);

}
/*******************************************************************************************
** 函数名称: writeByteDS18B20
** 功能描述: 写DS18B20一个字节
*******************************************************************************************/
void writeByteDS18B20(unsigned char wb)
{
	unsigned char i;
	for (i=8;i>0;i--)
		{
  		WD = 0;
  		WD = wb&0x01;
		Delay_us(24);		//延时45us
  		WD = 1;
  		wb>>=1;
 		}
}
/*******************************************************************************************
** 函数名称: readTempDS18B20(void)
** 功能描述: 读DS18B20温度
*******************************************************************************************/
void StartTemShift(void)
{
	resetDS18B20();
	writeByteDS18B20(0xcc); 	//跳过ROM
	writeByteDS18B20(0x44);		/*启动温度转换*/
}
/*******************************************************************************************
** 函数名称: readTempDS18B20(void)
** 功能描述: 读DS18B20温度
*******************************************************************************************/
unsigned int readTempDS18B20(void)
{
	unsigned char tempL,tempH;
	unsigned int Temp;
	resetDS18B20();
	writeByteDS18B20(0xcc);		//跳过ROM
	writeByteDS18B20(0xbe);		//读数据
	tempL=readByteDS18B20();
	tempH=readByteDS18B20();
	Temp=(tempH<<8)|tempL;
	StartTemShift();//启动温度转换
	return(Temp);
}

⌨️ 快捷键说明

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