DS18B20_Write_Byte(0xbe); //读暂存器 TL = DS18B20_Read_Byte(); //低八位 LSB TH = DS18B20_Read_Byte(); //高八位 MSB if(TH>0x70){ //判断温度值是否为负数 TH = ~TH; TL = ~TL; temp = 0; }else temp = 1; temperature = TH; //获得高八位 temperature <<= 8; temperature +...
DS18B20温度传感器在ROM操作未定建立之前不能使用存储和控制操作。主机必须首先提供5种ROM操作之一:READ ROMMatch ROMSearch ROMSkip ROMAlarm Search 下面是ROM操作命令说明:Read ROM (0x33):读取ROM代码这个命令允许主机读取DS18B20的64位唯一ROM代码。主机发送此命令后,DS18B20会按顺序将其ROM代码的各个字节发送回...
TL = OneWire_ReadByte(&pDS18B20->DQ);//读取温度高位 TM = OneWire_ReadByte(&pDS18B20->DQ);//读取温度低位 if ((TM & 0xF8) == 0)//正数 { *temperature = ((int16_t)((TM << 8) | TL)) * 0.0625f; } else//负数 { *temperature = -((~(int16_t)((TM << 8) | TL)) +...
unsigned int ReadTemperature(void){ unsigned char a=0;unsigned char b=0;unsigned int t=0;float tt=0;Init_DS18B20();WriteOneChar(0xCC); //跳过读序号列号的操作 WriteOneChar(0x44); //启动温度转换 Init_DS18B20();WriteOneChar(0xCC); //跳过读序号列号的操作 WriteOneChar(0xBE); /...
(DS18B20_CONVERT_T); } /** * @brief DS18B20读取温度 * @param 无 * @retval 温度数值 */ float DS18B20_ReadT(void) { unsigned char TLSB,TMSB; int Temp; float T; OneWire_Init(); OneWire_SendByte(DS18B20_SKIP_ROM); OneWire_SendByte(DS18B20_READ_SCRATCHPAD); TLSB=OneWire_ReceiveByte...
*函 数名 : Ds18b20ReadByte* 函数功能 : 读取一个字节 *输 入 : 无* 输 出 : dat***/ uchar Ds18b20ReadByte() { unsigned char i=0; unsigned char dat = 0; for (i=8;i>0;i--) { DSPORT = 0; // 给脉冲信号 dat>>=1; DSPORT = 1; //...
float DS18B20_ReadTemperature(void); #endif 初始化引脚: // 初始化GPIO PA1 用于DS18B20 void DS18B20_Init(void) { RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = DS18B20_PIN; ...
ReadTemperature ()//仅整数 { unsigned char low,high; Init_DS18B20(); //复位初始化 Write_DS18B20(0xCC); //写0xCC命令,跳过ROM Write_DS18B20(0x44); //写0x44命令,开始进行温度转换 Init_DS18B20(); //复位初始化 Write_DS18B20(0xCC); //...
(Tenp2&0xFC)//判断符号位是否为1{Minus Flag=l;//负温度标志位置1Temperature=((Temp2<<8)|Temp1);//高八位第八位进行整合Temperature=((Temperature)+1);//讲补码转换为原码,求反,补1Temperature*=0.0625;//求出十进制}else//温度为正值{Minus Flag=0;//负温度标志位置0Temperature =((Temp2<<8)...
defloop():whileTrue:ifread()!=None:print"Current temperature : %0.3f C"%read()#以单精度浮点小数的形式输出,保留三位小数 defdestroy():passif__name__=='__main__':try:setup()loop()except KeyboardInterrupt:destroy()