全球旧事资料 分类
U3F74LS14
12
L1
VCCR1303K
8系统软件算法分析系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,
计算温度子程序,显示数据刷新子程序等。
11
f1、主程序流程:主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。这样可以在一秒之内测量一次被测温度,其程序流程见下图所示。
开始
RESETDS18B20复位RECONFIG写DS18B20暂存器设定
GETTEMPER读温度命令)
TEMPERCOV转化为一字节温度值
REDKEY读键盘BD(实际温度与上下限比较,亮灯,打铃)
FBBCD码转换DIR显示
12
f图1
2、DS18B20复位子程序RESET:
此部分程序在执行前先将DAT复位,然后通过对DAT的判断来检测DS18B20的回应,并进行相应的置位,其程序流程见下图所示。
SETBDATCLRDAT复位SETBDAT拉高数据线
N
等待DS18B20回应DAT0
Y
FLAG11置标志位,DS18B20存在
SETBDAT
子程序返回
13
FLAG10
f图2
3、DS18B20暂存器设定值RECONFIG:暂存器设定子程序主要是对TH、TL初值的设定,主要是通过对FLAG的判断来执行相应的操作,当采用9位分辨率时转换时间约为9375ms,在本程序设计中采用1s显示程序延时法等待转换的完成,其对应流程图如下。
FLAG1
N
Y
跳过ROM
在TH、TL中写入初值
选择9位分辨率
子程序返回
图3
14
返回
f4、往DS18B20中写入一字节的程序(WRITE):
此子程序主要是往DS18B20中写入程序,通过R2计数的控制来将C中的数据送入数据线,一共写入一字节,本程序当R28时共计数8次,送入的数据正好一字节,对应流程图如下。
R28CLRC
RRCAA中数据右移DATCC中的数据送入数据线
SETBDAT
R20一字节
N
是否写完
Y
子程序返回
15
f图4
5、读温度值命令(GETTEMPER):
此子程序主要是通过FLAG1的判断来进行如何执行,若存在,则跳过ROM,并由DS18B20发出温度转换命令,并读取命令,最终在DS18B20中读取两字节温度。若不存在,则返回,对应程序流程图如下。
N
FLAG11DS18B20是否存在?)
Y
跳过ROM匹配
DS18B20中写入44H发出温度转换命令
DS18B20中写入0BEH读取温度指令
RDTEMP从DS18B20中读取两字节温度子程序
子程序返回
16
返回
f图5
6、从DS18B20中读取两字节温度的子程序(RDTEMP):
此程序是从DS18B20中读取两字节温度,上文已介绍过如何读一字节温度程序。两字节温度读取是通过两次读取一字节温度来执行,本程序是通过R4来判断是否执行结束,其对应流程图如下。
R42MOVR1TEMPL
R28
CLRC
拉高数据线
N
N
R40两字节转换完?
Y
返回
CDYAT
RRCA
R20一字节转换完
图6
Yr
好听全球资料 返回顶部