基于Matlab的一种小型温度检测系统的设计
2,基本操作:DS18B20的一线工作协议流程是:初始化→ROM操作指令→存储器操作指令→数据传输。对DS18B20 进行所有的读写操作都是从初始化开始的,主要分为初始化操作,读操作和写操作。
基于以上分析,对DS18B20的编程源码如下:
Init_DS18B20(void) //初始化函数
{DQ = 1; //DQ复位
Delay15(1); //稍做延时
DQ = 0; //单片机将DQ拉低
Delay15(32); //精确延时 大于 480us
DQ = 1; //拉高总线
Delay15(6); //延时90us
x=DQ; //读存在脉冲
delay15(20); //延时约270us
}
Write_DS18B20(unsigned char dat)//写一个字节
{
unsigned char i="0";//定义循环变量
for (i=0; i8; i++)
{
DQ = 0; //复位
DQ = dat0x01;//取数据的第i位并送出
Delay15(1);//延时
DQ = 1; //停止
dat>>=1;//右移
}
}
Read_DS18B20(void)//读一个字节
{
unsigned char i="0";
unsigned char dat = 0;
for (i=8;i>0;i--)
{
DQ = 0; // 复位
dat>>=1;
DQ = 1; // 给脉冲信号
if(DQ)
dat|=0x80;//取位脉冲并存入dat
delay15(1);//延时
}
return(dat);
}
评论