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

📄 18b20.c

📁 18B20程序
💻 C
字号:
/*******************************************************************************
********************************************************************************
*函数描述:18B20复位和初始化函数
*局部变量:
*返回参数:
********************************************************************************
*******************************************************************************/
bit Init_18b20(void)
{
	bit flag;
	DQ=0;
	Delay_uS(29);//延时500uS
	DQ=1;
	Delay_uS(3);//延时76uS
	if(DQ==0)
		flag = 1;//发现1820
	else
		flag = 0;//没发现1820
	Delay_uS(25);//延时420uS
	DQ = 1;
	return(flag);
}
/*******************************************************************************
********************************************************************************
*函数描述:向18B20写一位数据
*局部变量:
*返回参数:
********************************************************************************
*******************************************************************************/
void Write_bit_18B20(bit Count)
{
	DQ=0;
	if(Count==1)
		DQ=1;
	Delay_uS(5);//延时100uS
	DQ=1;
}
/*******************************************************************************
********************************************************************************
*函数描述:向18B20写一个字节
*局部变量:
*返回参数:
********************************************************************************
*******************************************************************************/
void Write_Byte_18B20(unchar Data_18B20)
{
	unchar i,Count;
	for (i=0;i<8;i++)
	{
		Count=Data_18B20>>i;
		Count&=0x01;
		Write_bit_18B20(Count);		
	}
	Delay_uS(5);//延时100uS
}
/*******************************************************************************
********************************************************************************
*函数描述:18B20读一位数据
*局部变量:
*返回参数:
********************************************************************************
*******************************************************************************/
bit Read_bit_18B20(void)
{
	unchar i;
	DQ = 0;
	DQ = 1;
	for(i=0;i<3;i++);//这个表达式的延时是15微秒
	return (DQ);
}
/*******************************************************************************
********************************************************************************
*函数描述:18B20读一个字节函数
*局部变量:
*返回参数:
********************************************************************************
*******************************************************************************/
unchar Read_Byte_18B20(void)
{
	unchar i,Count=0;
	for(i=0;i<8;i++)
	{
		if(Read_bit_18B20())
			Count|=0x01<<i;
		Delay_uS(6);
	}
	return(Count);
}
/*******************************************************************************
********************************************************************************
*函数描述:18B20转换+读取温度+计算
*局部变量:
*返回参数:
********************************************************************************
*******************************************************************************/
unint Convert_Read_Count_18B20(void)
{
	unchar H_18B20=0;
	unchar L_18B20=0;
	unint z=0;
	if(Init_18b20())
	{
		Write_Byte_18B20(0xcc);//跳过序列号命令
		Init_18b20();
		Write_Byte_18B20 (0xcc); // 跳过序列号命令
		L_18B20= Read_Byte_18B20();// 读取低位温度 
		H_18B20= Read_Byte_18B20(); //读取高位温度 
		z=H_18B20*0x100+L_18B20;
		if(H_18B20&0x80)
		{
			PN_18B20=1;//温度标志位,-
			z=~z+1;//取反加1
		}
		else
		{
			PN_18B20=0;//温度标志位,+
		}
	}
	else
	{
		PN_18B20=0;//温度标志位,+
		z=0;
	}
	return(z);
}
/*******************************************************************************
********************************************************************************
*函数描述:18B20计算函数
*局部变量:
*返回参数:
********************************************************************************
*******************************************************************************/
void Count_18B20(void)
{ 
	unchar i=0;
	Temperature=0;
	for(i=0;i<10;i++)//读10次温度值
	{
		Temperature=Temperature+Convert_Read_Count_18B20()*0.0625;
	}
	Temperature=Temperature/10;//取平均,Temperature是个全局float
	if(Temperature>=0)
	{
		PN=0;
	}
	else
	{
		PN=1;
		Temperature=-Temperature;
	}
}

⌨️ 快捷键说明

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