《温传感器程序通信电子电子电气自动化_通信电子-电子电气自动化.pdf》由会员分享,可在线阅读,更多相关《温传感器程序通信电子电子电气自动化_通信电子-电子电气自动化.pdf(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第 4 章 系 统 程 序 的 设 计 4.1 系统设计内容 系统程序主要包括主程序、读出温度子程序、温度转换命令子程序、计算温 度子程序、测量序列号子程序、显示数据刷新子程序等。4.1.1 主程序 主程序主要功能是负责温度的实时显示、读出处理 DS18B20 的测量温度值。主程序流程图如图 4-1所示:图 4-1主程序流程图 4.1.2 读出温度子程序 读出温度子程序的主要功能是读出 RAM 中的 9 字节。在读出时须进行 CRC 校验,校验有错时不进行温度数据的改写。读出温度子程序流程图如图 4-2所示:图 4-2读出温度子程序流程图 4.1.3 温度转换命令子程序 温度转换命令子程序主要
2、是发温度转换开始命令,当采用 12 位分辨率时,转换时间约为 750ms。在本程序设计中,采用 1s 显示程序延时法等待转换的完 成。温度转换命令子程序流程图如图 4-3所示:图 4-3温度转换命令子程序流程图 4.1.4 计算温度子程序 计算温度子程序将 RAM 中读取值进行 BCD 码的转换运算,并进行温度值测量序列号子程序显示数据刷新子程序等主程序主程序主要功能是负责温度的实时显示读出处理的测量温度值主程序流程图如图所示图主程序流程图读出温度子程序读出温度子程序的主要功能是读出中的字节在读出时须进行校验校度转换命令子程序主要是发温度转换开始命令当采用位分辨率时转换时间约为在本程序设计中采
3、用显示程序延时法等待转换的完成温度转换命令子程序流程图如图所示图温度转换命令子程序流程图计算温度子程序计算温度子程序将必须转换成十进制值才能用于字符的显示的转换精度为位为了提高精度采用位在采用位转换精度时温度寄存器里的值是以为步进的即温度值为寄存器里的二进制值乘以就是实际的十进制温度值通过观察表可以发现一个十进制与二进 图 4-4计算温度子程序流程图 4.1.5 温度数据的计算处理方法 从 DS18B20 读取出的二进制值必须转换成十进制值,才能用于字符的显示。DS18B20的转换精度为 912 位,为了提高精度采用 12 位。在采用 12 位转换 精度时,温度寄存器里的值是以 0.0625
4、为步进的,即温度值为寄存器里的二进 制值乘以 0.0625,就是实际的十进制温度值。通过观察表 4-1可以发现,一个十进制与二进制间有很明显的关系,就是把 二进制的高字节的低半字节和低字节的高半字节组成一字节,这个字节的二进制 化为十进制后,就是温度值的百、十、个位字节,所以二进制值范围是 0F,转换成十进制小数就是 0.0625 的倍数(015 倍)。这样需要 4 位的数码管来表 示小数部分。实际应用不必这么高的精度,采用 1 位数码管来显示小数,可以精 确到 0TC。表 4.5 二进制与十进制的近似对应关系表 测量序列号子程序显示数据刷新子程序等主程序主程序主要功能是负责温度的实时显示读出
5、处理的测量温度值主程序流程图如图所示图主程序流程图读出温度子程序读出温度子程序的主要功能是读出中的字节在读出时须进行校验校度转换命令子程序主要是发温度转换开始命令当采用位分辨率时转换时间约为在本程序设计中采用显示程序延时法等待转换的完成温度转换命令子程序流程图如图所示图温度转换命令子程序流程图计算温度子程序计算温度子程序将必须转换成十进制值才能用于字符的显示的转换精度为位为了提高精度采用位在采用位转换精度时温度寄存器里的值是以为步进的即温度值为寄存器里的二进制值乘以就是实际的十进制温度值通过观察表可以发现一个十进制与二进小数部分 二进制值 0 1 2 3 4 5 6 7 8 9 A B C D
6、 E F 十进制值 0 0 1 1 2 3 3 4 5 5 6 6 7 8 8 9 4.2 源程序 4.2.1 DS18B20的各条 ROM 命令(1)Read ROM33H。这条命令允许总线控制器独到 DS18B20 的 8 位系 列编码、唯一的序列号和 8 位 CRC 码。只要在总线上存在单只 DS18B20 时,才 能使用该命令。如果总线上有不止一个从机,则当所有从机试图同时传送信号时 就会发生数据冲突(漏极开路连在一起形成相 与”的效果)。(2)Match ROM55H.这是一条匹配 ROM 命令,后跟 64 位 ROM 序列,让总 线控制器在多点总线上定位一只特定的 DS18B20.
7、只有与 64 位 ROM 序列完全匹 配的 DS18B20才能响应随后的存储器操作.所有与 64 位 ROM 序列不匹配的从机 都将等待复位脉冲 这条命令在总线上有单个或多个器件时都可以使用.(3)Skip ROM0CCH.这条命令允许总线控制器不用提供 64 位 ROM 编码就使 用存储器操作命令,在单点总线情况下,可以节省时间.如果总线上不止一个从机,则在 Skip ROM命令之后跟着发一条读命令 由于多个从机同时传送信号,所以总 线上就会发生数据冲突(漏极开路下拉效果相当于相 与”o)(4)Search ROM0F0H。当一个系统初次启动时,总线控制器可能并不知 道单线总线上有多少个器件
8、或它们的 64 位 ROM 编码。搜索 ROM 命令允许总线 控制器用排除法识别总线上的所有从机的 64 位编码。(5)Alarm Search0ECH。这条命令的流程与 Search ROM相同。然而,只 有在最近一次测温后遇到符合报警条件的情况下,DS18B20 才会响应这条命令。报警条件定义为温度高于 TH 或低于 TL o只要 DS18B20 不掉电,报警状态将一 直保持,直到再一次测得的温度值达不到报警条件。(6)Write Scratchpad4EH。这条命令向 DS18B20 的暂存器 TH 和 TL 中写 入数据。可以在任何时刻发出复位命令来中止写入。(7)Read Scrat
9、chapad0BEH。这条命令读取暂存器的内容。读取将从第一 字节开始,一直进行下去,直到第九字节(CRC)读完。如果不想读完所有字节,则控制器可以测量序列号子程序显示数据刷新子程序等主程序主程序主要功能是负责温度的实时显示读出处理的测量温度值主程序流程图如图所示图主程序流程图读出温度子程序读出温度子程序的主要功能是读出中的字节在读出时须进行校验校度转换命令子程序主要是发温度转换开始命令当采用位分辨率时转换时间约为在本程序设计中采用显示程序延时法等待转换的完成温度转换命令子程序流程图如图所示图温度转换命令子程序流程图计算温度子程序计算温度子程序将必须转换成十进制值才能用于字符的显示的转换精度为
10、位为了提高精度采用位在采用位转换精度时温度寄存器里的值是以为步进的即温度值为寄存器里的二进制值乘以就是实际的十进制温度值通过观察表可以发现一个十进制与二进在任何时间发出复位命令来中止读取。(8)Copy Scratchpad48H。这条命令把暂存器的内容拷贝到 DS18B20 的 E2PROM 存储器里,即把温度报警触发字节存入非易失性存储器里。如果总线控 制器在这条命令之后跟着发出读时间隙,而 DS18B20 又忙于把暂存器拷贝到 ERROM 存储器,则 DS18B20 就会输出一个 0;如果拷贝结束,则 DS18B20输 出 1。如果使用寄生电源,则总线控制器必须在这条命令发出后立即启动强
11、上拉,并最少保持 10ms。(9)Convert T44H。这条命令启动一次温度转换而无需其他数据。温度转 换命令被执行后 DS18B20 保持等待状态。如果总线控制器在这条命令之后跟着 发出读时间隙,而 DS18B20 又忙于做时间转换,则 DS18B20 将在总线上输出 0;如果温度转换成功,则输出 1。如果使用寄生电源,则总线控制器必须在发出这 条命令后立即启动强上拉,并保持 500ms 以上时间。(10)Recall E20B8H。这条命令把报警触发器里的值拷贝回暂存器。这种 拷贝操作在 DS18B20 上电时自动执行,这样器件一上电暂存器里马上就存在有 效的数据了。若在这条命令发出之
12、后发出读数据隙,器件会输出温度转换忙的标 识:0 表示忙;1 表示完成。(11)Read Power Supply0B4H。若把这条命令发给 DS18B20 后发出读时间 隙,器件会返回它的电源模式 0:0 表示寄生电源;1 表示外部电源 测量序列号子程序显示数据刷新子程序等主程序主程序主要功能是负责温度的实时显示读出处理的测量温度值主程序流程图如图所示图主程序流程图读出温度子程序读出温度子程序的主要功能是读出中的字节在读出时须进行校验校度转换命令子程序主要是发温度转换开始命令当采用位分辨率时转换时间约为在本程序设计中采用显示程序延时法等待转换的完成温度转换命令子程序流程图如图所示图温度转换命令子程序流程图计算温度子程序计算温度子程序将必须转换成十进制值才能用于字符的显示的转换精度为位为了提高精度采用位在采用位转换精度时温度寄存器里的值是以为步进的即温度值为寄存器里的二进制值乘以就是实际的十进制温度值通过观察表可以发现一个十进制与二进