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

📄 wendu.h

📁 标准键盘PS2与单片机之间的通信
💻 H
字号:

sbit TMDAT =P3^4;//DS18B20的数据输入/输出角DQ//
unsigned char sdata;
unsigned char xiaoshu;
///////////////////////////////////////////////////////////	
void dmsec (unsigned int count)       //延时部分//
{   
	unsigned char i;
	while(count--)
	{
		for(i=0;i<113;i++); 
	}              
}         
///////////////////////////////////////////////////////	 
void tmreset (void)       //发送复位//
{                               
	unsigned char i;
	TMDAT=0;     
	for(i=0;i<103;i++); 
	TMDAT = 1;       
	for(i=0;i<4;i++); 
}         

	
///////////////////////////////////////////////	
bit tmrbit (void)       //读一位//
{                           
	 unsigned int i;       
	 bit dat;      
	 TMDAT = 0;
	 i++;       
	 TMDAT = 1; 
	 i++; i++;  //微量延时   //
	 dat = TMDAT;     
	for(i=0;i<8;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 char j,i;      
	 bit testb;       
	 for (j=1;j<=8;j++)      
	 {       
		  testb = dat & 0x01;     
		  dat = dat >> 1;      
		  if (testb)     
		  {       
			   TMDAT = 0;         // 写0  //
			   i++; i++;                              
			   TMDAT = 1;    
			for(i=0;i<8;i++); 
		  }       
		  else       
		 {       
			   TMDAT = 0;                  // 写0  //
				for(i=0;i<8;i++); 
			   TMDAT = 1;     
			   i++; i++;                              
		  }       
	 }        
}  
////////////////////////////////////////////////////////////	
void tmstart (void)       //发送ds1820 开始转换//
{                          
 	tmreset();  //复位//     
 	dmsec(1);  //延时//     
 	tmwbyte(0xcc);  //跳过序列号命令   //
 	tmwbyte(0x44);  //发转换命令 44H,   //
}         
/////////////////////////////////////////////////////////
void tmrtemp (void)       //读取温度
{                          
	 unsigned char a,b,X; 
	 tmreset ();  //复位     //
	 dmsec (1);  //延时     //
	 tmwbyte (0xCC);  //跳过序列号命令   //
	 dmsec (1);
	 tmwbyte (0xBE);  //发送读取命令     //
	 a = tmrbyte ();  //读取低位温度    //
	 b = tmrbyte ();   //读取高位温度    //
	 X=sdata;
	sdata = a/16+b*16;
	if((sdata>80)|(sdata<0))
		sdata = X;		   //防止误转换
	xiaoshu = (a&0x0f)*10/16 ;
}         
///////////////////////////////////////////        

	
//////////////////////////////////////////////////////	 
void DS18B20PRO(void)         
{    
  tmstart();      
  dmsec(100); 	//如果是不断地读取的话可以不延时 //
  tmrtemp(); 	//读取温度,执行完毕温度将存于TMP中 //
}
///////////////////////////////////////////////////////	

⌨️ 快捷键说明

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