精确温度显示的温控自动风扇系统正式版 - 图文(6)

2019-08-30 19:19

RESET_TH1:

CALL ALERT_PLAY JNB FLAG2,R_TH01

mov 75H,7fh ;送入熄灭符 mov 76H,7fh CALL ALERT_PLAY JMP R_TH02 R_TH01: CALL ALERT_TH

mov 75h,7Eh ; mov 76h,7Dh CALL ALERT_PLAY R_TH02: JNB K1,K021A JNB K2,K021B JNB K3,K002 JMP RESET_TH1 K021A:

INC TEMP_TH MOV A,TEMP_TH

CJNE A,#120,K022A ;没有到设定上限值,转 MOV TEMP_TH,#0 K022A: CALL TH_DEL JMP RESET_TH1

K021B:

MOV A,TEMP_TH

CJNE A,#00H,K023B ;没有到设定下限值,转

MOV TEMP_TH,#120 K023B: DEC TEMP_TH K022B: CALL TH_DEL JMP RESET_TH1

K002: CALL BEEP_BL

CLR TR0 ;关闭中断 RET

;----------------------------------------------------- ;键延时子程序

;多次调用动作温度设定值显示程序来延时

;----------------------------------------------------- TL_DEL: ;动作温度低值TL延时 MOV R2,#0AH TL_DEL1: CALL ALERT_TL CALL ALERT_PLAY

26

DJNZ R2,TL_DEL1 RET

TH_DEL: ;动作温度高值TH延时 MOV R2,#0AH TH_DEL1: CALL ALERT_TH CALL ALERT_PLAY DJNZ R2,TH_DEL1 RET

;==================================================== ;实时温度值与动作温度设定值 TH、TL 比较子程序

;当实际温度大于 TH 的设定值时,显示\继电器1吸合,继电器2吸合 ;当实际温度小于 TH 的设定值时,显示“O”,继电器1、2断开, ;当实际温度小于 TL 的设定值时,显示“L”。继电器1吸合,继电器2断开 ;闪动显示标记符 H、L、O

;==================================================== TEMP_COMP:

SETB TR0 ;启动中断 MOV A,TEMP_TH

SUBB A,#01H

SUBB A,TEMP_ZH ;减数>被减数,则

JC CHULI1 ;借位标志位C=1,转 MOV A,TEMP_ZH

SUBB A,TEMP_TL ;减数>被减数,则

JC CHULI2 ;借位标志位C=1,转 JNB FLAG2,T_COMP1 ;FLAG2=0,显示标记字符 MOV 74H,#0AH ;熄灭符 LCALL DISP1 JMP T_COMP2 T_COMP1: MOV 74H,#00H

LCALL DISP1 ;显示\T_COMP2:

SETB C1 ;继电器1断开 SETB C2 ;继电器2断开 CLR TR0 ;关闭中断 RET

;--------------------------------------------- ;超温处理

;--------------------------------------------- CHULI1:

CLR C1 ;继电器1吸合 CLR C2 ;继电器2吸合 JNB FLAG2,CHULI10

MOV 74H,#0AH ;熄灭符 LCALL DISP1

27

JMP CHULI11

CHULI10: MOV 74H,#0DH

LCALL DISP1 ;显示\CHULI11:

CLR TR0 ;关闭中断 RET

;--------------------------------------------- ;欠温处理

;--------------------------------------------- CHULI2: CLR C1 ;继电器1吸合 SETB C2 ;继电器2断开 JNB FLAG2,CHULI20

MOV 74H,#0AH ;熄灭符 LCALL DISP1 JMP CHULI21

CHULI20: MOV 74H,#0CH

LCALL DISP1 ;显示\CHULI21: CLR TR0 ;关闭中断 RET

;------------------------------------------------------------ ;把 DS18B20 暂存器里的动作温度设定值拷贝到EEROM

;------------------------------------------------------------ WRITE_E2:

CALL RESET

MOV A,#0CCH ;跳过ROM匹配 LCALL WRITE

MOV A,#48H ;动作温度设定值拷贝到EEROM LCALL WRITE RET

;-------------------------------------------------------------- ;把 DS18B20 EEROM 里的动作温度设定值拷贝回暂存器

;------------------------------------------------------------- READ_E2:

CALL RESET

MOV A,#0CCH ;跳过ROM匹配 LCALL WRITE

MOV A,#0B8H ;动作温度值拷贝回暂存器 CALL WRITE RET

;***************************************************** ; 处理温度 BCD 码子程序

;**************************************************** CONVTEMP: MOV A,TEMPH ;判温度是否零下

28

ANL A,#80H

JZ TEMPC1 ;温度零上转 CLR C

MOV A,TEMPL ;二进制数求补(双字节) CPL A ;取反加1 ADD A,#01H MOV TEMPL,A

MOV A,TEMPH ;- CPL A

ADDC A,#00H

MOV TEMPH,A ;TEMPHC HI = MOV TEMPHC,#0BH SJMP TEMPC11

TEMPC1: MOV TEMPHC,#0AH ; TEMPC11: MOV A,TEMPHC SWAP A

MOV TEMPHC,A MOV A,TEMPL

ANL A,#0FH ; MOV DPTR,#TEMPDOTTAB MOVC A,@A+DPTR

MOV TEMPLC,A ;TEMPLC LOW=

MOV A,TEMPL ; ANL A,#0F0H SWAP A

MOV TEMPL,A MOV A,TEMPH ANL A,#0FH SWAP A

ORL A,TEMPL

MOV TEMP_ZH,A ; LCALL HEX2BCD1 MOV TEMPL,A ANL A,#0F0H SWAP A

ORL A,TEMPHC ;TEMPHC LOW = MOV TEMPHC,A MOV A,TEMPL ANL A,#0FH

SWAP A ;TEMPLC HI = ORL A,TEMPLC MOV TEMPLC,A

符号位 乘0.0625 小数部分 BCD 整数部分 组合后的值存入TEMP_ZH 十位数 BCD 个位数 BCD 29

MOV A,R7 JZ TEMPC12 ANL A,#0FH SWAP A MOV R7,A

MOV A,TEMPHC ;TEMPHC HI = 百位数 BCD ANL A,#0FH ORL A,R7

MOV TEMPHC,A TEMPC12: RET

;----------------------------------------------------------- ; 小数部分码表

;----------------------------------------------------------- TEMPDOTTAB: DB 00H,01H,01H,02H,03H,03H,04H,04H,05H,06H DB 06H,07H,08H,08H,09H,09H

;===========================================================

;显示区 BCD 码温度值刷新子程序

;===========================================================

DISPBCD: MOV A,TEMPLC ANL A,#0FH

MOV 70H,A ;小数位 MOV A,TEMPLC SWAP A

ANL A,#0FH

MOV 71H,A ;个位 MOV A,TEMPHC ANL A,#0FH

MOV 72H,A ;十位 MOV A,TEMPHC SWAP A

ANL A,#0FH

MOV 73H,A ;百位 MOV A,TEMPHC ANL A,#0F0H

CJNE A,#010H,DISPBCD0 SJMP DISPBCD2

DISPBCD0: MOV A,TEMPHC ANL A,#0FH

JNZ DISPBCD2 ;十位数是0

30


精确温度显示的温控自动风扇系统正式版 - 图文(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:应用文写作试题及答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: