ds18b20.c

来自「本人做的一款LED控制程序」· C语言 代码 · 共 57 行

C
57
字号
sbit DQ = P1^4; //定义通信端口 


void delay(unsigned int i){ while(--i); } 

//初始化函数 
void Init_DS18B20(void) {  	
	DQ = 1; 	//DQ复位 
 	delay(20); 	//稍做延时 
 	DQ = 0; 	//单片机将DQ拉低 
 	delay(180); //精确延时 大于 480us 
 	DQ = 1; 	//拉高总线 
 	delay(20);	//稍做延时后 如果x=0则初始化成功 x=1则初始化失败 	
 }

//读一个字节 
Uchar ReadOneChar(void) { 
	unsigned char i=0; 
	unsigned char dat = 0; 
	for (i=8;i>0;i--) { 
	DQ = 0; 	// 给脉冲信号 
	dat>>=1; 
	DQ = 1; 	// 给脉冲信号 
	if(DQ) dat|=0x80; 
	delay(10); 
	} 
	return(dat); 
} 
//写一个字节 
void WriteOneChar(unsigned char dat) { 
	unsigned char i=0; 
	for (i=8; i>0; i--) { 
		DQ = 0; 
		DQ = dat&0x01; 
		delay(10); 
		DQ = 1; 
		dat>>=1; 
		} 
		delay(10); 
} 
Uint Readtemp()	{
		Uint	t;
		Uchar a,b;
		Init_DS18B20();		//初始化。 
		WriteOneChar(0xCC); // 跳过读序号列号的操作 。
		WriteOneChar(0x44); // 启动温度转换 。
		delay(10);
		Init_DS18B20(); 
		WriteOneChar(0xCC); //跳过读序号列号的操作 。
		WriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度 。
		a=ReadOneChar(); 
		b=ReadOneChar();		
		t=b; 
		t <<= 8; 
		t=t | a;
		return (t);
}		 			

⌨️ 快捷键说明

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