基于单片机的空调机的温度控制系统设计(含完整程序)毕业论文 下载本文

空调机的温度控制系统

DIV AB

MOV 31H,B ;个位存入31H中 MOV B,#10 ; DIV AB ;

MOV 32H,B ;十位存入32H中 MOV B,#10 ; DIV AB ;

MOV 35H,B ;百位存入33H中 MOV A,DS18SH MOV 33H,#10H ; JB ACC.7,EXIT7 MOV 33H,#00H EXIT7: RET

GET_TEMPER: ;读出转换后的温度值,并显示 SETB DS18DQ

LCALL INIT_1820 ;先复位DS18B20 JB DS18FIG,TSS2

RET ;判断DS1820是否存在?若DS18B20不存在则返 TSS2:

MOV DS18ADS,#0 DS18JX: LCALL DS18CODP MOV A,DS18ADS ADD A,#9 MOV DS18ADS,A

-30-

空调机的温度控制系统

CJNE A,#63,DS18JX RET DS18CODP:

LCALL MRCOVT ;转换指定的DS18B20的温度 LCALL MRRDTEDP ;显示温度 RET TEMP:

LCALL INIT_1820 JB DS18FIG,NEXT4 RET NEXT4:

MOV DS18ADS,#9 MOV A,#0CCH ;SKIP ROM LCALL WRITE_1820 MOV A,#44H ;温度转换命令 LCALL WRITE_1820 LCALL DELAY1S LCALL MRRDTEDP

RET;写DS18B20的子程序(有具体的时序要求) WRITE_1820: ;写DS18B20 MOV R5,#8 DS18JXWE:

SETB DS18DQ ;初始化 CLR DS18DQ CLR DS18DQ

-30-

空调机的温度控制系统

MOV R7,#5

DJNZ R7,$ ;拉低15US内,写入数据 CLR C RRC A MOV DS18DQ,C

LCALL DELAY60US ;持续60US SETB DS18DQ ;写完一个位 DJNZ R5,DS18JXWE RET

READ_1820_CODE: ;读取CODE 64位 MOV R4,#8 ;读8次数

MOV R1,#DS18CD1 ;低位地址存在R1 DS18JXRD3:

MOV R5,#8 ;8位数据 DS18JXRD2: SETB DS18DQ

CLR DS18DQ ;前两句完成初始化 NOP

NOP ;延时至少1US

SETB DS18DQ ;上升沿,并在,15US内读数 MOV R7,#5 DJNZ R7,$ MOV C,DS18DQ RRC A

LCALL DELAY60US ;读时序,最少60US

-30-

空调机的温度控制系统

DJNZ R5,DS18JXRD2 MOV @R1,A INC R1

DJNZ R4,DS18JXRD3 SETB DS18DQ

RET;读DS18B20的程序,从DS18B20中读出两个字节的温度数 据

READ_18200:

MOV R4,#2 ;读两次数

MOV R1,#DS18SL ;低位地址存在R1 DS18JXRD1:

MOV R5,#8 ;8位数据 DS18JXRD: SETB DS18DQ

CLR DS18DQ ;前两句完成初始化 NOP

NOP ;延时至少1US

SETB DS18DQ ;上升沿,并在,15US内读数 MOV R7,#5 DJNZ R7,$ MOV C,DS18DQ RRC A

LCALL DELAY60US ;读时序,最少60US DJNZ R5,DS18JXRD MOV @R1,A

-30-

空调机的温度控制系统

DEC R1

DJNZ R4,DS18JXRD1 SETB DS18DQ RET

READ_1820_1: ;读取1位 SETB DS18DQ

CLR DS18DQ CLR DS18DQ CLR DS18DQ SETB DS18DQ MOV R7,#5 DJNZ R7,$ JB DS18DQ,WEFH LCALL DELAY10MS WEFH:

LCALL DELAY60US RET

READCODE: ;读取64位ROM,并显示出来 SETB DS18DQ LCALL INIT_1820 JB DS18FIG,NEXT RET NEXT: MOV A,#33H LCALL WRITE_1820

-30-