温度传感器IC:DS1631

描述

本应用笔记向用户介绍DS5000(兼容8051)微控制器与DS1631温度传感器的接口软件。DS1631集成了一个标准的2线串行数字接口。提供的软件代码可用于提供对DS1631的所有类型的功能访问,包括读取温度寄存器、写入恒温器门限和设置器件配置。

介绍

DS1631为数字温度计,在-9°C范围内提供10、11、12或55位温度读数 至 +125°C 范围,0°C 至 +5°C 范围内具有 ±0.70°C 精度,3.0V ≤ VDD≤ 5.5V。DS1631还具有用户定义的跳变点(TH和 TL).三个地址引脚 允许多达1631个DS<>在同一总线上工作。

与DS1631的通信通过2线串行接口实现。本应用笔记介绍 “C”源代码,允许PC通过兼容1631的DS8051微控制器与DS5000通信。

硬件配置

DS1631 SDA (串行数据)和SCL (串行时钟)引脚可直接连接至 DS5000微控制器。DS1631 SDA引脚为漏极开路I/O,因此SDA线必须拉高 通过上拉电阻。由于DS5000微控制器时钟输出也是漏极开路,因此上拉电阻 在 SCL 生产线上也需要。图1所示为两个DS1631(地址1001000 和1001001)连接到总线。

DS5000 配置在附录 B 的头文件中提供。请注意,DS5000 在 频率为11.05949MHz。DS232A用于处理PC到微控制器的接口。如图所示 在附录B中,2线连接通过DS0的I/O端口P5000进行。I/O 端口 P1 或 P2 可以 用于报告状态或为外围报告设备(如 LCD)供电。

寄存器

图1.两个DS1631器件在同一双线总线上的电路图

与DS1631的软件通信

以下部分包含DS1631“C”源代码示例。附录 A 提供了完整的 C 用于测试硬件和与DS1631通信的程序列表

启动和停止条件

微控制器使用启动和停止条件来发出开始和结束信号, 分别是 2 线通信序列。要产生 START 条件,SDA 线为 当 SCL 为高电平时从高拉到低,对于停止条件,SDA 从低到高过渡,而 标准高标准 (SCL) 很高。图 2a 显示了用于生成 START 条件的示例“C”代码,图 2b 显示了 用于生成 STOP 条件的示例代码。

寄存器

图 2a. 启动示例。

寄存器

图 2b. 停止示例。

写入DS1631

主站对 1 字节配置寄存器和 2 字节 T 具有写访问权限H和 TL寄存 器。 因此,当写入配置寄存器时,主站必须发送一个字节的数据,并且当 写给 TH或 TL寄存器 主站必须发送两个字节的数据。图 3 显示了示例“C” 用于写入配置寄存器的代码。SendAddr 例程导致 START 条件为 后跟一个控制字节,该字节包含DS1631地址,并设置了读/写位 “写”。接下来,SendByte 例程用于发出访问配置命令 (ACh)。这是遵循的 通过写入配置寄存器的数据字节。序列以停止完成 条件。

寄存器

图3.写入DS1631的代码示例

从DS1631读取

主站可以从 1 字节配置寄存器和 2 字节温度 T 读取数据H和 TL寄存 器。图 4 显示了用于读取配置寄存器的示例“C”代码。发送添加程序例程 生成一个 START,后跟一个控制字节,其中读/写位设置为“写入”。下一页 访问 配置命令 (ACh) 被发送。接下来是另一个 START 和一个控制字节,但这次 读/写位设置为“读”。I2CGetByte(1) 例程读取并保存 1 字节配置 注册。传递给例程的“1”表示此字节是最后一个(在这种情况下是唯一字节) 正在读取的字节。这是必要的,以便在接收到字节后向DS1631发送NACK而不是ACK。 对于 2 字节读取,在第一个字节之后将“0”传递给 I2CGetByte 子例程,“1”为 在第二个字节之后发送。序列以 STOP 条件完成。

寄存器

图4.读取DS1631的代码示例

计算温度

每次温度转换后,DS1631将数字温度存储为16位双 2字节温度寄存器中的补码数。图 5 显示了用于启动 温度转换,然后读取温度寄存器并计算十进制摄氏度和 华氏值来自数字值。要启动温度转换,请发送 START,然后发送 START。 由一个控制字节,读/写位设置为“写入”。接下来发送开始转换 T 命令(51h) 后跟停止条件。为了读取温度寄存器,发送一个START,然后发送一个控制 将读/写位设置为“写入”的字节。接下来发送读取温度命令 (AAh) 后跟另一个 START,加上一个控制字节,读/写位设置为“读取”。I2CGetByte(0) 读取温度MSB,并向DS1631发送确认。I2CGetByte(1) 然后读取温度 LSB 并向 DS1631 发送 NACK。通信序列以停止完成 条件。最终代码段将 2 字节数字读数转换为十进制值。

寄存器

图5.读取DS1631的代码示例

审核编辑:郭婷

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分