Electronic Hand Sanitizer (EHS)-8051
Design an Electronic Hand Sanitizer (EHS) based on 8051 uController
Schematic
Assembly Program:
SC BIT P3.1
READ BIT P3.0
HEATER BIT P0.4
ORG 0000H
SJMP MAIN
ORG 0003H
LJMP ISR_STOP
ORG 000BH
LJMP ISR_TIMER
ORG 0013H
LJMP ISR_EOC
ORG 0030H
MAIN: SETB P0.0 ;EMPTINESS OF WATER AND SOAP INPUT
SETB P0.2 ;IR SENSOR INPUT
MOV IE,#87H ;ENABLE INTERRUPTS
SETB IT0 ;MAKE EDGE-TRIGGERD EXTERNAL INTERRUPTS
MOV P2,#32D ;PROVIDE VREF TO ADC
MOV P1,#0FFH ;PORT 1 READS ADC OUTPUT(TEMPERATURE)
MOV TMOD,#01H ;TIMER0,MODE1
ACALL SET_TIMER0;SET TIMER VALUVES
MOV R5,00H ;j=0
MOV R3,#2D
ACALL DELAY
CHECK_EMPTINESS: JNB P0.0,CHECK_HAND
SJMP CHECK_EMPTINESS
CHECK_HAND: JNB P0.2,WASHING
SJMP CHECK_EMPTINESS
WASHING: CLR P0.5 ;OPENING WATER FLOW
MOV R3,#4D ;WAIT 1S
ACALL DELAY
SETB P0.5 ;CLOSEING WATER FLOW
MOV R3,#2D ;WAIT 500MS
ACALL DELAY
CLR P0.6 ;OPENING SOAP FLOW
MOV R3,#4D ;WAIT 1S
ACALL DELAY
SETB P0.6 ;CLOSING WATER FLOW
MOV R3,#80D ;WAIT 20S
ACALL DELAY
CLR P0.5 ;OPENING WATER FLOW
MOV R3,#80D ;WAIT 20S
ACALL DELAY
SETB P0.5
MOV R3,#2D ;WAIT 500MS
ACALL DELAY
CLR P0.7 ;OPENING AIR FLOW
CLR P0.3 ;TRUN ON MOTOR
SETB TR0 ;START TIMER
CLR SC ;SENDING SC SOGNAL TO ADC
MOV R3,#40D ;WAIT 10S
ACALL DELAY
SETB P0.4 ;TRUN OF HEATER
CLR TR0 ;STOP TIMER
SETB P0.3 ;STOP MOTOR
SETB P0.7 ;CLOSE V3
ACALL BEEP
SJMP MAIN
DELAY:
LOOP2: MOV R2,#10D
LOOP1: MOV R1,#100D
LOOP0: MOV R0,#125D
DJNZ R0,$
DJNZ R1,LOOP0
DJNZ R2,LOOP1
DJNZ R3,LOOP2
RET
BEEP: MOV R6,#08D
BEEP_L: CPL P0.1
MOV R3,#1
ACALL DELAY
DJNZ R6,BEEP_L
RET
ISR_EOC: JNB P0.7,NEXT ;CHECK V3 IS OPEN
RETI
NEXT: SETB READ
CLR READ ;HIGH TO LOW PULSE
MOV A,P1 ;READ TEMPERATURE
CJNE A,#0CDH,HEATER_CODE
HEATER_CODE: CPL C
MOV HEATER,C
SETB SC
CLR SC
RETI
ISR_TIMER: MOV A,R5 ;GENERATE 80% PWM SIGNAL FOR DC MOTOR
MOV B,#05D
DIV AB
XCH A,B
INC R5
ACALL SET_TIMER0
JNZ MOTOR_ON
SJMP MOTOR_OFF
MOTOR_ON: CLR P0.3
RETI
MOTOR_OFF: SETB P0.3
RETI
SET_TIMER0: MOV TL0,#0EFH
MOV TH0,#0D8H
RET
ISR_STOP: MOV P0,#0FFH
MOV P1,#0FFH
MOV P2,#0FFH
MOV P3,#0FFH ;CLEAR ALL I/O PORTS
CLR IE.7 ;DISABLE INTERRUPTS
SJMP $ ;WAIT UNTIL ON_SWITCH FOR RESET
END