单总线协议规定一条数据线传输串行数据,时序有严格的要求,对于DS18B20的程序设计,必须遵守单总线协议。DS18B20操作主要分为初始化、写数据、读数据几个步骤。下面具体介绍操作步骤。
1.初始化
初始化是单片机对DS18B20的基本操作,其时序如图5-3所示。初始化主要目的是单片机感知DS18B20的存在并为下一步操作做准备,同时启动DS18B20,程序设计根据时序进行。DS18B20初始化操作步骤如下:
图5-3 DS18B20初始化时序
1)将数据线置为高电平1,然后延时(可有可无)。
2)将数据线拉到低电平0,然后延时750μs(时间范围是480~960μs),由调用延时函数决定。
3)将数据线拉到高电平1。如果单片机P1.0接DS18B20的DQ引脚,则P1.0此时设置高电平,表示单片机释放总线管理权。此时,P1.0的电平高低由DS18B20的DQ输出决定。
4)延时等待。如果初始化成功则在15~60ms后总线上产生一个由DS18B20返回的低电平0,据该状态可以确定它的存在。但是,不能无限等待,不然会使程序进入死循环,所以要进行超时判断。
5)单片机读到数据线上的低电平0,说明DS18B20存在并进行了响应,还要进行延时。延时的时间从发出高电平算起(第5步)最少要480μs。
6)将数据线再次拉到高电平1,结束初始化步骤。
从单片机对DS18B20的初始化过程来看,单片机要对DS18B20操作,必须先确定DS18B20的存在,当DS18B2响应后,单片机才能进行下面的操作。
2.对DS18B20写数据
1)数据线先置低电平0,发送起始信号,时序如图5-4所示。
图5-4 DS18B20的写时序
2)延时时间为15μs。
3)按低位到高位顺序发送数据(一次只发送一位)。(www.xing528.com)
4)延时时间为45μs,等待DS18B20接收。
5)将数据线拉到高电平1,单片机释放总线。
6)重复步骤1)~5),直到发送完整个字节。
7)最后将数据线拉高,单片机释放总线。
3.DS18B20读数据
1)将数据线拉高,时序如图5-5所示。
图5-5 DS18B20的读时序
2)延时2μs。
3)将数据线电平拉低到0。
4)延时6μs,延时比写数据时间短。
5)将数据线拉高到1,释放总线。
6)延时4μs。
7)读数据线的状态得到一个状态位,并进行数据处理。
8)延时30μs。
9)重复步骤1)~7),直到读取完一个字节。
只有在熟悉了DS18B20操作时序后,才能对其进行编程。由于DS18B20向单片机提供的数据较多,如器件编号、温度的高位和低位、设定温度的上限和下限等,所以DS18B20提供了自己的指令。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。