示例#1
0
//从ds18b20得到温度值
//精度:0.1C
//返回值:温度值 (-550~1250) 
short DS18B20_Get_Temp(void)
{
    u8 temp;
    u8 TL,TH;
	short tem;
    DS18B20_Start ();                    // ds1820 start convert
    DS18B20_Rst();
    DS18B20_Check();	 
    DS18B20_Write_Byte(0xcc);// skip rom
    DS18B20_Write_Byte(0xbe);// convert	    
    TL=DS18B20_Read_Byte(); // LSB   
    TH=DS18B20_Read_Byte(); // MSB  
	    	  
    if(TH>7)
    {
        TH=~TH;
        TL=~TL; 
        temp=0;//温度为负  
    }else temp=1;//温度为正	  	  
    tem=TH; //获得高八位
    tem<<=8;    
    tem+=TL;//获得底八位
    tem=(float)tem*0.625;//转换     
	if(temp)return tem; //返回温度值
	else return -tem;    
} 
示例#2
0
文件: ds18b20.c 项目: 2cats/STM32
//UPDATE:
//修正输出值分辨率,修改返回属性为double
//从ds18b20得到温度值
//精度:0.0625C
//返回值:温度值 (-55~125) 
double DS18B20_Get_Temp(void)
{
    u8 zhengfu;
    u8 TL,TH;
		short temRaw;
		double finalTemp;
    DS18B20_Start ();                    // ds1820 start convert
    DS18B20_Rst();
    DS18B20_Check();	 
    DS18B20_Write_Byte(0xcc);// skip rom
    DS18B20_Write_Byte(0xbe);// convert	    
    TL=DS18B20_Read_Byte(); // LSB   
    TH=DS18B20_Read_Byte(); // MSB  

    if(TH>7)
    {
        TH=~TH;
        TL=~TL; 
        zhengfu=0;//温度为负  
    }else zhengfu=1;//温度为正	  	  
    temRaw=TH; //获得高八位
    temRaw<<=8;    
    temRaw+=TL;//获得底八位
    finalTemp=(double)temRaw*0.0625;//转换    
		return zhengfu?finalTemp:-finalTemp;
}