资源介绍
下面给出其中一小段程序:
* DS18B20温度传感器 *
* C51 *
* yajou 2008-06-28 无CRC *
********************************************************/
#include "reg51.h"
#include "intrins.h"
#include "DS18B20.h"
/********************************************************
* us延时程序 *
********************************************************/
void Delayus(uchar us)
{
while(us--); //12M,一次6us,加进入退出14us(8M晶振,一次9us)
}
/********************************************************
* DS18B20初始化 *
********************************************************/
bit Ds18b20_Init(void) //存在返0,否则返1
{
bit temp = 1;
uchar outtime = ReDetectTime; //超时时间
while(outtime-- && temp)
{
Delayus(10); //(250)1514us时间可以减小吗
ReleaseDQ();
Delay2us();
PullDownDQ();
Delayus(100); //614us(480-960)
ReleaseDQ();
Delayus(10); //73us(>60)
temp = dq;
Delayus(70); //us
}
return temp;
}
/********************************************************
* 写bit2DS18B20 *
********************************************************/
void Ds18b20_WriteBit(bit bitdata)
{
if(bitdata)
{
PullDownDQ();
Delay2us(); //2us(>1us)
ReleaseDQ(); //(上述1-15)
Delayus(12); //86us(45- x,总时间>60)
}else
{
PullDownDQ();
Delayus(12); //86us(60-120)
}
ReleaseDQ();
Delay2us(); //2us(>1us)
}
- 上一篇: DS18B20 多通道测温程序
- 下一篇: ds18b20多点测温c语言程序