|
消毒柜功能要求:臭氧消毒指示灯两个,假设分别为LED1、LED2;加热指示灯两个,假设分别为LED3、LED4;消毒按键一个,假设为A1;消毒柜照明按键一个,假设为A2。
开机时所有指示灯均熄灭,按下A1则LED1亮,臭氧发生器开始工作,20S后,LED1熄灭,LED2点亮;20S后,LED2熄灭,LED3点亮,臭氧消毒结束,进入加热干燥阶段。20S后,LED3熄灭,LED4点亮,再经过20S后LED4熄灭,整个消毒、加热干燥过程结束。需要不同种类的消毒,加热干燥时,可以通过按A1进行选择,每按一次A1,点亮的LED指示灯下移一位,只进行余下的消毒、干燥程序。本消毒柜有四种消毒干燥程序:
1)LED1亮 消毒20S→消毒20S→加热20S→加热20S
2)LED2亮 消毒20S→加热20S→加热20S
3)LED3亮 加热20S→加热20S
4)LED4亮 加热20S
消毒或加入的确切时间(秒)必须用数码管显示出来。
A2单独控制,按一下A2,点亮照明灯LED5,再按一下A2,关闭照明灯LED5
我自己写了一个,请问有问题吗?可以实现上述功能吗?请大家指出其中需要修改的地方,谢谢。
源程序:
GW EQU 40H
SW EQU 41H
BW EQU 42H
QW EQU 43H
WW EQU 44H
SWW EQU 45H
JS EQU 46H
DSQ EQU 47H
ORG 0000H
LJMP MAIN1
LJMP MAIN2
ORG 000BH
LJMP INTT0
ORG 0300H
;**********A2按键控制子程序**********
MAIN2:MOV P2,#0FFH
MAIN3:ORL P1,#0FFH
KEYA2:JB P1.1,KEYA2
LCALL DELAY
JB P1.1,KEYA2
JNB P1.1,$
CPL P2.4
AJMP MAIN3
;**********A1按键控制子程序**********
MAIN1:MOV P2,#0FFH
ORL P1,#0FFH
KEYA1:JB P1.0,KEYA1
LCALL DELAY
JB P1.0,KEYA1
JNB P1.0,$
;**********消毒20S控制子程序**********
AA1: MOV P2,#0FFH
CLR P2.0
LCALL TIME1
TIME1:MOV SCON,#10H
MOV SP,#50H
MOV IE,#10000010B
MOV TMOD,#01H
MOV TH0,#3CH
MOV TL0,#0B0H
MOV JS,#00H
MOV GW,#3FH
MOV SW,#3FH
MOV BW,#3FH
MOV QW,#3FH
MOV WW,#3FH
MOV SWW,#3FH
LCALL LED10
SETB TR0
SJMP $
INTT0:PUSH PSW
PUSH ACC
MOV TH0,#3CH
MOV TL0,#0B0H
MOV R6,DSQ
DJNZ R6,LT1
JNB P1.0,S1
S1: LCALL DELAY
JNB P1.0,AA2
CLR C
MOV A,JS
ADD A,#01H
DA A
MOV JS,A
MOV R5,A
ANL A,#0FH
SS1: MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV GW,A
MOV A,R5
SWAP A
ANL A,#0FH
MOVC A,@A+DPTR
CJNE A,2,SS1
MOV SW,A
LCALL LED10
MOV R6,#20
LT1: MOV DSQ,R6
POP ACC
POP PSW
RETI
LED10:MOV R7,#02H
MOV R0,#GW
LED11:MOV A,@R0
MOV SBUF,A
LED12:JNB TI,LED12
CLR TI
INC R0
DJNZ R7,LED11
RET
;**********消毒20S控制子程序**********
AA2: JNB P1.0,$
MOV P2,#0FFH
CLR P2.1
LCALL TIME2
TIME2:MOV SCON,#10H
MOV SP,#50H
MOV IE,#10000010B
MOV TMOD,#01H
MOV TH0,#3CH
MOV TL0,#0B0H
MOV JS,#00H
MOV GW,#3FH
MOV SW,#3FH
MOV BW,#3FH
MOV QW,#3FH
MOV WW,#3FH
MOV SWW,#3FH
LCALL LED20
SETB TR0
SJMP $
INTT2:PUSH PSW
PUSH ACC
MOV TH0,#3CH
MOV TL0,#0B0H
MOV R6,DSQ
DJNZ R6,LT2
JNB P1.0,S2
S2: LCALL DELAY
JNB P1.0,BB1
CLR C
MOV A,JS
ADD A,#01H
DA A
MOV JS,A
MOV R5,A
ANL A,#0FH
SS2: MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV GW,A
MOV A,R5
SWAP A
ANL A,#0FH
MOVC A,@A+DPTR
CJNE A,2,SS2
MOV SW,A
LCALL LED21
MOV R6,#20
LT2: MOV DSQ,R6
POP ACC
POP PSW
RETI
LED20:MOV R7,#02H
MOV R0,#GW
LED21:MOV A,@R0
MOV SBUF,A
LED22:JNB TI,LED22
CLR TI
INC R0
DJNZ R7,LED21
RET
;**********加热20S控制子程序**********
BB1: JNB P1.0,$
MOV P2,#0FFH
CLR P2.2
LCALL TIME3
TIME3:MOV SCON,#10H
MOV SP,#50H
MOV IE,#10000010B
MOV TMOD,#01H
MOV TH0,#3CH
MOV TL0,#0B0H
MOV JS,#00H
MOV GW,#3FH
MOV SW,#3FH
MOV BW,#3FH
MOV QW,#3FH
MOV WW,#3FH
MOV SWW,#3FH
LCALL LED30
SETB TR0
SJMP $
INTT3:PUSH PSW
PUSH ACC
MOV TH0,#3CH
MOV TL0,#0B0H
MOV R6,DSQ
DJNZ R6,LT3
JNB P1.0,S3
S3: LCALL DELAY
JNB P1.0,BB2
CLR C
MOV A,JS
ADD A,#01H
DA A
MOV JS,A
MOV R5,A
ANL A,#0FH
SS3: MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV GW,A
MOV A,R5
SWAP A
ANL A,#0FH
MOVC A,@A+DPTR
CJNE A,2,SS3
MOV SW,A
LCALL LED30
MOV R6,#20
LT3: MOV DSQ,R6
POP ACC
POP PSW
RETI
LED30:MOV R7,#02H
MOV R0,#GW
LED31:MOV A,@R0
MOV SBUF,A
LED32:JNB TI,LED32
CLR TI
INC R0
DJNZ R7,LED31
RET
;**********加热20S控制子程序**********
BB2: JNB P1.0,$
MOV P2,#0FFH
CLR P2.3
LCALL TIME4
TIME4:MOV SCON,#10H
MOV SP,#50H
MOV IE,#10000010B
MOV TMOD,#01H
MOV TH0,#3CH
MOV TL0,#0B0H
MOV JS,#00H
MOV GW,#3FH
MOV SW,#3FH
MOV BW,#3FH
MOV QW,#3FH
MOV WW,#3FH
MOV SWW,#3FH
LCALL LED40
SETB TR0
SJMP $
INTT4:PUSH PSW
PUSH ACC
MOV TH0,#3CH
MOV TL0,#0B0H
MOV R6,DSQ
DJNZ R6,LT4
CLR C
MOV A,JS
ADD A,#01H
DA A
MOV JS,A
MOV R5,A
ANL A,#0FH
SS4: MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV GW,A
MOV A,R5
SWAP A
ANL A,#0FH
MOVC A,@A+DPTR
CJNE A,2,SS4
MOV SW,A
LCALL LED40
MOV R6,#20
LT4: MOV DSQ,R6
POP ACC
POP PSW
RETI
LED40:MOV R7,#02H
MOV R0,#GW
LED41:MOV A,@R0
MOV SBUF,A
LED42:JNB TI,LED42
CLR TI
INC R0
DJNZ R7,LED41
RET
;**********共阴极字型码表**********
TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
;**********延时子程序**********
DELAY:MOV R1,#10H
LOOP1:MOV R2,#200H
LOOP2:DJNZ R2,LOOP2
DJNZ R1,LOOP1
RET
END
|
|