初始化时序
(c)读时序图3DS18B20的工作时序图4DS18B20与单片机的典型接口设计图4以MCS-51系列单片机为例,画出了DS18B20与微处理器的典型连接。图4(a)中DS18B20采用寄生电源方式,其VDD和GND端均接地,图4(b)中DS18B20采用外接电源方式,其VDD端用3V~55V电源供电。
a)寄生电源工作方式(b)外接电源工作方式图4DS18B20与微处理器的典型连接图
ffRRCA;写入位从A中移到CYCLRDATWR12DJNZR4WR12;等待16μsMOVDATC;命令字按位依次送给DS18B20MOVR4#20WR13DJNZR4WR13;保证写过程持续60μsDJNZR3WR11;未送完一个字节继续SETBDATRET;------------------------READCLREAMOVR6#8;循环8次,读一个字节RD11CLRDATMOVR4#4NOP;低电平持续2μsSETBDAT;口线设为输入RD12DJNZR4RD12;等待8μsMOVCDAT;主机按位依次读入DS18B20的数据RRCA;读取的数据移入AMOVR5#30RD13DJNZR5RD13;保证读过程持续60μsDJNZR6RD11;读完一个字节的数据,存入A中SETBDAT
fRET;------------------------主机控制DS18B20完成温度转换必须经过三个步骤:初始化、ROM操作指令、存储器操作指令。必须先启动DS18B20开始转换,再读出温度转换值。假设一线仅挂接一个芯片,使用默认的12位转换精度,外接供电电源,可写出完成一次转换并读取温度值子程序GETWD。
GETWDLCALLINITMOVA#0CCHLCALLWRITE;发跳过ROM命令MOVA#44HLCALLWRITE;发启动转换命令LCALLINITMOVA#0CCH;发跳过ROM命令LCALLWRITEMOVA#0BEH;发读存储器命令LCALLWRITELCALLREADMOVWDLSBA;温度值低位字节送WDLSBLCALLREADMOVWDMSBA;温度值高位字节送WDMSBRET……
子程序GETWD读取的温度值高位字节送WDMSB单元,低位字节送WDLSB单元,再按照温度值字节的表示格式及其符号位,经过简单的变换即可得到实际温度值。
如果一线上挂接多个DS18B20、采用寄生电源连接方式、需要进行转换精度配置、高低限报警等,则子程序GETWD的编写就要复杂一些,限于篇幅,这一部分不再详述,请参阅相关内容。
f我们已成功地将DS18B20应用于所开发的“家用采暖洗浴器”控制系统中,其转换速度快,转换精度高,与微处理器的接口简单,给硬件设计工作带来了极大的方便,能有效地降低成本,缩短开发周期。
fr