您当前的位置:五五电子网电子知识单片机-工控设备51单片机DS18B20温度控制lcd1602显示程序 正文
DS18B20温度控制lcd1602显示程序

DS18B20温度控制lcd1602显示程序

点击数:7517 次   录入时间:03-04 11:48:48   整理:http://www.55dianzi.com   51单片机
        MOV  A,TEMP_TH     ;TH(报警上限)
        LCALL  WRITE
        MOV  A,TEMP_TL     ;TL(报警下限)
        LCALL  WRITE
        MOV  A,#7FH        ;12位精确度
        LCALL  WRITE
        RET
;------------------------------------------------------------
WRITE_E2:
        CALL  RESET
        MOV  A,#0CCH        ;跳过ROM匹配
        LCALL  WRITE
        MOV  A,#48H         ;把暂存器里的温度报警值拷贝到EEROM
        LCALL  WRITE
        RET
;--------------------------------------------------------------
READ_E2:
        CALL  RESET
        MOV  A,#0CCH        ;跳过ROM匹配
        LCALL  WRITE
        MOV  A,#0B8H        ;把EEROM里的温度报警值拷贝回暂存器
        CALL  WRITE
        RET
;--------------------------------------------------------------
;将自定义字符写入LCD1602的CGRAM中
;--------------------------------------------------------------
STORE_DATA:
        MOV  A,#40H
        CALL  WCOM
        MOV  R2,#08H
        MOV  DPTR,#D_DATA
        MOV  R3,#00H
S_DATA:
        MOV  A,R3
        MOVC  A,@A+DPTR
        CALL  WDATA      ;写入数据
        INC  R3
        DJNZ  R2,S_DATA
        RET

D_DATA:
    DB  0CH,12H,12H,0CH,00H,00H,00H,00H
;==============================================================
write:  MOV r2,#8            ;一共8位数据
        CLR  C
wr1:
        clr date_line        ;开始写入DS18B20总线要处于复位(低)状态
        MOV r3,#07
        djnz r3,$            ;总线复位保持16微妙以上
        rrc a                ;把一个字节DATA 分成8个BIT环移给C
        MOV date_line,c      ;写入一个BIT
        MOV r3,#3CH
        djnz r3,$            ;等待100微妙
        setb date_line       ;重新释放总线
        nop
        djnz r2,wr1          ;写入下一个BIT
        setb date_line
        ret
;--------------------------------------------------------------------
read:    MOV r4,#4          ; 将温度低位、高位、TH、TL从DS18B20中读出
         MOV r1,#TEMPL        ; 存入25H、26H、27H、28H
re00:    MOV r2,#8
re01:    clr cy
         setb date_line
         nop
         nop
         clr date_line        ;读前总线保持为低
         nop
         nop
         nop
         setb date_line       ;开始读总线释放
         MOV r3,#09           ;延时18微妙
         djnz r3,$
         MOV c,date_line      ;从DS18B20总线读得一个BIT
         MOV r3,#3CH
         djnz r3,$            ;等待100微妙
         rrc a                ;把读得的位值环移给A
         djnz r2,re01         ;读下一个BIT
         MOV @r1,a
         inc r1
         djnz r4,re00
         ret


;*****************************************************
;  处理温度 BCD 码子程序
;****************************************************
CONVTEMP:      MOV  A,TEMPH       ;判温度是否零下
               ANL  A,#80H
               JZ  TEMPC1         ;温度零上转
               CLR  C

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] [10]  下一页


本文关键字:程序  51单片机单片机-工控设备 - 51单片机