请教一个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;
} 挂在总线上的所有传感器温度都转换了
页:
[1]