基于单片机的数字温度计的设计本科毕业论文(编辑修改稿)内容摘要:

8脚 VCC2作 为主电源引脚; 钦州学院本科毕业论文 (设计 ) 7 图 DS1302管脚及内部结构图 DS1302的寄存器 DS1302内部含有时钟相关的寄存器,通过向 相关 寄存器写入 一些 命令字实现 对时钟 DS1302的操作,例如 在需改变 某时刻 分 的初 始值, 首 先 要 把命令字 82H写入 寄存器 ,然后 就可以把初始值写入分 寄存器; 当某时刻分的值需 要读出 时 ,需要先写入命令字 82H,然后才 可以 从 分 寄存器读取数据。 表 DS1302内部和时钟相关的寄存器分布。 表 DS1302内部和时钟相关的寄存器分布 寄存器名称 命令字 取值范围 各位名称 写 读 7 6 5 4 3 2 1 0 秒寄存器 80H 81H 00~59 CH 10SEC SEC 分寄存器 82H 82H 00~59 0 10MIN MIN 时寄存器 84H 85H 01~12, 00~23 12/24 0 AP HR HR 日寄存器 86H 87H 01~28, 29,30,31 0 0 10DATE DATE 月寄存器 88H 89H 01~12 0 0 0 10M MONTH 周寄存器 8AH 8BH 01~07 0 0 0 0 0 DAY 年寄存器 8CH 8DH 09~99 10YEAR 10YEAR 上表中各寄存器存放的数据位均为 BCD码,所用符号的意义如下: ( 1) CH为时钟停止位, CH=0,振荡器开始工作; CH=1,振荡器停止工作。 黄日刚 基于单片机的数字温度计的设计 8 ( 2) 10SEC为秒的十位 数字, SEC为秒的个位数字; ( 3) 10MIN为分的十位数字, MIN为分的个位数字; ( 4) AP为小时的格式设置位, AP=0,上午模式( AP); AP=1,下午模式( PM); ( 5) 10DATE为日期的十位数字, DATE为日期的个位数字; ( 6) 10M为月的十位数字, MONTH为月的个位数字; ( 7) DAY为周的个位数字; ( 8) 10YEAR为年的十位数字, YEAR为年的个位数字; DS1302内部的 RAM共有 两 种 ,一 种 是单个 RAM单元, 总共 31个,一个 8位的字节 作为每一个单元 [13]。 C0H到 FDH作为 命令控制字 ,偶数 表示 写操作 ,奇数表示读操作 ;另 一种是 突发方式下的 RAM, 所有的 RAM的 31个字节 可一次性 被 读写 , FFH和FEH分别作为读写 命令控制字。 在 一般情况下,不需要对 RAM进行操作。 DS1302的读写方式 如图 DS1302的命令字结构。 第 8位 为 最高 控制 位,当它为 1时, 表示 允许写入;如果不为 1,则 表示 禁止写入。 第 7位 表示 操作对象是 RAM还是寄存器,该位为 1,对 RAM操作;不为 1,对时钟寄存器操作。 最后一位为 0,表示写;为 1,表示读。 剩下的 5个位是 RAM或时钟寄存器的内部地址。 1 RAM/CK A4 A3 A2 A1 A0 R/W 图 DS1302的命令字结构 图 DS1302工作时序图 单片机和 DS1302之间的通信协议规定:无数据传递时, SCLK这个引脚会 保持低电平 的状态 ,此时如果 CE从低电平变成高电平时即启动数据传输, CE为低电平时禁钦州学院本科毕业论文 (设计 ) 9 止数据传输。 在时钟脉冲的上升沿数据 被 写入 到时钟芯片内, 而在时钟脉冲的 另一种状态,数据被 从 时钟芯片 中读出。 传递数据时,低位( bit0)在前,高位( bit7)在后。 工作时序如图。 根据这些规则,即可对 DS1302进行读写 操作。 温度传感器 DS18B20 DS18B20 是 新 研发生产 的 传感器, 具备单总线方式和 数字化 的特点 , 这种传感器 适配微处理器 属于 一种 改进型 器件,具备了 智能 化的特点 ,可直接读出被测温度 [14]。 这种温度传感器的内部都刻录有 64 位序列号, 做到每个器件序号的唯一性,这种特点有助于在通信过程中的器件识别。 又 采用单总线这样的 独特的接口方式, 也就是多个数字式传感器可以同时挂在 一 根 信号线上, 所以比较容易实现 用 单块 微控制器去控制 分布 在 很多 区域的 DS18B20。 这样的一 种 特性在 过程监测和控制、 机器 温度探测 、 仪器 温度探 测 、 建筑物温度 探测 等方面 都极其 有用 [1516]。 图 是 DS18B20 的引脚排列,表 是 DS18B20 的引脚说明,图 是DS18B20 的方框图。 有两个字节的温度寄存器包含于 高速暂存器 中 , 传感器采集得的温度数据被存储到 这两个寄存器 中,以便后续的输出。 每个器件的片序列号被存放到 64 位只读存储器中。 除 了这些 , 一个字节的配置寄存器和 一个 用于 温度报警值 存储的 寄存器 也包含在这个 高速暂存器 里。 有这种 配置寄存器 , 用户 可以设定 温度的精度 为 1 1 10 还有 9 位 这四种中的其中一种。 配置寄存器 , TL 和 TH 是 一种不容易丢失数据 的可擦除程序寄存器, 因此 在器件 得不到供 电 的情况下寄存器中存储的数据依然保留着。 图 DS18B20引脚图 图 DS18B20方框图 黄日刚 基于单片机的数字温度计的设计 10 表 DS18B20 的引脚说明表 DS18B20 引脚详细说明 8 引脚 SOIC 封装 T092 封装 符号 说明 5 1 GND 接地 4 2 DQ 数据输入 /输出引脚。 对于单线操作:漏极开路。 当工作在寄生电源模式时用来提供电源。 3 3 VDD 可选的 VDD 引脚。 工作于 寄生电源模式时 VDD 必须接地。 所有表中未提及的脚均都无连接 DS18B20 接口电路 DS18B20 使用 一个单线端口就能够实现通讯,其中使用的是一种非常 独 特 的单总线协议。 当 在 所有 器件 都 经由 漏极开路端口或者 一个 3态端口与总线连接 到一块 的情况下 ,控制线需要连接一个弱上拉电阻。 在 所设计的 总线系统 上 ,微控制器 会 根据每个器件独有的 64 位片序列号 来 辨认总线上的器件和记录总线上的器件地址。 因为每个 器件内 都 有一个独特的片序列码, 所有 从理论上讲在单根 总线 上能够 连接的器件个数是无限的,但是在实际应用中总线上挂 有的器件越多 ,温度检测的时间也越长,精度也有所下降。 DS18B20 有两种供电模式,一种是外部电源供电模式, 即把外部电源 接到 VDD 引脚 即可完成供电 , 另一种是 寄生电源 供电 模式,该模式允许 DS18B20工作于无外部电源需求状态。 在本设计中 DS18B20 采用外部供电模式,把 5V 电源接到 VDD 引脚, 这是一种典型的接法, 见图。 采用这种接法的 好处 就 是单总线上 省去了 强上拉。 此外 在温度转换期间 总线不用总维持在 高电平。 图 DS18B20 典型接口电路 DS18B20 工作原理 钦州学院本科毕业论文 (设计 ) 11 DS18B20 的 显著特点 是它 能够 直接读数字的温度传感器。 DS18B20 成功 启动 之后 处于 低功耗等待状态, 如果要进行 温度测量 以及 AD 转换时, 主 控制器 向传感器 发送 [44H]命令。 完成这个操作后 , 进行温度测量, 转换后得 的温度数据以两个字节的形式被 存放 到高速暂存器的温度寄存器中, 接着 DS18B20 继续 处在 等待状态 [17]。 采用 外部电源供电 模式 下的 DS18B20, 主 控制器在 向它发送 温度转换指令之后 接着 发起“读时序”, 如果 温度传感器把检测来的 温度 转换完毕 则返回 1, 处 在温度转换 过程则 返回 0。 由一个或多个从机和一块总线控制器组成的系统通常称为 单总线系统。 当只有一只从机挂在总线上时,系统被称为“单点”系统;如果由多只从机挂在总线上,系统被称为“多点” 系统。 在本设计中 DS18B20 只能充当从机的角色。 单总线系统中 的指令 和数据 的传递 一般 从最低有效位开始 ,器件间的通信要严格遵循通信协议。 通过单线总线端口访问 DS18B20 的协议如下: 步骤 1:初始化。 在 单总线 中,初始化序列是任何 执行操作处理 的 开始。 组成 初始化序列 的内容有两个部分, 一个 部分是 由总线控制器 向从机 发出的复位脉冲 ,另一部分是 从机 向总线控制器 发出的 存在脉冲。 有 存在脉冲 的产生说明总线上有 DS18B20器件, 同时也提示主控制器,表明自身 已 经做 好 执行其它 操作 的准备。 步骤 2: ROM 操作指令。 如果有一个存在脉冲被 总线控制器探测到, 控制器 就 会发送 一条 ROM 指令。 当有若干只 DS18B20 连接到 总线上 , 总线控制器 要 识别 总线上的器件型号和器件数目也是得根据这些指令 来完成的。 这些指令都是 基于 每个 器件独有的 64 位 ROM 片序列码, 这样可以 让总线控制器知道对众多器件中的具体一个进行操作。 ROM 指令 总共为五 条, 每一条指令的长度 都 为 八 位。 总线控制器 只有 在发出一条 ROM指令之后 才能 发 送 一条 DS18B20功能指令。 控制 DS18B20的 5条 ROM指令如下: (1)搜索 ROM 指令 [F0H]。 给系统上电完成系统 初始化,总线控制器 得到从机的型号和数目是根据 识别总线上所有 ROM 片序列码 来实现的。 器件的 ROM 编码被总线控制器通过搜索 ROM 指令 不停的 搜索, 直到 所有从机器件 被确认为止。 当 只有一 个 从机 在总线上时 ,那么可以用较为简单的读取 ROM 指令代替搜索 ROM 指令。 在每次搜索 ROM 指令之后,总线控制器必须返回步骤 1。 (2)读取 ROM指令 [33H]。 当 总线上 单挂着一个 DS18B20 温度传感器 的情 况下 ,这条命令 才能够直接使用。 在 这样的指 令 下 总线控制器 可以直接 读取从机 中 的 64 位黄日刚 基于单片机的数字温度计的设计 12 片序列码 ,不 在 需要用到 搜索 ROM 指令。 如果总线上不止 有 一 个 从机 时 , 直接使用这条指令就会发生数据冲突, 因为 所有从机 在接收到这条指令之后会 同时 向控制器 传送信号。 (3)匹配 ROM 指令 [55H]。 匹配 ROM 指令, 控制器发送这个指令后,接着发送器件的 64 位 ROM 编码序列, 目的是在 总线上 寻找与所发送的编码序列匹配的器件。 当总线上的某个器件的片序列号与从控制器传送来的片序列号相匹配时, 此器件就会做出响应,然后执行随后的其它操作指令 ;所有 和 64 位 ROM 片序列码不匹配的 器件 都将等待复位脉冲。 (4)忽略 ROM 指令 [CCH]。 此 条指令 的功能是让 总线控制器 在没有 得到某个器件片序列 码 的情况下也可以 发送 功能指令。 比如 , 为了实现温度转换的操作, 总线控制器 首先把 一条忽略 ROM 指令 发送到温度传感器 , 接着又把 温度转换指令 [44H]发送到温度传感器。 值得 注意 的是 当总线上 仅有一个器件时 , 不管怎样 , 当要把 一条读取暂存器指令 [BEH]发出之前必须先发送忽略 ROM指令。 当 总线 上只有一个器件时,采 用 这条 命令 可以提高系统的反应速度 , 因为 器件 不用 发回 64 位 ROM 编码 , 省掉了一部分的时间。 总线上有 若干个 从机 的情况下 , 不可以使用这条指令 , 以避免 因多只从机同时 发送数据而引发的 数据冲突。 (5)报警搜索指令 [ECH]。 在多个器件挂接在总线上的情况下, 此 条命令 用于搜索符合报警条件的器件, 只有满足报警条件的从机才对该命令作出响应。 DS18B20会做出响应的条件是 在最近一次测温后遇到符合报警 的温度。 在每次报警搜索指令周期之后,总线控制器必须返回步骤 1。 步骤 3: DS18B20 功能指令。 要完成对 DS18B20 的操作不得不使用。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。