📄 ds18b20.c
字号:
//项目名称 :
//采用晶振:12M
//日期:2008-12-9
//#include <reg52.h> // 引用标准库的头文件
#include <math.h>
#include<intrins.h>
#include"reg51.h"
#include"DS18B20.h"
#define uchar unsigned char
#define uint unsigned int
#define Delay2us() _nop_();_nop_();_nop_();_nop_();
#define Delay8us() _nop_();_nop_();_nop_();_nop_();nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
sbit CS_18B20_DA=P1^5;
//**************************************************
void delay2(uint x)
{ for(;x>0;)
{ x--;
}
}
//********************************************************
void cs18b20_start(void)
{ uchar i;
CS_18B20_DA=1;
Delay2us();
CS_18B20_DA=0;
delay2(100);
CS_18B20_DA=1;
delay2(2);
for(i=0;i<250;)
{
if(CS_18B20_DA==0)
{
i=255;
}
}
delay2(30);
CS_18B20_DA=1;
}
//*****************************************************
void cs18b20_sen(uchar sen_data)
{ uchar i;
CS_18B20_DA=1;
for(i=0;i<8;i++)
{
CS_18B20_DA=0;
Delay2us();
CS_18B20_DA=sen_data&0x01;
sen_data=sen_data>>1;
Delay8us();
Delay8us();
Delay8us();
Delay8us();
CS_18B20_DA=1;
}
Delay8us();
}
//**********************************************
uchar cs18b20_receive(void)
{ uchar i;
uchar temp=0;
for(i=0;i<8;i++)
{
CS_18B20_DA=0;
_nop_();
temp=temp>>1;
CS_18B20_DA=1;
_nop_();
_nop_();
if(CS_18B20_DA==1)
{
temp=temp|0x80;
}
else
temp=temp&0x7f;
Delay8us();
Delay8us();
Delay8us();
Delay8us();
}
//CS_18B20_DA=1;
Delay8us();
Delay8us();
return(temp);
}
//************************************************
uint wdbh_control(void)
{ uchar temp_l,temp_h;
cs18b20_start();
cs18b20_sen(0xcc);
cs18b20_sen(0x44);
delay2(15);
cs18b20_start();
cs18b20_sen(0xcc);
cs18b20_sen(0xbe);
temp_l=cs18b20_receive();
temp_h=cs18b20_receive();
return((temp_h*256+temp_l)*6.25);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -