前期准备
单线接口访问DS18B20的协议如下:
- 初始化
- ROM操作命令
- 存储器操作命令
- 处理/数据
初始化
单线总线上的所有处理均从初始化序列开始。初始化序列包括总线主机发出一复位脉冲,接着由从属器件送出存在脉冲。(我们只有一个温度传感器所以用不到)
1. 数据线拉到低电平“0”。
2. 延时480微秒(该时间的时间范围可以从480到960微妙)。
3. 数据线拉到高电平“1”。
4. 延时等待80微妙。如果初始化成功则在15到60微妙时间内产生一个由DS18B20所返回的低电平“0”.根据该状态可以来确定它的存在,但是应注意不能无限的进行等待,不然会使程序进入死循环,所以要进行超时判断。
5. 若CPU读到了数据线上的低电平“0”后,还要做延时,其延时的时间从发出的高电平算起(第(3)步的时间算起)最少要480微妙。
uchar Ds18b20Init()//初始化DS18B20
{
uchar i;
DSPORT=0;//数据线拉低
i=480;
while(i--);//延时480us
DSPORT=1;//数据线拉高
i=80;
while(i--);延时80us
i=60;
while(i--)<