DS18B20采用的是1-Wire总线协议方式,即用一根数据线实现数据的双向传输,而对于51系列单片机来说,硬件上不支持单总线协议,因此需用软件的方法来模拟单总线的协议时序来实现对DS18B20芯片的访问。DS18B20有严格的通信协议来保证数据传输的正确性和完整性。该协议定义了以下几种信号的时序:初始化时序、读时序、写时序。所有时序都是将单片机作为主设备,单总线器件作为从设备。
1.初始化时序
(1)DS18B20单总线初始化步骤。单总线上的所有器件均以初始化开始,主机发出复位脉冲(即将总线DQ拉低480~960μs),再等待(即将总线DQ拉高)15~60μs,然后判断从件是否有应答(即判断总线DQ是否为0),为0则表示从件有应答(即从器件发出持续60~240μs的存在脉冲,使主机确认从器件准备好)。初始化时序如图6-14所示。
图6-14 DS18B20初始化总线(启动)时序
(2)DS18B20初始化编程示例。详见6.4节74~81行。
2.读DS18B20的时序
(1)读DS18B20的时序如图6-15所示。
图6-15 DS18B20的读时序
读DS18B20的时序分别为读0时序和读1时序两个过程。读时序是在主机把单总线由高拉低(保持1μs以上)作为读开始,主机在拉低持续15μs时拉高单总线,接着读总线状态。读每一位的总持续时间不得少于60μs。
(2)读DS18B20测得的温度数据的编程。详见6.4节92~102行。
3.写DS18B20的时序
所谓写DS18B20,就是将一些命令传给DS18B20。
(1)DS18B20的写时序如图6-16所示。(www.xing528.com)
图6-16 DS18B20的写时序
1)主机对DS18B20写0时,将总线拉低60~120μs,然后拉高1μs以上。
2)主机对DS18B20写1时,将总线拉低1~15μs,然后拉高,总时间在60μs以上。
(2)写DS18B20的编程。详见6.4节第83~90行。
总之,初始化、读/写操作的共同点是:DS18B20在静态时总线必须为高电平,所有的读/写操作都是由拉低总线开始的,不同的操作保持的低电平时间间隙不一样。
4.DS18B20的ROM操作命令
DS18B20的ROM操作命令详见表6-6。
表6-6 DS18B20的ROM操作命令
5.存储器操作命令
存储器操作命令详见表6-7。
表6-7 存储器操作命令
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。