📄 18b20.h
字号:
#include <reg52.h>
//#include <stdio.h>
sbit EQ=P2^0;
#define uint unsigned int
#define uchar unsigned char
uchar temp_int,temp_piont;
uint flag;//器件检测位
uint templ;
uint temph;
void delay18b20(unsigned int i)
{
while(--i);
}
void initial()
{
EQ=1;
delay18b20(1);
EQ=0;
delay18b20(600);
EQ=1;
delay18b20(30);
flag=EQ;
delay18b20(20);
while(flag);
}
void wrbyte(uchar word)
{
uchar i;
for(i=0;i<8;i++)
{
EQ=0;
EQ=word&0x1;
delay18b20(15);
EQ=1;
word>>=1;
}
}
uint rebyte(void)
{
uchar i,word=0;
for(i=0;i<8;i++)
{
word>>=1;
EQ=0;
EQ=1;
delay18b20(1);
if(EQ) word|=0x80;
delay18b20(8);
}
return(word);
}
readtemp()
{
initial();
wrbyte(0xcc);//跳过ROM匹配
wrbyte(0x44);//启动温度转换
delay18b20(160);
initial();
wrbyte(0xcc);//跳过ROM匹配
wrbyte(0xbe);//读取温度寄存器等
templ=rebyte();
temph=rebyte();
temp_int=((temph<<4)&0x70)|((templ>>4)&0x0f);//整数部分
temp_piont=(templ&0x0f)*5;//小数部分
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -