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