图8 DS18B20采用寄生电源的电路图 第 三 章 系统程序的设计 系统程序主要包括主程序、读出温度子程序。温度转换命令子程序、计算温度子程序和显示数据刷新子程序。 一 主程序 主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。 主程序流程见图9所示。 主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。这样可以在一秒之内测量一次被测温度,其程序流程见图9所示。
图9 主程序流程图 二 读出温度子程序 读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。其程序流程图如图10示。
图10 读出温度子程序流程图
三 温度转换命令子程序 温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中,采用1s显示程序延时法等待转换的完成。温度转换命令子程序流程图11所示 图11 温度转换命令子程序流程图
四 计算温度子程序 计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定, 其程序流程图如图12所示。 图12 计数温度子程序流程图 五 显示数据刷新子程序 显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高显示位为0时将符号显示位移入下一位。程序流程图如图13。 图13 显示数据刷新子程序流程图
六 DS18B20的各条ROM命令 1.Read ROM[33H]。这条命令允许总线控制器读到DS18B20的8位系列编码、唯一的序列号和8位CRC码。只有在总线上存在单只DS18B20时,才能使用该命令。 如果总线上有不止一个从机,则当所有从机试图同时传送信号时就会发生数据冲突(漏极开路连在一起形成相“与”的效果)。 2. Match ROM[55H]。这是一条匹配ROM命令,后跟64位ROM序列,让总线控制器在多点总线上定位一只特定的DS18B20。只有与64位ROM序列完全匹配的DS18B20才能响应随后的存储器操作。所有与64位ROM序列不匹配的从机都将等待复位脉冲。这条命令在总线上有单个或多个器件时都可以使用。 3. Skip ROM[0CCh=H]。这条命令允许总线控制器不用提供64位ROM编码就使用存储器操作命令,在单点总线情况下,可以节省时间。如果总线上不止一个从机,则在Skip ROM命令之后跟着发一条读命令。由于多个从机同时传送信号,所以总线上就会发生数据冲突(漏极开路下拉效果相当于相“与”)。 4. Search ROM[0F0H]。当一个系统初次启动时,总线控制器可能并不知道单线总线上有多少器件或它们的64位ROM编码。搜索ROM命令允许总线控制器用排除法识别总线上的所有从机的64位编码。 5. Alarm Search[0ECH]。这条命令的流程与Search ROM相同。然而,只有在最近一次测温后遇到符合报警条件的情况下,DS18B20才会响应这条命令。报警条件定义为温度高于TH或低于TL。只要DS18B20不掉电,报警状态将一直保持,直到再一次测得的温度值达不到报警条件。 6. Write Scratchpad[4EH]。这条命令向DS18B20的暂存器TH和TL中写入数据。可以在任何时刻发出复位命令来中止写入。 7. Read scratchpad[0BEH]。这条命令读取暂存器的内容。读取将从第一字节开始,一直进行下去,直到第九字节(CRC)读完。如果不想读完所有字节,则控制器可以在任何时间发出复位命令来中止读取。 8. Copy scratchpad[48H]。这条命令把暂存器的内容拷贝到DS18B20的E2PROM存储器里,即把温度报警触发字节存入非易失性存储器里。如果总线控制器在这条命令之后跟着发出读时间隙,而DS18B20又忙于把暂存器拷贝到E2PROM存储器,则DS18B20就会输出一个0,如果拷贝结束则DS18B20输出1。如果使用寄生电源,则总线控制器必须在这条命令发出后立即启动强上拉,并最少保持10ms。 9. Convert[44H]。这条命令启动一次温度转换而无需其他数据。温度转换命令被执行后DS18B20保持等待状态。如果总线控制器在这条命令之后跟着发出读时间隙,而DS18B20又忙于做时间转换,则DS18B20将在总线上输出0;如果温度转换完成,则输出1.如果使用寄生电源,则总线控制器必须在发出这条命令后立即启动强上拉,并保持500ms以上时间。 10. Recall E2[0B80H]。这条命令把报警触发器里的值拷贝回暂存器。这种拷贝操作在DS18B20上电时自动执行,这样器件一上电暂存器里马上就存在有效的数据了。若在这条命令发出之后读数据隙,器件会输出温度转换忙的标识:0表示忙;1表示完成。 11. Read Power Supply[0B4H]。若把这条命令发给DS18B20后发出读时间隙,器件会返回它的电源模式:0表示寄生电源;1表示外部电源。 七 温度数据的计算处理方法 从DS18B20读出的二进制值必须先转换成十进制值,才能用于字符的显示。DS18B20的转换精度为9-12位可选,为了提高精度采用12位。在采用12位转换精度时,温度寄存
首页 上一页 1 2 3 4 5 6 7 下一页 尾页 3/9/9
WORD格式全文下载链接(充值:元)