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
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库基于单片机的智能温控风扇(7)在线全文阅读。
相关推荐: