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

📄 ds18b20.h

📁 12864液晶显示多功能电子时钟
💻 H
字号:
/*程序说明:温度传感器DS18B20处理函数集
			作头文件用
  端口说明:P3.0     DQ*/
  #include <reg52.h>
  #define jump_ROM 0xCC
  #define start  0x44
  #define read_EEROM 0xBE
  unsigned int TMPH,TMPL;   //温度高字节,低字节
  sbit DQ=P3^0;
 /*============================================================================/
 *函数名称:delay
 *入口参数:N
 *函数功能:延时子程序,实现(16*N+24)us的延时
 			系统采用了11.0592MHz的时钟时,延时满足要求,其他情况需要改动
 /============================================================================*/
void delayms(unsigned int N)
{
	int i;
	for(i=0;i<N;i++);
}
/*=============================================================================/
 *函数名称:ds18b20_res
 *函数功能:DS18B20初始化
 *============================================================================*/
void ds18b20_res(void)
{
	DQ=0;
	delayms(48);
	DQ=1;
	delayms(5);
	while(DQ);
	delayms(48);
}
/*==============================================================================/
 *函数名称:ds_read_bit
 *入口参数:无;返回接收的数据
 *函数功能:读1bit子程序
/==============================================================================*/
unsigned char ds_read_bit(void)
{
	unsigned char i;
	DQ=0;
	DQ=1;
	for(i=0;i<3;i++);
	return(DQ);
}
/*================================================================================/
 *函数名称:ds_write_bit
 *入口参数:bitval
 *函数功能:写1bit子程序
/=================================================================================*/
void ds_write_bit(unsigned char bitval)
{
	DQ=0;
	if(bitval==1);
	DQ=1;
	delayms(5);
	DQ=1;
}
/*===============================================================================/
 *函数名称:ds_write_byte
 *入口参数:val
 *函数功能:写1byte子程序
/================================================================================*/
void ds_write_byte(unsigned char val)
{
	unsigned char i,temp;
	for(i=0;i<8;i++)
	{
		temp=val>>i;
		temp=temp&0x01;
		ds_write_bit(temp);
		delayms(5);
	}
}
/*=============================================================================/
 *函数名称:ds_read_byte
 *入口参数:无
 *返回值:接收的数据value
 *函数功能:读一个byte子程序
/==============================================================================*/
unsigned char ds_read_byte(void)
{
	unsigned char i,temp,receive_data;
	receive_data=0;
	for(i=0;i<8;i++)
	{
		temp=ds_read_bit();
		receive_data=(temp<<7)|(receive_data>>1);
	    delayms(5);
	 }
	 return(receive_data);
}
/*==========================================================================/
 *函数名称:getTemValue
 *入口参数:无
 *返回值:value
 *函数功能:取得温度值
/==========================================================================*/
void get_TemValue(void)
{
	unsigned int value;
	float t;
	ds18b20_res();
	ds_write_byte(jump_ROM);
	ds_write_byte(start);
	ds18b20_res();
	ds_write_byte(jump_ROM);
	ds_write_byte(read_EEROM);
	TMPL=ds_read_byte();
	TMPH=ds_read_byte();
	value=TMPH;
	value<<=8;
	value|=TMPL;
	t=value*0.0625;
	TMPH=t;
	TMPL=(t-TMPH)*10+0.5;
}

⌨️ 快捷键说明

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