基于单片机的智能温控风扇(7)

2019-04-09 21:58

MOV A,TEMPHC ANL A,#0F0H

CJNE A,#010H,DISPBCD0 SJMP DISPBCD2

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

JNZ DISPBCD2 ;十位数是0 MOV A,TEMPHC SWAP A ANL A,#0FH

MOV 73H,#0AH ;符号位不显示 MOV 72H,A ;十位数显示符号 DISPBCD2: RET

;***************************************************************

; 温度显示子程序

;*************************************************************** DISP1: MOV R1,#70H ;指向显示数据首址 MOV R5,#7FH ;扫描控制字初值 PLAY: MOV P0,#0FFH

MOV A,R5 MOV P2,A

MOV A,@R1 ;取显示数据到A MOV DPTR,#TAB ;取段码表地址 MOVC A,@A+DPTR ;查显示数据对应段码 MOV P0,A ;段码放入P0口 MOV A,R5

JB ACC.6,LOOP5 CLR P0.7

LOOP5: LCALL DL_MS

INC R1 ;指向下一个地址 MOV A,R5 ;放回 R5 内

27

JNB ACC.3,ENDOUT

RR A ;A 中数据循环左移 MOV R5,A ;放入 R5 中 AJMP PLAY ;跳回 PLAY 循环

ENDOUT: MOV P0,#0FFH ;一次显示结束,P0口复位 MOV P2,#0FFH ;P2口复位 RET TAB:

DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,0BFH,0C7H,89H

DL_MS: MOV R6,#0AH DL1: MOV R7,#64H DL2: DJNZ R7,DL2 DJNZ R6,DL1 RET

;****************************************************** ;单字节十六进制转 BCD

;****************************************************** HEX2BCD1: MOV B,#064H DIV AB MOV R7,A MOV A,#0AH XCH A,B

DIV AB SWAP A ORL A,B RET

;=============================================== ;报警值 TH、TL 数据转换

;=============================================== ALERT_TL:

MOV 79H,#0CH MOV 78H,#0BH

28

MOV A,TEMP_TL MOV R0,#77H MOV B,#064H DIV AB

CJNE A,#01H,ALERT_TL1 MOV @R0,A JMP ALERT_TL2

ALERT_TL1: MOV A,#0BH ;显示“-” MOV @R0,A ALERT_TL2: MOV A,#0AH XCH A,B DIV AB DEC R0 MOV @R0,A MOV 7DH,A DEC R0 MOV @R0,B MOV 7EH,B RET

;----------------------------------------------- ALERT_TH:

MOV 79H,#0DH MOV 78H,#0BH MOV A,TEMP_TH MOV R0,#77H MOV B,#064H DIV AB

CJNE A,#01H,ALERT_TH1 MOV @R0,A JMP ALERT_TH2

ALERT_TH1: MOV A,#0BH ;显示“-” MOV @R0,A ALERT_TH2: MOV A,#0AH XCH A,B DIV AB

29

DEC R0 MOV @R0,A MOV 7DH,A DEC R0 MOV @R0,B MOV 7EH,B RET

;=============================================== ;动作温度设定值显示子程序

;=============================================== ALERT_PLAY:

MOV R1,#75H ;指向显示数据首址 MOV R5,#7FH ;扫描控制字初值 A_PLAY: MOV P0,#0FFH

MOV A,R5 ;扫描字放入A MOV P2,A

MOV A,@R1 ;取显示数据到A MOV DPTR,#ALERT_TAB ;取段码表地址 MOVC A,@A+DPTR ;查显示数据对应段码 MOV P0,A ;段码放入P0口 LCALL DL_MS1

INC R1 ;指向下一个地址 MOV A,R5

JNB ACC.3,ENDOUT1

RR A ;A 中数据循环左移 MOV R5,A ;放入 R5 中 AJMP A_PLAY ;跳回 PLAY 循环

ENDOUT1: MOV P0,#0FFH ;一次显示结束,P0口复位 MOV P2,#0FFH ;P2口复位 RET

ALERT_TAB:

DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,0BFH,0C7H,89H ;共阳段码表 “0\“1\“2\“3\“4\“5\“6\“7\“8\“9\“灭\“-\

30

DL_MS1: MOV R6,#0AH ADL1: MOV R7,#64H ADL2: DJNZ R7,ADL2 DJNZ R6,ADL1 RET

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

31


基于单片机的智能温控风扇(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:补钠计算

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

马上注册会员

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