⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 液晶显示ds18b20.asm

📁 用89S51做的液晶时钟走的很好 用keil3.0打开
💻 ASM
字号:
RS EQU P3.0
RW EQU P3.1
E EQU P3.2
DAT EQU P3.7




ORG 0000H
LJMP MAIN

ORG 0100H
MAIN: MOV SP,#60H
START:LCALL JUDGE
      MOV P1,#01H
      LCALL ENABLE
      MOV P1,#38H
      LCALL ENABLE
      MOV P1,#0FH
      LCALL ENABLE
      MOV P1,#06H
      LCALL ENABLE
      
      MOV P1,#80H
      LCALL ENABLE
      MOV DPTR,#TABLE1
      LCALL DISP
      MOV P1,#0C0H
      LCALL ENABLE
      MOV DPTR ,#TABLE2
      LCALL DISP

      LCALL DSWD
      MOV P1,#0C7H
      LCALL ENABLE
      LCALL DISP2
      AJMP $

DISP: MOV R1,#16
LOOP: MOV A,#00H
      MOVC A,@A+DPTR 
      LCALL DISP1
      INC DPTR
      DJNZ R1,LOOP
      RET
DISP1: MOV P1,A
       SETB RS
       CLR RW
       CLR E
       LCALL ENABLE
       SETB E
       RET
DISP2: MOV A,#30H
       ADD A,R7
       MOV P1,A
       LCALL DISP3
       MOV A,#30H
       ADD A,R6
       MOV P1,A
       LCALL DISP3
       MOV P1,#2EH
       LCALL DISP3
       MOV A,#30H
       ADD A,R5
       MOV P1,A
       LCALL DISP3
       MOV A,#30H
       ADD A,R4
       MOV P1,A
       LCALL DISP3
       RET
DISP3: SETB RS
       CLR RW
       CLR E
       LCALL ENABLE
       SETB E
       RET




ENABLE: CLR RW
        CLR RS
        CLR E
        ACALL JUDGE
        SETB E
        RET


JUDGE:  MOV P1,#0FFH
        CLR RS
	SETB RW
	CLR E
	NOP
        SETB E
	JB P1.7,JUDGE
	RET

TABLE1: DB "   DS18B20 OK!  "
TABLE2: DB "  TEMP:         " 
TABLE3:DB "C"


DSWD:         CLR EA
              LCALL RST
              JNB F0,OUT0 ;如果没有应答,返回主程序
              MOV R0,#0CCH
              LCALL SEND_BYTE ;跳过ROM匹配
              MOV R0,#44H ;发出温度转换命令
              LCALL SEND_BYTE
              MOV R7,#1 ;廷时75ms以上准备读
SS2:          MOV R6,#255
SS1:          MOV R5,#255
SS0:          DJNZ R5,SS0
              DJNZ R6,SS1
              DJNZ R7,SS2
              LCALL RST
              JNB F0,OUT0
              MOV R0,#0CCH ;跳过ROM匹配
              LCALL SEND_BYTE
              MOV R0,#0BEH ;发出读温度命令
              LCALL SEND_BYTE
              LCALL READ_BYTE
              MOV R2,A
              LCALL READ_BYTE
              MOV R3,A
              LCALL TRANS12
              SETB EA
OUT0:         RET




SEND_BYTE:    MOV A,R0;发送一个字节程序
              MOV R5,#8
SEN3:         CLR C
              RRC A
              JC SEN1
              LCALL WRITE_0
              SJMP SEN2
SEN1:         LCALL WRITE_1
SEN2:         DJNZ R5,SEN3 ; 循环8次,写一个字节
              RET
READ_BYTE:    MOV R5,#8	          ;读一个字节程序

READ1:        LCALL READ
              RRC A
              DJNZ R5,READ1 ; 循环8次,读一个字节
              MOV R0,A
              RET
;复位程序,如果复位置位F0,没有就复位F0
RST:          SETB DAT
              NOP
              NOP
              CLR DAT
              MOV R6,#250 ;主机发复位脉冲持续3μs×200=600μs
              DJNZ R6,$
              MOV R6,#50
              DJNZ R6,$
              SETB DAT ;主机释放总线,口线改为输入
              MOV R6,#15
              DJNZ R6,$
              CALL CHCK ;调用应答检查程序
              MOV R6,#60
              DJNZ R6,$
              SETB DAT
              RET
CHCK:         MOV C,DAT
              JC RST0
              SETB F0 ;检测到信号,置位F0
              SJMP CHCK0
RST0:         CLR F0 ;未准备好F0复位
CHCK0:        RET

WRITE_0:      CLR DAT;写0
              MOV R6,#30
              DJNZ R6,$
              SETB DAT
              RET
WRITE_1:      CLR DAT ;写1
              NOP
              NOP
              NOP
              NOP
              NOP
              SETB DAT
              MOV R6,#30
              DJNZ R6,$
              RET

;读一位数据程序
READ:         SETB DAT ;先复位至少1US产生读起始信号
              NOP
              NOP
              CLR DAT
              NOP
              NOP
              SETB DAT ;置位DAT准备接收数据
              NOP
              NOP
              NOP
              NOP
              NOP
              NOP
              NOP
              MOV C,DAT
              MOV R6,#23
              DJNZ R6,$
              RET
          



TRANS12:      MOV A,R2
              ANL A,#0F0H
              MOV R0,A
              MOV A,R3
              ANL A,#0FH
              ORL A,R0
              SWAP A
              MOV B,#10
              DIV AB
              MOV R7,A
              MOV R6,B 
              MOV DPTR,#TABB
              MOV A,R2
              ANL A,#0FH
              MOV B,#2
              MUL AB
              MOVC A,@A+DPTR
              MOV R5,A
              MOV A,R2
              ANL A,#0FH
              MOV B,#2
              MUL AB
              INC A
              MOVC A,@A+DPTR
              MOV R4,A
              RET
TABB: DB 0,0,0,6,1,2,1,8,2,5,3,1,3,7,4,3,5,0
DB 5,6,6,2,6,8,7,5,8,1,8,7,9,3
END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -