字信号,然后通过串行通信的方式输出。因此掌握DSl8B20的通信协议是使用该器件的关键。所有的DSl8B20器件要求采用严格的通信协议,以保证数据的完整性。该协议定义了几种信号类型:复位脉冲、应答脉冲时隙;写“0”、写“1’’时隙;读‘、读“1,‘0”,时隙。与DSl8B20的通信,是通过操作时隙完成单总线上的数据传输。发送所有的命令和数据时,都是字节的低位在前,高位在后。在下图中,DSl8B20的1脚接地、3脚接电源,2脚DQ是数据线引脚。数据以串行通信的方式与P37口进行数据通信,将检测到的信号送给单片机。
1
f图712
DS18B20与AT89C51的联接图
二、DS18B20应用程序设计
18B20温度转换程序:首先判断计数器是否为0,若为0则启动18B20温度转换。然后读取转换后的数据并进行CRC校验。判断温度是为“”还是为“”并分别进行相应的处理,把18B20测得的温度信号转换成与之对应的BCD码供数码管显示,将处理完的温度数存入显示存储器。18B20温度转换程序流程图如图713和714所示。
2
f温度转换启动启动程序流程图1、温度转换启动程序流程图
图713
温度转换启动程序流程图
3
f2、温度数据转换流程图
图714
18B20温度数据转换流程图
4
f3、18B20温度转换与显示程序ORG0000HAJMPMAINORG0030HMAIN:MOVR50FFHMAIN1:MOVP000HCLRP20LCALLDELAYSETBP20CLRP21LCALLDELAYSETBP21CLRP22LCALLDELAYSETBP22CLRP23LCALLDELAYSETBP23DJNZR5MAIN1SETBP20SETBP21SETBP22SETBP23SJMPMAIN2DELAY:MOVR705HLP8:MOVR619HLP7:DJNZR6LP7DJNZR7LP8RET
;系统自检。自高位向低位带小数点显示8扫描256次
;关显示
;延时
DS18B20初始化汇编程序MAIN2:LCALLDISPSETBP37LCALLINITMOVA0CCHLCALLWRITEMOVA44HLCALLWRITEMOVR634HDJNZR6LCALLDISPLCALLINITMOVA0CCHLCALLWRITEMOVA0BEHLCALLWRITELCALLREADCLRCLCALLCONVTEMPLCALLDISPBCDLCALLDISPSJMPMAIN2;主程序;18B20DQ置1拉高;调初始化;跳过ROM匹配0CC;调写DS18B20的程序;发出温度转换命令;调写DS18B20的程序;延时136微秒转换时间,写一个字约需70微秒。
;发出读温度命令
5
fWRITE:MOVR08CLRCWR1:CLRP37MOV20H3DJNZ20HRRCAMOVP37CMOV21H10DJNZ21HSETBP37NOPDJNZR0WR1SETBP37RETREAD:MOVR62CLRPSW5RE0:MOVR28RE1:CLRCSETBP37NOPCLRP37SETBP37MOV22H3RE2:DJNZ22HRE2MOVCP37MOV23H10RE3:DJNZ23HRE3RRCADJNZR2RE1CPLPSW5JNBPSW5RE4MOV29HARE4:MOV28HADJNZR6RE0RETINIT:SETBP37NOPL0:CLRP37MOV24H100DJNZ24HSETBP37MOV25H10L01:JNBP37L2DJr