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

📄 ds18b20.h

📁 本文设计实现的是一个多功能数字电子钟
💻 H
字号:

sbit DQ=P2^7; 
uchar a;
void delay1(int useconds) 
{
	int s;
	for (s=0; s<useconds;s++);
}


unsigned char ow_reset(void)
{
	unsigned char presence;
	DQ = 0;  			
	delay1(29); 			
	DQ = 1; 			
	delay1(3); 			
	presence = DQ; 		
	delay1(25); 			
	return(presence); 	
}

void write_bit(char bitval) 
{
	DQ = 0; 			
	if(bitval==1) DQ =1; 	
	delay1(5); 		
	DQ = 1; 	
}	


void write_byte(char val) 
{
	uchar i;
	uchar temp;
	for (i=0; i<8; i++) 
	{
		temp = val>>i; 		
		temp &= 0x01; 		
		write_bit(temp); 
	}
	delay(5);
}
uchar read_bit(void) 
{
	uchar i;
	DQ = 0;     		 
	DQ = 1; 			
	for (i=0; i<3; i++); 	
	return(DQ); 			
}

uchar read_byte(void)
 {
	uchar	 i;
	uchar value = 0;
	for (i=0;i<8;i++) 
	{  			
	if(read_bit()) value|=0x01<<i; 	
	delay(6); 					
	}
return(value);
}




uint Read_Temperature(void) 
{
	uchar get[10];
	uchar temp_lsb,temp_msb;
	uint t;
	uchar k;
	ow_reset();
	write_byte(0xCC); 					
	write_byte(0x44); 					
	delay1(5);
	ow_reset();
	write_byte(0xCC); 					
	write_byte(0xBE); 					
	for (k=0;k<2;k++){get[k]=read_byte();}
	
	temp_msb = get[1]; 
	temp_lsb = get[0]; 
	
	t=temp_msb*256+temp_lsb;
	t=t&0x0ff0;
	return t>>4;
}

void wendu_dis()
{

	a=Read_Temperature();
	if((a>>7)==0)
	{
		write_com(0x80+0x40+11);
		write_date(0x2b);
	}
	else
	{	
		a=~a+1;
		a=a&0x00ff;
		write_com(0x80+0x40+11);
		write_date(0x2d);
	}
	write_wendu(12,a);	
}

⌨️ 快捷键说明

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