shuipaopao 发表于 2014-7-15 17:27:57

请教一个DS18B20启动温度转换的问题

在单总线上如果只有一个温度头我们复位DS18B20后可以发送0xcc命令跳过序号操作然后发送0x44命令启动温度转换,假设总线上挂载着多个DS18B20,同样是发送0xcc命令跳过序号操作,然后发送0x44命令,问题是挂载总线上的所有温度头都启动温度转换了吗??????
下面是单个温度头的温度转换程序
uinttemp_get(void)
{
unsigned int i,j;
DS1820_Init();             //复位DS18B20
   DS1820_w_char(0xCC);       //跳过读取DS18B20的序列序号操作
   DS1820_w_char(0x44);       //启动温度转换
   delayms(760);         //等待读取结束(9位数据时间大概为90ms)
   DS1820_Init();             //复位DS18B20
   DS1820_w_char(0xCC);       //跳过读取DS18B20的序列序号操作
   DS1820_w_char(0xBE);       //读取温度寄存器值
j=DS1820_r_char();      //读温度低字节
j=j+(DS1820_r_char()<<8);   //读温度高字节,然后加上温度低字节
if((j&0xf800)!=0){j=~j+0x0001;flag0=1;}
i=((j>>4)*10)+((((j&0x0008)>>3)*500)+(((j&0x0004)>>2)*250)+(((j&0x0002)>>1)*125)+((j&0x0001)*62))/100;
//温度值*10
return i;
}

成就与价值 发表于 2015-2-5 17:32:15

挂在总线上的所有传感器温度都转换了
页: [1]
查看完整版本: 请教一个DS18B20启动温度转换的问题