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

📄 ds18b20.c

📁 本人做的一款LED控制程序
💻 C
字号:
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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -