基于单片机的数字温度计和数字钟的设计与研究内容摘要:
将该器件内的报警标志位置位,并响应主机发出的报警搜索命令。 .3 DS18B20 测温原理 图 4 中低温度系数晶振 的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器 1,高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器 2 的脉冲输入。 图中还隐藏着计数门,当计数门打开时, DS18B20 就对低温度系数振荡器产生的时钟脉冲进行计数,进而完成温度测量。 计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将- 55℃ 所对应的一个基数分别置入减法计数器 1 和温度寄存器中,计数器 1 和温度寄存器被预置在- 55℃ 所对应的一个基数值。 湖南科技大学本科生毕业设计(论文) 图 4 DS18B20 测温原理 图 减法计数器 1 对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器 1 的预置值减到 0 时,温度寄存器的值将加 1,减法计数器 1 的预置将重新被装入,减法计数器 1 重新开始对低温度系数晶振产生的脉冲信号进行计数。 如此循环直到减法计数器2 计数到 0 时,停止温度寄存器的累加,此时温度寄存器中的数值就是所测温度值。 图4 中的斜率累加器的输出用于修正减法计数器的预置值,只要计数器门仍未关闭就重复上述过程,直到温度寄存器值大致被测温度值。 由于 DS18B20 单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。 系统 对 DS18B20 的各种操作按协议进行。 操作协议为:初使化 DS18B20(发复位脉冲) → 发 ROM 功能命令 → 发存储器操作命令 → 处理数据。 DS18B20 引脚定义 及其指令集 DS18B20 引脚定义 : (1)DQ 为数字信号输入 /输出端; (2)GND 为电源地; (3)VDD 为外接供电电源输入端(在寄生电源接线方式时接地)。 DS18B20 引脚 封装如图 5: 湖南科技大学本科生毕业设计(论文) 2 图 5 DS18B20 引脚封装 根据 DS18B20 的通讯协议,主机(单片机)控制 DS18B20 完成温度转换必须经过三个步骤:每一次读写之 前都要对 DS18B20 进行 复位操作,复位成功后发送一条ROM 指令,最后发送 RAM 指令,这样才能对 DS18B20 进行预定的操作。 复位要求主CPU 将数据线下拉 500 微秒,然后 释放,当 DS18B20 收到信号后等待 16~ 60 微秒左右,后发出 60~ 240 微秒的存在低脉冲,主 CPU收到此信号表示复位成功。 以下 DS18B20的主要指令。 DS18B20 指令表: 表 5 ROM 指令表 指 令 约定代码 功 能 读 ROM 33H 读 DS1820 温度传感器 ROM 中的编码(即 64 位地址) 符合 ROM 55H 发出此命令之后,接着发出 64 位 ROM 编码,访问单总线上与该编码相对应的 DS1820 使之作出响应,为下一步对该 DS1820 的读写作准备。 搜索 ROM 0FOH 用于确定挂接在同一总线上 DS1820 的个数和识别 64 位 ROM 地址。 为操作各器件作好准备。 湖南科技大学本科生毕业设计(论文) 3 跳过 ROM 0CCH 忽略 64 位 ROM 地址,直接向 DS1820 发温度变换命令。 适用于单片工作。 告警搜索命令 0ECH 执行后只有温度超过设定值上限或下限的片子才做出响应。 表 6 RAM 指令表 指 令 约定代码 功 能 温度变换 44H 启动 DS1820 进行温度转换, 12 位转换时最长为 750ms( 9 )。 结果存入内部 9 字节 RAM 中。 读暂存器 0BEH 读内部 RAM 中 9 字节的内容 写暂存器 4EH 发出向内部 RAM 的 4 字节写上、下限温度数据命令,紧跟该命令之后,是传送两字节的数据。 复制暂存器 48H 将 RAM 中第 3 、 4 字节的内容复制到 EEPROM 中。 重调 EEPROM 0B8H 将 EEPROM 中内容恢复到 RAM 中的第 3 、 4 字节。 读供电方式 0B4H 读 DS1820 的供电模式。 寄生供电时 DS1820 发送 “ 0 ”,外接电源供电 DS1820 发送 “ 1 ”。 DS1820 使用中注意事项 DS1820 虽然具有测温系统简单、测温精度高、连接方便、占用口线少等优点,但湖南科技大学本科生毕业设计(论文) 4 在实际应用中也应注意以下几方面的问题: 较小的硬件开销需要相对复杂的 软件 进行补偿 ,由于 DS1820 与微处理器间采用串行数据传送,因此 ,在对 DS1820 进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。 在使用 PL/M、 C 等高级语言进行系统程序设计时,对 DS1820 操作部分最好采用汇编语言实现。 在 DS1820 的有关资料中均未提及单总线上所挂 DS1820 数量问题,容易使人误认为可以挂任意多个 DS1820,在实际应用中并非如此。 当单总线上所挂 DS1820 超过 8个时,就需要解决微处理器的总线驱动问题,这一点在进行多点测温系统设计时 要加以注意。 连接 DS1820 的 总线电缆是有长度限制的。 试验中,当采用普通信号电缆传输长度超过 50m 时,读取的 测温数据将发生错误。 当将总线电缆改为双绞线带屏蔽电缆时,正常通讯距离可达 150m,当采用每米绞合次数更多的双绞线带屏蔽电缆时,正 常通讯距离进一步加长。 这种情况主要是由总线分布电容使信号波形产生畸变造成的。 因此,在用 DS1820 进行长距离测温系统设计时要充分考 虑总线分布电容和阻抗匹配问题。 在 DS1820 测温程序设计中,向 DS1820 发出温度转换命令后,程序总要等待 DS1820的返回信号,一旦 某个 DS1820 接触不好或断线, 当程序读该 DS1820 时,将没有返回信号,程序进入死循环。 这一点在进行 DS1820 硬件连接和软件设计时也要给予 一定的重视。 测温电缆线建议采用屏蔽 4 芯双绞线,其中一对线接地线与信号线,另一组接VCC 和地线,屏蔽层在源端单点接地。 DS1302 时钟芯片 传统的数据记录方式是隔时采样或定时采样,没有具体的时间记录,因此只能记录数据而无法准确记录其出现的时间。 低功耗时钟芯片 DS1302 可以对年、月、日、周、时、分、秒进行计时,且具有闰年补偿等多种功能。 同时可为掉电保护电源提供可编程的充电功能,并且可以 关闭充电功能。 DS1302 内部结构图如图 6 所示。 湖南科技大学本科生毕业设计(论文) 5 图 6 DS1302 内部结构 引脚功能及结构 DS1302 的引脚排列 ,其中 Vcc1 为后备电源, VCC2 为主电源。 在主电源关闭的情况下,也能保持时钟的连续运行。 DS1302 由 Vcc1 或 Vcc2 两者中的较大者供电。 当 Vcc2 大于 Vcc1+ 时, Vcc2 给 DS1302 供电。 当 Vcc2 小于 Vcc1 时, DS1302 由 Vcc1 供电。 X1 和 X2 是振荡源,外接 晶振。 RST 是复位 /片选线,通过把 RST 输入驱动置高电平来启动所有的数据传送。 RST 输入有两种功能:首先, RST 接通控制逻辑,允许地址 /命令序列送入移位寄存器;其次, RST 提供终止单字节或多字节数据的传送手段。 当 RST 为高电平时,所有的数据传送被初始化,允许对 DS1302 进行操作。 如果在传送过程中 RST 置为低电平,则会终止此次数据传送, I/O 引脚变为高阻态。 上电运行时,在 Vcc≥ 之前, RST 必须保持低电平。 只有在 SCLK 为低电平时,才能将 RST置为高电平。 I/O 为串行数据输入输出端 (双向 ), SCLK 始终是输入 端。 DS1302 的工作原理 DS1302 工作时为了对任何数据传送进行初始化,需要将复位脚( RST)置为高电平且将 8 位地址和命令信息装入移位寄存器。 数据在时钟( SCLK)的上升沿串行输入,前8 位指定访问地址,命令字装入移位寄存器后,在之后的时钟周期,读操作时输出数据,写操作时输出数据。 时钟脉冲的个数在单字节方式下为 8+8( 8 位地址 +8 位数据),在多字节方式下为 8 加最多可达 248 的数据。 DS1302 的寄存器和控制命令 对 DS1302 的操作就是对其内部寄存器的操作, DS1302 内部共有 12 个寄存器,其中有 7 个 寄存器与日历、时钟相关,存放的数据位为 BCD 码形式。 此外, DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与 RAM 相关的寄存器等。 时钟突发寄存器可一次性顺序读写除充电寄存器以外的寄存器。 日历、时间寄存器及控制字如表 1 所示: 表 7 日历、时钟寄存器与控制字对照表 寄存器名称 7 6 5 4 3 2 1 0 1 RAM/CK A4 A3 A2 A1 A0 RD/W 秒寄存器 1 0 0 0 0 0 0 分寄存器 1 0 0 0 0 0 1 小时寄存器 1 0 0 0 0 1 0 日寄存器 1 0 0 0 0 1 1 月寄存器 1 0 0 0 1 0 0 湖南科技大学本科生毕业设计(论文) 6 星期寄存器 1 0 0 0 1 0 1 年寄存器 1 0 0 0 1 1 0 写保护寄存器 1 0 0 0 1 1 1 慢充电寄存器 1 0 0 1 0 0 0 时钟突发寄存器 1 0 1 1 1 1 1 最后一位 RD/W 为 “0”时表示进行写操作,为 “1”时表示读操作。 DS1302 内部寄存器列表如表 2 所示: 表 8 DS1302 内部主要寄存器分布表 寄存器名称 命令字 取值范围 各位内容 写 读 7 6 5 4 3 2 1 0 秒寄存器 80H 81H 0059 CH 10SEC SEC 分寄存器 82H 83H 0059 0 10MIN MIN 小时寄存器 84H 85H 0112 或 0023 12/24 0 A HR HR 日期寄存器 86H 87H 0128,29,30,31 0 0 10DATE DATE 月份寄存器 88H 89H 0112 0 0 0 10M MONTH 周寄存器 8AH 8BH 0107 0 0 0 0 0 DAY 年份寄存器 8CH 8DH 0099 10YEAR YEAR DS1302 内部的 RAM 分为两类,一类是单个 RAM 单元,共 31 个,每个单元为一个8 位的字节,其命令控制字为 COH~FDH,其中奇数为读操作,偶数为写操作;再一类为突发方式下的 RAM,此方式下可一次性读写所有的 RAM 的 31 个字节,命令控制字为 FEH(写)、 FFH(读)。 我们现在已经知道了控制寄存器和 RAM 的逻辑地址,接着就需要知道如何通过外部接口来访问这些资源。 单片机是通过简单的同步串行通讯与 DS1302 通讯的,每次通讯都必须由单片机发起,无论是读还 是写操作,单片机都必须先向 DS1302 写入一个命令帧,这个帧的格式如表 1 所示,最高位 BIT7 固定为 1, BIT6 决定操作是针对 RAM 还是时钟寄存器,接着的 5 个 BIT 是 RAM 或时钟寄存器在 DS1302 的内部地址,最后一个 BIT 表示这次操作是读操作抑或是写操作。 湖南科技大学本科生毕业设计(论文) 7 物理上, DS1302 的通讯接口由 3 个口线组成,即 RST, SCLK, I/O。 其中 RST 从低电平变成高电平启动一次数据传输过程, SCLK 是时钟线, I/O 是数据线。 具体的读写时序参考图 5,但是请注意,无论是哪种同步通讯类型的串行接口,都是对时钟信号敏感 的,而且一般数据写入有效是在上升沿,读出有效是在下降沿( DS1302 正是如此的,但是在芯片手册里没有明确说明),如果不是特别确定,则把程序设计成这样:平时 SCLK 保持低电平,在时钟变动前设置数据,在时钟变动后读取数据,即数据操作总是在SCLK 保持为低电平的时候,相邻的操作之间间隔有一个上升沿和一个下降沿。 图 7 DS1302 的命令字结构 湖南科技大学本科生毕业设计(论文) 8 第三章 系统整体硬件电路 系统整体硬件电路包括: 单片机主板电路 , 传感器数据采集电路, 时钟芯片电路 ,温度和时间显示电路。 主板电路 X T A L 218X T A L 119A L E30EA31P S E N29RS T9。基于单片机的数字温度计和数字钟的设计与研究
相关推荐
图 10 主程序流程图 图 11 读温度流程图 读出温度子程序 读出温度子程序的主要功能是读出 RAM 中的 9 字节,在读出时需进行 CRC 校验,校验有错时不进行温度数据的改写。 其程序流程图如 上 图 图 11 所 示。 初始化 调用显示子程序 1S 到。 初次上电 读温度值并处理显示数据刷 新、显示时间日历 发温度转换开始命令 N Y N Y Y 发 DS18B20 复位命令 发跳过
PDIP、TPFQ 和 PLCC 等三种封装形式,以适应不同产品的需求。 复位上限下限基于单片机的数字温度计设计9主要功能特性: 兼容 mcs51 指令系统 4k 可反复擦写(1000 次)ISP flash ROM 32 个双向 i/o 口 工作电压 2 个 16 位可编程定时/计数器 时钟频率 033mhz 全双工 UAET 串行中断口线 128x8bit 内部 ram 2 个外部中断源
压表,精度高、抗干扰能力强,可扩展性强、集成方便,还可与 PC 进行实时通信。 正是由于数字电压表的以上优点,本次毕业设计选择制作一个基于单片机的数字电压表。 单片机 单片机简介 单片机是一种集成电路芯片,采用超大规模技术把具有数据处理能力 (如算术运算,逻辑运算、数据传送、中断处理 )的微处理器 (CPU),随机存取数据存储器 (RAM),只读程序存储器 (ROM),输入输出电路 (I/O 口
中断源的中断服务 程序的入口地址。 MCS51单片机复位后,程序存储器 PC 的内容为 0000H,故系统从 0000H 单元开始取指令,执行程序。 64K 程序存储器中有 5个单元具有特殊用途,如下: 0003H:外部中断 0 入口地址。 000BH:定时器 0中断入口地址。 0013H:外部中断 1 入口地址。 001BH:定时器 1中断入口地址。 0023H:串行口中断入口地址。
值,当它们相等的时候显示 1000,以此类推,所以当 Rx=R0 的时候,表头显示1000,当 Rx= 时显示 500,称之为比例读数特性。 因此我们只要选取 10 不同标准的电阻 并适当的对小数点进行定位,就能得到不同的电阻测量值。 下图是数字万用表多量程电阻档电路 由此可以推 出 R R R R4等 图 图 (PTC)热敏电阻 R与晶体管 T组成了过压保护电路
8B20 出厂时被设置为 12 位) 表 3 DS18B20 温度转换时间表 R1 R0 分辨率 /位 温度最大转 换 时间 0 0 9 0 1 10 1 0 11 375 1 1 12 750 温度报警触发器 TH 和 TL,可通过软件写入户报警上下限。 高速暂存 RAM 为 8 字节的存储器,结构如图 3 所示。 图 3 DS18B20 字节定义 当 DS18B20 接收到温度转换命令后