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

📄 abstract.txt

📁 该系统由主控制器、测温电路、显示电路及控制电路四大部分组成, 芯片使用了ATMEL公司的AT89S52单片机和美国DALLAS公司的DS18B20数字温度传感器。本文针对AT89S52单片机的性能和工
💻 TXT
字号:
FLAG1        EQU    38H
TEMPL        EQU    30H
TEMPH        EQU    31H
TEMPLC       EQU    32H
TEMPHC       EQU    33H
I1           EQU    50H
I2           EQU    60H
I3           EQU    70H
I4           EQU    80H
JIDIAN0      BIT P2.3
JIDIAN1      BIT P2.4
JIDIAN2      BIT P2.5
JIDIAN3      BIT P2.6

 ;************** 延时子程序(1秒)*************
        ORG  1000H

DELAY1S:  MOV     R4,#0FFH                       
DELAY22: MOV     R5,#0FFH
DELAY33: MOV     R6,#0AH
DELAY44: DJNZ    R6,DELAY44
               DJNZ    R5,DELAY33
DJNZ    R4,DELAY22
               RET      
;*****************DS1820初始化子程序*******************
              ORG  0250H
 RET_1820: 
           SETB P2.7
           NOP 
           CLR P2.7
;主机发出延时537微秒的复位低脉冲 
           MOV R1,#3 
      TSR1:MOV R0,#107 
           DJNZ R0,$ 
           DJNZ R1,TSR1 
           SETB P2.7              ;然后拉高数据线 
           NOP 
           NOP 
           NOP 
           MOV R0,#25H 
     TSR2: JNB P2.7,TSR3             ;等待DS18B20回应 
           DJNZ R0,TSR2 
           LJMP TSR4                ; 延时 
    TSR3:  SETB FLAG1              ; 置标志位,表示DS1820存在  
           LJMP TSR5 
    TSR4: CLR FLAG1                      ; 清标志位,表示DS1820不存在 
          LJMP TSR7 
    TSR5: MOV R0,#120
TSR6: DJNZ R0,TSR6                      ;延时   
TSR7: SETB P2.7
          RET 



;  ****************DS18B20写子程序******************************
           ORG     0180H
  WRITE:   MOV  R2,#8H
           CLR  C
  WR1:     CLR  P2.7
           MOV  R3,#6H
	   DJNZ  R3,$
	   RRC  A
	   MOV  P2.7,C
	   MOV R3,#23H
	   DJNZ  R3,$
	   SETB  P2.7

	   RET


 ; ******************DS18B20读子程序***************************
          ORG        0200H
  READ:  MOV  R4,#2H
         MOV  R1,#TEMPL
	 MOV  B,#00H
  RE1:   MOV R2,#8H
  RE2:   CLR  C
         SETB  P2.7
	 NOP
	 NOP
	 CLR  P2.7
	 NOP
	 NOP
	 NOP
	 SETB  P2.7
	 MOV  R3,#9H
  RE3:   DJNZ R3,RE3
         MOV  C,P2.7
	 MOV  R3,#23H
  RE4:   DJNZ  R3,RE4
         RRC  A
	 DJNZ  R2,RE2
	 MOV  @R1,A
	 INC R1
	 DJNZ   R4,RE1
         RET

;************************读取温度子程序0**************************
             ORG    0300H
 GET_TEMPER0:  SETB  P2.7               ;定时入口,P2.7=1
              LCALL  RET_1820
	      JB  FLAG1,TS1
	      RET
        TS1:  CLR  P2.7
	      MOV  A,#0CCH         ; 跳过ROM匹配------0CC
	      LCALL  WRITE              ;写命令字
	      MOV  A,#44H              ; 发出温度转换命令
	      LCALL  WRITE              ; 写命令字,启动所有1820进行转换
	      NOP
 LCALL  RET_1820         ;调初始化程序
MOV  A,#055H             ;发匹配ROM命令
LCALL  WRITE            ;写命令字
MOV  R0,#I1              ;置第三个1820的序列号存放首地址
LCALL XL                  ;调发序列号子程序
LCALL  DELAY1S           ;调延时1S子程序
	      LCALL  RET_1820
	      MOV   A,#0CCH
	      LCALL  WRITE
              MOV  A,#0BEH
              LCALL  WRITE
	      LCALL   READ
	      RET
;************************读取温度子程序1**************************
             ORG    0500H
 GET_TEMPER1:  SETB  P2.7               ;定时入口,P2.7=1
              LCALL  RET_1820
	      JB  FLAG1,TS2
	      RET
        TS2:  CLR  P2.7
	      MOV  A,#0CCH         ; 跳过ROM匹配------0CC
	      LCALL  WRITE              ;写命令字
	      MOV  A,#44H              ; 发出温度转换命令
	      LCALL  WRITE              ; 写命令字,启动所有1820进行转换
	      NOP
 LCALL  RET_1820         ;调初始化程序
MOV  A,#055H             ;发匹配ROM命令
LCALL  WRITE            ;写命令字
MOV  R0,#I2              ;置第三个1820的序列号存放首地址
LCALL XL                  ;调发序列号子程序
LCALL  DELAY1S           ;调延时1S子程序
	      LCALL  RET_1820
	      MOV   A,#0CCH
	      LCALL  WRITE
              MOV  A,#0BEH
              LCALL  WRITE
	      LCALL   READ
	      RET

  ;************************读取温度子程序2**************************
             ORG    0500H
 GET_TEMPER2:  SETB  P2.7               ;定时入口,P2.7=1
              LCALL  RET_1820
	      JB  FLAG1,TS3
	      RET
        TS3:  CLR  P2.7
	      MOV  A,#0CCH         ; 跳过ROM匹配------0CC
	      LCALL  WRITE              ;写命令字
	      MOV  A,#44H              ; 发出温度转换命令
	      LCALL  WRITE              ; 写命令字,启动所有1820进行转换
	      NOP
 LCALL  RET_1820         ;调初始化程序
MOV  A,#055H             ;发匹配ROM命令
LCALL  WRITE            ;写命令字
MOV  R0,#I3              ;置第三个1820的序列号存放首地址
LCALL XL                  ;调发序列号子程序
LCALL  DELAY1S           ;调延时1S子程序
	      LCALL  RET_1820
	      MOV   A,#0CCH
	      LCALL  WRITE
              MOV  A,#0BEH
              LCALL  WRITE
	      LCALL   READ
	      RET

  ;************************读取温度子程序3**************************
             ORG    0600H
 GET_TEMPER3:  SETB  P2.7               ;定时入口,P2.7=1
              LCALL  RET_1820
	      JB  FLAG1,TS4
	      RET
        TS4:  CLR  P2.7
	      MOV  A,#0CCH         ; 跳过ROM匹配------0CC
	      LCALL  WRITE              ;写命令字
	      MOV  A,#44H              ; 发出温度转换命令
	      LCALL  WRITE              ; 写命令字,启动所有1820进行转换
	      NOP
 LCALL  RET_1820         ;调初始化程序
MOV  A,#055H             ;发匹配ROM命令
LCALL  WRITE            ;写命令字
MOV  R0,#I4               ;置第四个1820的序列号存放首地址
LCALL XL                  ;调发序列号子程序
LCALL  DELAY1S           ;调延时1S子程序
	      LCALL  RET_1820
	      MOV   A,#0CCH
	      LCALL  WRITE
              MOV  A,#0BEH
              LCALL  WRITE
	      LCALL   READ
	      RET

  ;***********************计算温度子程序*****************************
              ORG   0700H
  
 ;*****************计算小数位BCD值*****************
CONTEMPER: MOV     A,TEMPL          ;
          ANL     A,#0FH           ; 乘0.0625
          MOV     DPTR,#TEMPDOTTAB ;取小数位分码地址
          MOVC    A,@A+DPTR        ;
          MOV     TEMPLC,A         ; TEMPLC LOW= 小数部分 BCD
;**************************************
          MOV     A,TEMPL          ; 计算整数位温度BCD值
          ANL     A,#0F0H          ;保留TEMPL的高四位,低四位置0
          SWAP    A                ;高四位和低四位交换
          MOV     R5,A             
          MOV     A,TEMPH          
          ANL     A,#0FH           ;保留TEMPH的低四位,高四位置0
          MOV     B,#10H           ;籅=16
          MUL    AB                ;籅=乘积高四位,A=乘积低四位
          MOV    TEMPL,A           
          MOV    TEMPH,B
          ADD    A,R5              
          DA    A                  ;皇

⌨️ 快捷键说明

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