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

📄 ds18b20.h

📁 数字温度计。用DS18B20实现和8051实现
💻 H
字号:
#ifndef DS18B20_C51_DEFINE_2003_8_31
#define DS18B20_C51_DEFINE_2003_8_31

#define SKIP_ROM 	0xCC
#define SEACH_ROM 	0xFO
#define READ_ROM	0x33
#define CONVERT_T	0x44
#define WRITE_SCRATCHPAD	0x4E
#define READ_SCRTCH_PAD 	0xBE
#define word unsigned int
#define byte unsigned char
sbit DQ=P3^2; //IO

void delay(byte useconds)
{
	for(;useconds>0;useconds--);
}

byte ow_reset(void)
{
	byte presence;
	DQ = 0; 			//pull DQ line low
	delay(29); 			// leave it low for 480us
	DQ = 1; 			// allow line to return high
	delay(3); 			// wait for presence
	presence = DQ; 		// get presence signal
	delay(25); 			// wait for end of timeslot
	return(presence); 	// presence signal returned
} 						// 0=presence, 1 = no part


byte read_byte(void)
{
	byte i;
	byte value = 0;
	for (i=8;i>0;i--)
	{
		value>>=1;
		DQ = 0;   // pull DQ low to start timeslot
		DQ = 1;   // then return high
		delay(1); // for (i=0; i<3; i++);
		if(DQ) value|=0x80;
		
		delay(6); // wait for rest of timeslot
	}
	return(value);
}

void write_byte(char val)
{
	byte i;
	for (i=8; i>0; i--) // writes byte, one bit at a time
	{
		DQ = 0; // pull DQ low to start timeslot
		DQ = val&0x01;
		delay(5); // hold value for remainder of timeslot
		DQ = 1;
		val=val/2;
	}
	delay(5);
}

int Read_Temperature(void)
{
	union{
		byte c[2];
		int x;
	}temp;
	
	ow_reset();
	write_byte(0xCC); //Skip ROM
	write_byte(0x44); // Start Conversion

	ow_reset();
	write_byte(0xCC); // Skip ROM
	write_byte(0xBE); // Read Scratch Pad
	temp.c[1]=read_byte();
	temp.c[0]=read_byte();

	return temp.x;
}

/*void TemperatureDisplay(byte *str)
{
	bit flag=0;
	int temp;
	word T;

	temp=Read_Temperature();
	if(temp<0)
		{
		flag=1;
		temp=-temp;
		}
	T=temp;
	T=T>>4;
	Word2Str(T,&str[0],4);

	temp&=0x000F;
	temp=temp*9/16;
	str[5]=temp+'0';

	if(flag)
		str[0]='-';
	str[4]='.';
	str[6]='^';
	str[7]='C';
	str[8]='\0';	
	Print(&str[0]);
}	   */

#endif

⌨️ 快捷键说明

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