主题:湖南工业大学大学本科毕业设计(论文)
DJNZ R0, TSR1 ;延时520us SETB DQ
MOV R0, #07H TSR2:
DJNZ R0, TSR2
JB DQ, TSR3 ;如DQ为低则复位成功,DS18B20存在 LJMP TSR4 ; 延时 TSR3:
SETB FLAG ;置标志位,表示DS1820存在 LJMP TSR5 TSR4:
CLR FLAG ;清标志位,表示DS1820不存在 LJMP TSR7 TSR5:
MOV R0, #06BH ;200US TSR6:
DJNZ R0, TSR6 ;延时 TSR7: SETB DQ ;拉高总线 RET
;****************************************************** ;读DS18B20的程序
;****************************************************** READ_1820:
MOV R6, #8 ;连续读8个bit RE1: CLR DQ ;读前总线保持为低 MOV R4, #4 NOP
SETB DQ ;开始读总线释放 RE2: DJNZ R4, RE2 ;持续8us
MOV C, DQ ;从ds1820总线读得一个bit RRC A ;把读得的位值环移给 A MOV R5, #30
RE3: DJNZ R5, RE3 ;持续60us DJNZ R6, RE1 ;读下一个bit
SETB DQ ;重新释放ds1820总线 RET
;**************************************************************************** ;写DS18B20的程序
;****************************************************************************** WRITE_1820:
MOV R2, #8 ;控制写8位 CLR C ;进位标志清零 WR1: CLR DQ
MOV R3, # 6 ;写时序要求有一定延时 DJNZ R3, $ RRC A
MOV DQ, C
MOV R3, #23 ;写时序要求有一定延时 DJNZ R3, $ SETB DQ
V
主题:湖南工业大学大学本科毕业设计(论文)
NOP
DJNZ R2, WR1 SETB DQ RET
;**************************************************** ;读DS18B20的程序,从DS18B20中读出两个字节的温度数据 ;**************************************************** READ_18200:
MOV R4, #2 ;将温度高位和低位从DS18B20中读出
MOV R1, #36H ;低位存入36H(TEMPER_L),高位存入35H(TEMPER_H) RE00: MOV R2, #8 RE01: CLR C SETB DQ NOP NOP
CLR DQ NOP NOP NOP
SETB DQ MOV R3, #7 DJNZ R3, $ MOV C, DQ MOV R3, #23 DJNZ R3, $ RRC A
DJNZ R2, RE01 MOV @R1, A DEC R1
DJNZ R4, RE00 RET
;;******************************************************************************** ;将从DS18B20中读出的温度数据进行转换
;;******************************************************************************** TEMPER_COV_1: MOV A, #0F0H
ANL A, TEMPER_L ;舍去温度低位中小数点后的四位温度数值 SWAP A
MOV TEMPER_NUM, A ;得到低四位 MOV A, TEMPER_L ANL A, #0FH
MOV TEMPER_XIAO, A ;低四位小数存储在60H MOV A, TEMPER_H ;取温度高四位 ANL A, #07H SWAP A
ORL A, TEMPER_NUM ;得到高四位,再与低四位相或得到值 MOV TEMPER_NUM, A ;保存变换后的温度数据 RET
;********************************************************************** ;处理小数四位的子程序
VI
主题:湖南工业大学大学本科毕业设计(论文)
;************************************************************************ TEMPER_COV_2:
MOV A,TEMPER_XIAO ;取小数四位到A CJNE A,#00H,L1
MOV TEMPER_XIAOFOU, #30H MOV TEMPER_XIAOTHI, #30H MOV TEMPER_XIAOSEC, #30H MOV TEMPER_XIAOFIR,#30H L1: CJNE A,#01H,L2
MOV TEMPER_XIAOFIR,#30H MOV TEMPER_XIAOSEC,#36H MOV TEMPER_XIAOTHI,#32H MOV TEMPER_XIAOFOU,#35H L2: CJNE A,#02H,L3
MOV TEMPER_XIAOFIR,#31H MOV TEMPER_XIAOSEC,#32H MOV TEMPER_XIAOTHI,#35H MOV TEMPER_XIAOFOU,#30H L3: CJNE A,#03H,L4
MOV TEMPER_XIAOFIR,#31H MOV TEMPER_XIAOSEC,#38H MOV TEMPER_XIAOTHI,#37H MOV TEMPER_XIAOFOU,#35H L4: CJNE A,#04H,L5
MOV TEMPER_XIAOFIR,#32H MOV TEMPER_XIAOSEC,#35H MOV TEMPER_XIAOTHI,#30H MOV TEMPER_XIAOFOU,#30H L5: CJNE A,#05H,L6
MOV TEMPER_XIAOFIR,#33H MOV TEMPER_XIAOSEC,#31H MOV TEMPER_XIAOTHI,#32H MOV TEMPER_XIAOFOU,#35H L6: CJNE A,#06H,L7
MOV TEMPER_XIAOFIR,#33H MOV TEMPER_XIAOSEC,#37H MOV TEMPER_XIAOTHI,#35H MOV TEMPER_XIAOFOU,#30H L7: CJNE A,#07H,L8
MOV TEMPER_XIAOFIR,#34H MOV TEMPER_XIAOSEC,#33H MOV TEMPER_XIAOTHI,#37H MOV TEMPER_XIAOFOU,#35H L8: CJNE A,#08H,L9
MOV TEMPER_XIAOFIR,#35H MOV TEMPER_XIAOSEC,#30H MOV TEMPER_XIAOTHI,#30H MOV TEMPER_XIAOFOU,#30H L9: CJNE A,#09H,L10
MOV TEMPER_XIAOFIR,#35H MOV TEMPER_XIAOSEC,#36H MOV TEMPER_XIAOTHI,#32H MOV TEMPER_XIAOFOU,#35H L10: CJNE A,#0AH,L11
VII
主题:湖南工业大学大学本科毕业设计(论文)
MOV TEMPER_XIAOFIR,#36H MOV TEMPER_XIAOSEC,#32H MOV TEMPER_XIAOTHI,#35H MOV TEMPER_XIAOFOU,#30H L11: CJNE A,#0BH,L12
MOV TEMPER_XIAOFIR,#36H MOV TEMPER_XIAOSEC,#38H MOV TEMPER_XIAOTHI,#37H MOV TEMPER_XIAOFOU,#35H L12: CJNE A,#0CH,L13
MOV TEMPER_XIAOFIR,#37H MOV TEMPER_XIAOSEC,#35H MOV TEMPER_XIAOTHI,#30H MOV TEMPER_XIAOFOU,#30H L13: CJNE A,#0DH,L14
MOV TEMPER_XIAOFIR,#38H MOV TEMPER_XIAOSEC,#31H MOV TEMPER_XIAOTHI,#32H MOV TEMPER_XIAOFOU,#35H L14: CJNE A,#0EH,L15
MOV TEMPER_XIAOFIR,#38H MOV TEMPER_XIAOSEC,#37H MOV TEMPER_XIAOTHI,#35H MOV TEMPER_XIAOFOU,#30H L15: CJNE A,#0FH,L16
MOV TEMPER_XIAOFIR,#39H MOV TEMPER_XIAOSEC,#33H MOV TEMPER_XIAOTHI,#37H MOV TEMPER_XIAOFOU,#30H L16:RET
;********************************************************* ;显示程序
;****************************************************** DISPLAY_X:
ACALL LCD_INT MOV P1, #'T'
LCALL SET_DATA_TO MOV P1, #'E'
LCALL SET_DATA_TO MOV P1, #'X'
LCALL SET_DATA_TO MOV P1, #'='
LCALL SET_DATA_TO JMP DISPLAY_ZHENG
DISPLAY:
ACALL LCD_INT MOV P1, #'T'
LCALL SET_DATA_TO MOV P1, #'E'
LCALL SET_DATA_TO MOV P1, #'='
LCALL SET_DATA_TO
VIII
主题:湖南工业大学大学本科毕业设计(论文)
DISPLAY_ZHENG:
MOV A, TEMPER_NUM MOV B, #64H DIV AB
MOV TEMPER_BAI, A ;百位放在65H MOV A, B MOV B, #0AH DIV AB
MOV TEMPER_SHI,A ;十位放在66H MOV TEMPER_GE, B ;个位放在67H
MOV DPTR, #NUMTAB ;指定查表启始地址 MOV A, TEMPER_BAI ;取百位数
MOVC A, @A+DPTR ;查百位数的代码 MOV P1, A
ACALL SET_DATA_TO
MOV A, TEMPER_SHI ;取十位数
MOVC A, @A+DPTR ;查十位数的代码 MOV P1, A
ACALL SET_DATA_TO
MOV A, TEMPER_GE ;取个位数
MOVC A, @A+DPTR ;查个位数的代码 MOV P1, A
ACALL SET_DATA_TO
DISPLAY_XIAO:
MOV A, #2EH MOV P1, A
ACALL SET_DATA_TO
MOV A, TEMPER_XIAOFIR MOV P1, A
ACALL SET_DATA_TO
MOV A, TEMPER_XIAOSEC MOV P1, A
ACALL SET_DATA_TO
MOV A, TEMPER_XIAOTHI MOV P1, A
ACALL SET_DATA_TO
MOV A, TEMPER_XIAOFOU MOV P1, A
ACALL SET_DATA_TO RET
LCD_INT:
MOV P1, #01H ;清屏 ACALL SET_CODE_TO
MOV P1, #38H ;工作方式设置 ACALL SET_CODE_TO
MOV P1, #0CH ;显示状态设置 ACALL SET_CODE_TO
MOV P1, #06H ;输入方式设置 ACALL SET_CODE_TO RET
IX