八路温度采集显示系统设计(7)

2019-03-04 15:30

八路温度采集与显示系统设计

表4.1 ROM的操作命令

指 令 功 能 代 码 说 明 对总线上的DS18B20进行搜索 读系列编码、序列号和CRC校验码 后续64为ROM序列对总线上DS18B20寻址 跳过对ROM编码的搜索 搜索有报警的DS18B20 Search ROM Read ROM Match ROM Skip ROM Alarm Search 0F0H 33H 55H CCH ECH (1)Search ROM(F0H)

当一个系统初始化时,总线控制器可能并不知道总线上挂接有几多少个器件,也不知道其64位ROM编码。总线控制器利用Search ROM命令识别总线上所有从器件的64位编码。

(2)Read ROM(33H)

允许总线控制器用该命令来读取DS18B20的8位序列编码、唯一的序列号和8位CRC校验码。该命令适用于总线上只存在一个DS18B20的情况。当总线上挂接有多个从机器件时,那么当所有从机器件都试图同时传送信号时就会发生数据冲突,将会导致主机读取的系列编码和序列号与CRC不匹配[47]。

(3)Match ROM(55H)

发出Match ROM命令后紧跟着64位ROM序列,允许总线控制器在多点总线上定位一只特定的DS18B20。只有内部ROM码与主机发出的64位ROM序列完全匹配的DS18B20才能响应随后的存储器功能命令。而其他与64位ROM序列不匹配的从机都将等待复位脉冲。这条命令在总线上有单个或多个器件时都可以使用。

(4)Skip ROM(CCH)

在单总线系统中,该命令允许总线控制器不用提供64位ROM编码就直接执行存储器功能。从而可以节省时间。如果总线上挂接多个从器件,在Skip ROM命令之后跟着发出一条读命令,由于多个从机器件同时传送信号,总线上会发生数据冲突(漏极开路下拉效果相当于相与)。

(5)Alarm Search(ECH)

这条命令的流程和Alarm Search相同。然而,只有在最近一次测温后遇到符合报警条件的情况,DS18B20才会响应这条命令。报警条件定义为温度高于TH或低

28

八路温度采集与显示系统设计

于TL。只要DS18B20不掉电,报警状态将一直保持,直到再一次测得的温度值达不到报警条件。

4.1.2 DS18B20功能命令

DS18B20功能命令概括如表4.2所示[2]。

表4.2 DS18B20功能命令

指 令 功 能 代 码 说 明 启动温度转换 读暂存器的值 写寄存器的值到暂存器 复制寄存器的值到EEPROM中 将EEPROM的值回调到暂存器中 检测供电方式 Convert T Read Scratchpad Write Scratchpad Copy Scratchpad Recall EEPROM Read Power Supply (1)Convert T(44H)

44H BEH 4EH 48H B8H B4H 这条命令启动一次温度转换,无需其他数据。温度转换命令被执行,而后

DS18B20保持等待状态。如果总线控制器在这条命令之后跟着发出时间隙,而DS18B20又忙于做温度转换的话,DS18B20将在总线上输出0;若温度转换完成,

则输出1。转换后的数据将保存在暂存器的温度寄存器中。

(2)Read Scratchpad(BEH)

这个命令读取暂存器的内容。读取将从第一个字节开始,一直进行下去,直到第

9个(CRC)字节读完。如果不想读完所有字节,控制器可以在任何时间发出复位

命令来中止读取。

(3)Write Scratchpad(4EH)

这个命令向DS18B20的暂存器进行写操作。包括向TH寄存器、TL寄存器和配置寄存器中写入数据。输出复位命令将中止当前正在进行的写操作。

(4)Copy Scratchpad(48H)

这个命令把暂存器的内容复制到DS18B20的EEPROM存储器里,即把温度报警触发寄存器TH、TL和配置寄存器中的数据存入非易失性存储器里。如果总线控制器在这条命令之后跟着发出读时间隙,而DS18B20又忙于把暂存器复制到

EEPROM,DS18B20就会输出0表示正在进行复制操作;如果复制结束,DS18B20

则输出1。

29

八路温度采集与显示系统设计

(5)Recall EEPROM(B8H)

这条命令把温度报警触发器里的值复制回暂存器。这种复制操作在DS18B20上电时自动执行,这样,器件一上电暂存器里马上就存在生效的数据了。若在这条命令发出之后发出读时间隙,器件就会输出温度转换忙的标志:0为忙,1为完成。

(6)Read Power Supply(B4H)

若把这条命令发给DS18B20后发出读时间隙,器件会返回其电源模式:0为寄生电源,1为外部电源。

4.1.3 DS18B20的程序及其流程图

根据前两节对DS18B20的操作指令和功能指令的介绍,设计程序对DS18B20进行控制,首先要对DS18B20进行初始化,其程序流程图如图4.2所示。

开始由DS18B20发出RESET脉冲N判断DS18B20已 等待480μs以上?YSETB DQ等待15~60μsN判断DQ是否为低电平Y置FLAG标并延时200μs清除FLAG标志初始化结束 图4.2 DS18B20初始化程序流程图

对DS18B20进行初始化之后要进行数据的写入和读出,写入的流程图如图4.3所示,读出的流程图如图4.4所示。

30

八路温度采集与显示系统设计

开始开始DS18B20初始化DS18B20初始化写入CCH,SKIP ROM写入CCH,SKIP ROM写入BEH,发转换命令写入44H,发转换命令SETB DQDQ=0,准备发送延时1μs以上延时15μs写入一位数据DQ=0,准备发送延时1μs以上DQ=1,释放总线延时15-45μs读取一位数据DQ=1,完成1位写入延时15-45μsN8位写完了吗?N8位读完了吗?Y完成Y

完成

图4.3 DS18B20写入的流程图 图4.4 DS18B20读出的流程图

DS18B20初始化及数据的读出和写入程序如下。

bit resetpulse(void) { DQ=0;

delay(40); DQ=1;

delay(4); return(DQ); }

void ds18b20_init(void) {

while(1)

//DS18B20初始化 //延时500us //延时60us

//读取P1.0的状态

31

八路温度采集与显示系统设计

{ if(!resetpulse()) //收到ds18b20的应答信号 { DQ=1; delay(40); //延时240us break; } else resetpulse(); //否则再发复位信号 } }

uchar read_byte(void) //数据读出 {uchar i,m,receive_data; m=1;

receive_data=0; for(i=0;i<8;i++) { if(read_bit()) { receive_data=receive_data+(m<

return(receive_data); }

void write_byte(uchar val) //数据写入 {

uchar i,temp; for(i=0;i<8;i++) { temp=val>>i; temp=temp&0x01; write_bit(temp); delay(5); } }

4.2 单片机处理模块软件设计

编程前,须按表4.3和图4.5所示设置好地址、数据及控制信号,编程单元的地

32


八路温度采集显示系统设计(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:高考英语作文万能模板 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: