📄 ds18b20.c
字号:
#include"init.h"
#include"ds18b20.h"
#include"delay.h"
/**********************************************************
//控制总线
**********************************************************/
bit init_18b20()
{
bit dat=0;
DQ=1;
delay_n10us(1);
DQ=0;
delay_n10us(40);
delay_n10us(30);
DQ=1;
delay_n10us(6);
dat=DQ;
delay_n10us(10);
return(dat);
}
/**********************************************************
//读一个字节
**********************************************************/
uchar readonechar()
{
uchar i,dat=0;
for(i=8;i>0;i--)
{
DQ=0;
dat>>=1;
DQ=1;
if(DQ)
dat|=0x80;
delay_n10us(3);
}
return(dat);
}
/**********************************************************
//写一个字节
**********************************************************/
void writeonechar(uchar dat)
{
uchar i;
for(i=8;i>0;i--)
{
DQ=0;
DQ=dat&0x01;
delay_n10us(3);
DQ=1;
dat>>=1;
}
delay_n10us(3);
}
/**********************************************************
//读取温度值
**********************************************************/
int readtemperture()
{
uchar a=0,c=0;
uint b=0,t=0;
init_18b20();
writeonechar(0xcc);
writeonechar(0x44);
delay_nms(10);
init_18b20();
writeonechar(0xcc);
writeonechar(0xbe);
a=readonechar(); //低位
b=readonechar(); //高位
b<<=8;
t=a|b;
return(t);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -