Lesson13_温度传感器ds18b20
uchar T_h,T_l;
ds1820init();//复位,通信前必须复位
ds1820write(T_ROM_JMP);//如果总线上只有一个DS18B20,则可跳过ROM操作
ds1820write(T_CONVER);//启动温度转换
delay(250);//启动温度转换后要进行读忙,9~12位精度温度转换所需的
//最长时间分别为93.75ms、187.5ms、375ms、750ms
//如果不读忙而紧接着进行后面的操作,将在首次上电时可能导致85现象
//因为读到的不是温度值,而是初始值0x0550,即85//这里直接延时足够时间 有时读出85是正常现象
ds1820init();//温度转换后DS18B20处于空闲状态,要进行通信,需要重新复位
ds1820write(T_ROM_JMP);//跳过ROM操作
ds1820write(T_READ); //读取暂存器(共可读9个寄存器,前两个就是温度)
T_l=ds1820read();//将低字节(低四位为小数位)
T_h=ds1820read();//将高字节(高五位符号位)
fuhao=T_h&0x08;//温度符号
Temperature=((T_h&0x07)*256+T_l)*0.0625;//忽略小数部分
lcddisplay(0x82,Temperature+48);//1602输出十位
lcddisplay(0x81,Temperature/10+48);//个位
}