打印

用89C51单片机控制消毒柜的源程序?

[复制链接]
1446|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ykforvista|  楼主 | 2008-5-24 16:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    消毒柜功能要求:臭氧消毒指示灯两个,假设分别为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  

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

0

粉丝