📄 ds18b20.h
字号:
sbit DQ=P2^7;
uchar a;
void delay1(int useconds)
{
int s;
for (s=0; s<useconds;s++);
}
unsigned char ow_reset(void)
{
unsigned char presence;
DQ = 0;
delay1(29);
DQ = 1;
delay1(3);
presence = DQ;
delay1(25);
return(presence);
}
void write_bit(char bitval)
{
DQ = 0;
if(bitval==1) DQ =1;
delay1(5);
DQ = 1;
}
void write_byte(char val)
{
uchar i;
uchar temp;
for (i=0; i<8; i++)
{
temp = val>>i;
temp &= 0x01;
write_bit(temp);
}
delay(5);
}
uchar read_bit(void)
{
uchar i;
DQ = 0;
DQ = 1;
for (i=0; i<3; i++);
return(DQ);
}
uchar read_byte(void)
{
uchar i;
uchar value = 0;
for (i=0;i<8;i++)
{
if(read_bit()) value|=0x01<<i;
delay(6);
}
return(value);
}
uint Read_Temperature(void)
{
uchar get[10];
uchar temp_lsb,temp_msb;
uint t;
uchar k;
ow_reset();
write_byte(0xCC);
write_byte(0x44);
delay1(5);
ow_reset();
write_byte(0xCC);
write_byte(0xBE);
for (k=0;k<2;k++){get[k]=read_byte();}
temp_msb = get[1];
temp_lsb = get[0];
t=temp_msb*256+temp_lsb;
t=t&0x0ff0;
return t>>4;
}
void wendu_dis()
{
a=Read_Temperature();
if((a>>7)==0)
{
write_com(0x80+0x40+11);
write_date(0x2b);
}
else
{
a=~a+1;
a=a&0x00ff;
write_com(0x80+0x40+11);
write_date(0x2d);
}
write_wendu(12,a);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -