《微机原理与接口技术》课程设计-单片机数字温度传感器测温显示系统 下载本文

图1 2、DS18B20复位子程序(RESET):

此部分程序在执行前先将DAT复位,然后通过对DAT的判断来检测DS18B20的回应,并进行相应的置位,其程序流程见下图所示。

CLR DAT(复位) SETB DAT

SETB DAT(拉高数据线)

N

等待DS18B20回应 DAT=0? FLAG1=0 Y FLAG1=1(置标志位,DS18B20存在)

SETB DAT

子程序返回 word文档 可自由复制编辑

图2

3、DS18B20暂存器设定值(RECONFIG):

暂存器设定子程序主要是对TH、TL初值的设定,主要是通过对FLAG的判断来执行相应的操作,当采用9位分辨率时转换时间约为93.75ms,在本程序设计中采用1s显示程序延时法等待转换的完成,其对应流程图如下。

N Y 在TH、TL中写入初值 跳过ROM FLAG=1? 返回

图3

word文档 可自由复制编辑

选择9位分辨率 子程序返回

4、往DS18B20中写入一字节的程序(WRITE):

此子程序主要是往DS18B20中写入程序,通过R2计数的控制来将C中的数据送入数据线,一共写入一字节,本程序当R2=8时共计数8次,送入的数据正好一字节,对应流程图如下。 N R2=0?(一字节是否写完) DAT=C(C中的数据送入数据线) R2=8 CLR C RRC A(A中数据右移) SETB DAT Y 子程序返回

word文档 可自由复制编辑

图4

5、读温度值命令(GETTEMPER):

此子程序主要是通过FLAG1的判断来进行如何执行,若存在,则跳过ROM,并由DS18B20发出温度转换命令,并读取命令,最终在DS18B20中读取两字节温度。若不存在,则返回,对应程序流程图如下。

N FLAG1=1?(DS18B20是否存在?) 返回 Y RDTEMP(从DS18B20中读取两字节温度子程序) DS18B20中写入0BEH(读取温度指令) 跳过ROM匹配 DS18B20中写入44H(发出温度转换命令) 子程序返回 word文档 可自由复制编辑