新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 经典数字温度传感器DS18B20试验

经典数字温度传感器DS18B20试验

作者: 时间:2013-01-15 来源:网络 收藏

测温实验原理图见下面图3

图3

新建Keil工程ds18sy.UV2,输入下面的测温实验源程序,编译得到HEX格式目标文件ds18sy.hex。

;--------- 下面是测温实验源程序 ---------

    ORG  0000H
START: MOV  SP,#60H     ;开机初始化
    MOV  P0,#0FFH
    MOV  P1,#0FEH
    MOV  P2,#0FFH
    MOV  P3,#0FFH

MAIN:  LCALL  GET_TEMPER   ;调用读温度子程序
    LCALL  DISP      ;调用数码管显示子程序
    AJMP  MAIN      ;重复循环

;------ 读DS18B20传感器的温度值 ------
GET_TEMPER:
    SETB  P3.3
    LCALL  RST18B20    ;复位DS18B20
    JB    00H,DSS2
    RET
DSS2:  MOV   A,#0CCH    ;跳过ROM匹配
    LCALL  WR18B20
    MOV   A,#44H     ;向DS18B20发出温度转换命令
    LCALL  WR18B20
    LCALL  RST18B20    ;准备读温度前先复位DS18B20
    MOV   A,#0CCH    ;跳过ROM匹配
    LCALL  WR18B20
    MOV   A,#0BEH    ;向DS18B20发出读温度命令
    LCALL  WR18B20
    LCALL  RE18B20    ;读出温度数据
    RET

;------ DS18B20复位初始化程序 ------
RST18B20:
    SETB  P3.3
    NOP
    CLR   P3.3
    MOV   R0,#06BH    ;主机发出复位低脉冲
    MOV   R1,#03H
DSR1:  DJNZ  R0,DSR1
    MOV   R0,#6BH
    DJNZ  R1,DSR1
    SETB  P3.3      ;拉高数据线
    NOP
    NOP
    NOP
    MOV   R0,#25H
DSR2:  JNB   P3.3,DSR3    ;等待DS18B20回应
    DJNZ  R0,DSR2
    LJMP  DSR4
DSR3:  SETB  00H       ;置标志位,表示DS1820存在
    LJMP  DSR5
DSR4:  CLR   00H        ;清标志位,表示DS1820不存在
    LJMP  DSR7
DSR5:  MOV   R0,#06BH
DSR6:  DJNZ  R0,DSR6     ;延时一段时间
DSR7:  SETB  P3.3
    RET

;------ 写DS18B20的子程序 ------
WR18B20:
    MOV   R2,#8
    CLR   C
WR1:  CLR   P3.3
    MOV   R3,#6
    DJNZ  R3,$
    RRC   A
    MOV   P3.3,C
    MOV   R3,#23
    DJNZ  R3,$
    SETB  P3.3
    NOP
    DJNZ  R2,WR1
    SETB  P3.3
    RET



评论


相关推荐

技术专区

关闭