控制设计 - 图文 下载本文

内容发布更新时间 : 2024/5/4 11:26:42星期一 下面是文章的全部内容请认真阅读。

主题:湖南工业大学大学本科毕业设计(论文)

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