3.1ROM命令代码及其含义
?READROM命令代码[33H]:如果只有一片DS1820,可用此命令读出其序列号,若在线DS1820多于一个,将发生冲突。
?MATCHROM命令代码[55H]:多个DS1820在线时,可用此命令匹配一个给定序列号的DS1820,此后的命令就针对该DS1820。
?SKIPROM命令代码[CCH]:此命令执行后的存储器操作将针对在线的所有DS1820。
?SEARCHRDH命令代码[F0H]:用以读出在线的DS1820的序列号。
?ALARMSEARCH命令代码[ECH]:当温度值高于TH或低于TL中的数值时,此命令可以读出报警的DS1820。
3.2存储器操作命令代码及其含义
?WRITESCRATCHPAD命令代码[4EH]:写两个字节的数据到温度寄存器。
?READSCRATCHPAD命令代码[BEH]:读取温度寄存器的温度值。
?COPYSCRATCHPAD命令代码[48H]:将温度寄存器的数值拷贝到EERAM中,保证温度值不丢失。
?CONVERT命令代码[44H]:启动在线DS1280做温度A/D转换。
?RECALL EE命令代码[B8H]:将EERAM中的数值拷贝到温度寄存器中。
?READPOWERSUPPLY命令代码[B4H]:在本命令送到DS1280之后的每一个读数据间隙,指出电源模式:“0”为寄生电源;“1”为外部电源。
DS1820单线通信功能是分时完成的,它有严格的时隙概念。因此系统对DS1820的各种操作必须按协议进行。操作协议为:初始化DS1820(发复位脉冲)→发ROM功能命令→发存储器操作命令→处理数据。各种操作的时序图如图3和图4所示。
4温度检测系统原理及程序流程图
温度检测系统原理图如图5所示,采用寄生电源供电方式。为保证在有效的DS1820时钟周期内,提供足够的电流,我们用一个MOSFET管和89C51的一个I/O口(P1.0)来完成对DS1820总线的上拉。当DS1820处于写存储器操作和温度A/D变换操作时,总线上必须有强的上拉,上拉开启时间最大为10μs。采用寄生电源供电方式时VDD必须接地。由于单线制只有一根线,因此发送接收口必须是三态的,为了操作方便我们用89C51的P1.1口作发送口Tx,P1.2口作接收口Rx。通过试验我们发现此种方法可挂接DS1820数十片,距离可达到50米,而用一个口时仅能挂接10片DS1820,距离仅为20米。同时?由于读写在操作上是分开的?故不存在信号竞争问题。
无论是单点还是多点温度检测,在系统安装及工作之前,应将主机逐个与DS1820挂接,读出其序列号。其工作过程为:主机Tx发一个脉冲,待“0”电平大于480μs后,复位DS1820,待DS1820所发响应脉冲由主机Rx接收后,主机Tx再发读ROM命令代码33H(低位在前),然后发一个脉冲(15μs)?并接着读取DS1820序列号的一位。用同样方法读取序列号的56位。对于图5系统的DS1820操作的总体流程图如图6所示。它分三步完成:①系统通过反复操作,搜索DS1820序列号;②启动所有在线DS1820做温度A/D变换;③逐个读出在线DS1820变换后的温度数据。主机启动温度变换并读取温度值的详细流程图如图7所示;主机写入存储器数据详细流程图如8所示。当有更多的检测点需要测温时,可利用89C51的其它口进行扩展。同时,也可利用89C51的串行通信口(RXD,TXD)与上位计算机进行通信,从而构成微机温度测量系统网。
1.部分资源来自网络,经ET电子归类整理,旨在服务电子爱好者并无商业目的,不保证正确性与完整性.
2.如果您觉得本站资源对您有用,请告知您的好友,用搜索引擎搜"ET电子"即可.

