基于单片机温度控制系统的设计 下载本文

毕业论文设计

;入口参数:KEY_BUF_G,KEY_BUF_S,KEY_BUF_B ;出口参数:DIS_BUF_G,DIS_BUF_S,DIS_BUF_B PRO_UP:

CALL K_DELAY

JB K_UP,K_LOOP ;按钮抖动处理 INC KEY_BUF_G ;个位增一 MOV A,KEY_BUF_G

CJNE A,#0AH,UPNEXT ;个位增加到10,回0 MOV KEY_BUF_G,#00H INC KEY_BUF_S ;十位加一 MOV A,KEY_BUF_S

CJNE A,#0AH,UPNEXT ;十位超过99,溢出了 MOV R0,#200

ERROR1: LCALL ERR ;出错,显示8888

DJNZ R0,ERROR1

DEC KEY_BUF_S ;退回99 MOV KEY_BUF_G,#09H

UPNEXT:

MOV DIS_BUF_G,KEY_BUF_G MOV DIS_BUF_S,KEY_BUF_S MOV DIS_BUF_B,KEY_BUF_B CALL K_DELAY

RET ;程序名称:PRO_DOWN ;功能:数值下调处理

;入口参数:KEY_BUF_G,KEY_BUF_S,KEY_BUF_B ;出口参数:DIS_BUF_G,DIS_BUF_S,DIS_BUF_B PRO_DOWN:

CALL K_DELAY

JB K_DOWN,K_LOOP ;按钮抖动处理 DEC KEY_BUF_G ;个位减一 MOV A,KEY_BUF_G

CJNE A,#0FFH,DOWNNEXT ;个位减到0,回到9 MOV KEY_BUF_G,#09H

DEC KEY_BUF_S ;十位减一 MOV A,KEY_BUF_S

CJNE A,#0FFH,DOWNNEXT;十位低于0,溢出了 MOV R0,#200

ERROR2: LCALL ERR ;出错,显示8888

DJNZ R0,ERROR2

INC KEY_BUF_S ;退回00 MOV KEY_BUF_G,#00H

DOWNNEXT:

MOV DIS_BUF_G,KEY_BUF_G ;增加完成后,赋值退出,然后DISPLAY

;显示出来

MOV DIS_BUF_S,KEY_BUF_S

第 45 页 共 48 页

毕业论文设计

MOV DIS_BUF_B,KEY_BUF_B CALL K_DELAY RET

K_DELAY: ;键盘抖动延时子程序

MOV R6,#250

DL20MS_1:

MOV R7,#200 DJNZ R7,$

DJNZ R6, DL20MS_1 RET

;可控硅控制 SWITCH:

MOV A,KEY_BUF_G ;三个Buffer都是0的话,说明还没有输入数值,直

;接退出

JNZ SNEXT

MOV A,KEY_BUF_S JNZ SNEXT

MOV A,KEY_BUF_B

JZ SQUIT

SNEXT: CALL SET_DIS_BUF

MOV A,KEY_BUF_S SUBB A,DIS_BUF_S JC COOL

JNZ HOT ;十位如果相等,那么继续比较个位 MOV A,KEY_BUF_G SUBB A,DIS_BUF_G JC COOL

HOT: CLR P_SWITCH ;P_SWITCH为0说明当前温度小于设定温度,要升温,

;所以接电阻丝

SETB P1.3 ;报警 SJMP SQUIT

COOL: SETB P_SWITCH ;P_SWITCH 为1说明当前温度大于设定温度 SETB P1.3 ;报警 SQUIT: RET

;程序名称:SET_DIS_BUF

;功能:赋值给DIS_BUF_G, DIS_BUF_S, DIS_BUF_B ;入口参数:TEMPERATURE_LC,TEMPERATURE_HC ;出口参数:DIS_BUF_G, DIS_BUF_S, DIS_BUF_B

SET_DIS_BUF:

MOV A,TEMPERATURE_LC ANL A,#0FH

MOV DIS_BUF_X,A ;小数位 MOV A,TEMPERATURE_LC SWAP A

第 46 页 共 48 页

毕业论文设计

ANL A,#0FH

MOV DIS_BUF_G,A ;个位 MOV A,TEMPERATURE_HC ANL A,#0FH

MOV DIS_BUF_S,A ;十位 MOV A,TEMPERATURE_HC SWAP A ANL A,#0FH

MOV DIS_BUF_B,A ;百位 MOV A,TEMPERATURE_HC ANL A,#0F0H

CJNE A,#010H,NEXT0 SJMP NEXT1

NEXT0: MOV A,TEMPERATURE_HC ANL A,#0FH

JNZ NEXT1 ;十位数是0

MOV A,TEMPERATURE_HC SWAP A ANL A,#0FH

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

NEXT1: RET ;程序名称:DISPLAY

;功能:显示数据到数码管中。

;入口参数:DIS_BUF_G, DIS_BUF_S, DIS_BUF_B ;出口参数:无 DISPLAY:

MOV DPTR,#DISTAB MOV R3,#0FEH

MOV R1,#DIS_BUF_B

DPLOP: MOV A,@R1

MOVC A,@A+DPTR MOV P2,R3 MOV P0,A

CJNE R3,#0FBH,DPNEXT CLR P0.7

DPNEXT: MOV A,R3

RL A

MOV R3,A DEC R1

CALL DS1M

CJNE R3,#0EFH,DPLOP

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

第 47 页 共 48 页

毕业论文设计

DS1M: MOV R7,#0FFH

DJNZ R7,$ RET

;数码管TAB DISTAB:

DB 0C0H ;0 DB 0F9H ;1 DB 0A4H ;2 DB 0B0H ;3 DB 099H ;4 DB 092H ;5 DB 082H ;6 DB 0F8H ;7 DB 080H ;8 DB 090H ;9

DB 0FFH ;NONE END

第 48 页 共 48 页