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

📄 温度传感器.txt

📁 次程序为单片机89S51系列温度传感器部分程序.
💻 TXT
字号:
/////////////////////////////////////// 发送复位///////////////////////////
void tmreset (void)														//
{		                  		 										//
	unsigned int i;														//
	TMDAT = 0;															//
	i = 103;															//
	while (i>0) i--;         	// 延时 900 uS(11.0592Mhz时)				//
	TMDAT = 1;															//
	i = 4;																//
	while (i>0) i--;													//
}																		//
//////////////////////////////////////////////////////////////////////////




///////////////////////////////////// 读一位///////////////////////////////
bit tmrbit (void)														//
{                   													//  
	unsigned char i;													//
	bit dat;															//
	TMDAT = 0; i++;														//
	TMDAT = 1; i++; i++;		//微量延时								//
	dat = TMDAT;														//
	i = 8; while (i>0) i--;		// 延时									//
	return (dat);														//
}																		//
//////////////////////////////////////////////////////////////////////////


//////////////////////////////////////// 读一个字节////////////////////////
unsigned char tmrbyte (void) 			 								//
{         																//
	unsigned char i,j,dat;												//
	dat = 0;															//
	for (i=1;i<=8;i++)													//
	{																	//
		j = tmrbit ();													//
		dat = (j << 7) | (dat >> 1);									//
	}																	//
	return (dat);														//
}																		//
//////////////////////////////////////////////////////////////////////////


/////////////////////////////////////// 写一个字节/////////////////////////
void tmwbyte (unsigned char dat)										//
{                														//
	unsigned int i;														//
	unsigned char j;													//
	bit testb;															//
	for (j=1;j<=8;j++)													//
	{																	//
		testb = dat & 0x01;												//
		dat = dat >> 1;													//
		if (testb)														//
		{																//
			TMDAT = 0;                           // 写0 					//
			i++; i++;                            						//
			TMDAT = 1;													//
			i = 8; while (i>0) i--;       					       		//
		}																//
		else															//
		{																//
			TMDAT = 0;                           // 写0 					//
			i = 8; while (i>0) i--;              						//
			TMDAT = 1;													//
			i++; i++;                            						//
		}																//
	}																	//
}																		//
//////////////////////////////////////////////////////////////////////////

/////////////////////////////////发送ds1820 开始转换///////////////////////
void tmstart (void)														//
{                   													//
	tmreset ();		//复位												//
	//tmpre ();		//等待存在脉冲										//
	dmsec (1);		//延时												//
	tmwbyte (0xcc);		//跳过序列号命令									//
	tmwbyte (0x44); 	//发转换命令 44H,								//
}																		//
//////////////////////////////////////////////////////////////////////////


/////////////////////////////////// 读取温度///////////////////////////////
unsigned int tmrtemp (unsigned char* Romcode)							//
{                   													//
	unsigned char a,b;													//
	tmreset ();		//复位												//
	dmsec (1);		//延时												//
	tmwbyte (0x55); 	//跳过序列号命令									//
	for (a=0;a<=7;a++)													//
	{																	//
		tmwbyte(Romcode[a]);											//
	}																	//
	tmwbyte (0xbe); 	//发送读取命令 									//
	a = tmrbyte ();		//读取低位温度									//
	b = tmrbyte ();  	//读取高位温度									//
	return a+b*256;														//
}							           									//
//////////////////////////////////////////////////////////////////////////

/////////////////////////////////// 读取温度///////////////////////////////乘以100除以16
/*unsigned int tmrtemptest (void)											//
{                   													//
	unsigned char a,b;													//
	tmreset ();		//复位												//
	dmsec (1);		//延时												//
	tmwbyte (0xcc); 	//跳过序列号命令									//
	tmwbyte (0xbe); 	//发送读取命令 									//
	a = tmrbyte ();		//读取低位温度									//
	b = tmrbyte ();  	//读取高位温度									//
	return a+b*256;														//
}							           									//
//////////////////////////////////////////////////////////////////////////
*/

//////////////////////////////////读ROM编码////////////////////////////////
void readrom(unsigned char* ROM)										//
{																		//
	unsigned char i;													//
	tmreset ();															//
	i = 115;															//	
	while (i>0) i--;													//
	tmwbyte (0x33);														//	
	i = 115;															//
	while (i>0) i--;													//
	ROM[0]=tmrbyte();													//
	ROM[1]=tmrbyte();													//
	ROM[2]=tmrbyte();													//
	ROM[3]=tmrbyte();													//
	ROM[4]=tmrbyte();													//
	ROM[5]=tmrbyte();													//
	ROM[6]=tmrbyte();													//
	ROM[7]=tmrbyte();													//
}									

⌨️ 快捷键说明

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