📄 18b20.c
字号:
#include <at89x52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
bit ready;
sbit Q=P2^7;
void delay_t (uint tt)
{
while (tt--);
}
//复位18B20
void init_18b20 (void)
{
Q=1;
_nop_ ();
Q=0;
delay_t (160);
Q=1;
delay_t (9);
ready=Q;
delay_t (100);
}
//写入BYTE到18B20
void w_18b20 (uchar dat)
{
unsigned char i;
for(i=8;i;i--)
{
Q=0;
Q=dat&0x01;
delay_t(5); //延时61us(在I/O线由高电平变为低电平之后DS1820在15us~60us之间对 I/O 线采样)
Q=1;
dat>>=1;
}
}
//读入数据
uchar r_18b20 (void)
{
unsigned char i,dat=0;
for(i=8;i;i--)
{
Q=0;
dat>>=1;
Q=1;
if(Q)
dat|=0x80;
delay_t(5);
}
return dat;
}
get_18b20 (void)
{
uint Low,Hight,a;
float T;
init_18b20 ();
w_18b20 (0xcc);
w_18b20 (0x44);
delay_t (120);
init_18b20 ();
w_18b20 (0xcc);
w_18b20 (0xbe);
Low=r_18b20 ();
Hight=r_18b20 ();
a=Hight;
a=a<<8;
T=(a|Low)*0.0625*100;
return T;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -