|
在单总线上如果只有一个温度头我们复位DS18B20后可以发送0xcc命令跳过序号操作然后发送0x44命令启动温度转换,假设总线上挂载着多个DS18B20,同样是发送0xcc命令跳过序号操作,然后发送0x44命令,问题是挂载总线上的所有温度头都启动温度转换了吗??????
下面是单个温度头的温度转换程序
uint temp_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;
} |
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|