📄 +-
字号:
#include"pinlink.h"
#include"delay.h"
#include"display.h"
#include"includehead.h"
bit Init_ds18b20(void)
{
bit flag=1;
DQ=0;
delaynus(60);//大于600us
DQ=1;
delaynus(2);//20us
flag=DQ;
delaynus(25);//250us
return flag;
}
void write_byte(unchar i)
{
unchar j;
for(j=0;j<8;j++)
{
DQ=0;
delaynus(1);
DQ= (bit)(i&0x01);
delaynus(12);
DQ=1;
_nop_();
_nop_();
i>>=1;
}
DQ=1;
}
unchar read_byte(void)
{
unchar j,i;
for(j=0;j<8;j++)
{
DQ=0;
i>>=1;
DQ=1;
delaynus(1);
if(DQ)
i=i|0x80;
delaynus(4);
//DQ=1;
delaynus(1);
}
DQ=1;
return i;
}
unchar ds18b20(void)
{ unchar temph,templ;
unchar *bp;//负数标志位
uchar flag=0;
bp=&flag;
l1:Init_ds18b20();
write_byte(0xcc);
write_byte(0x44);
delaynus(700);//每一种操作都要重复下init_ds10820, write_byte(0xcc)
Init_ds18b20();
write_byte(0xcc);
write_byte(0xbe);
templ=read_byte();
temph=read_byte();
if(temph==0xff&&templ==0xff)
goto l1;
if(temph>7)//是负数取其补码,在显示的时处理显示'-'
{
flag=1;
templ=~templ+1;
temph=~temph;
}
temph=temph<<4;
temph=temph+(templ>>4);//这里我只取了整数部分值,小数部分可用查表来作,或者放大基数来作
templ=(templ&0x0f)*10/16;
display(temph,bp,templ);
return temph;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -