This project is a functional simulation of a washing machine control system. Developed using the PIC16F877A microcontroller, it simulates various wash cycles, water level management, and timing controls. The system utilizes a Finite State Machine (FSM) approach to manage different states like Power On, Function Selection, and Operation.
- Multiple Wash Programs: Pre-set modes for Daily, Heavy, Delicates, and Whites.
- User Interface: Integrated 16x2 CLCD for real-time status updates and cycle countdowns.
- Control Inputs: Tactile switches for program selection, start/pause, and water level settings.
- Automated Cycle Management: * Wash/Rinse/Spin: Sequenced stages with dedicated timers.
- Door Sensing: Safety simulation that pauses the operation if the door is "opened."
- Buzzer Alerts: Audio notifications for cycle completion and error states.
- Microcontroller: PIC16F877A
- Development Tools: MPLAB X IDE, XC8 Compiler
- Simulation Environment: PICSimLab
- Peripherals used: Timers (Timer2 for PWM/Clock), External Interrupts, 16x2 CLCD, Tactile Switches, DC Motor (to simulate the drum).
- Language: Embedded C
- Power On State: Displays a welcome message and waits for user input.
- Selection State: User chooses the wash program and water level.
- Running State: Activates the motor and starts the countdown timer based on the selected program.
- Pause State: Temporarily stops the timer and motor via external interrupts.
- Completion State: Triggers the buzzer and resets the system to the initial state.
- Compile: Build the project in MPLAB X IDE to generate the
main.hexfile. - Simulate: * Open PICSimLab and select the PICGenius board.
- Set the processor to PIC16F877A.
- Load the
.hexfile.
- Interact: Use the digital switches to select modes and the onboard LCD to monitor the progress.
1. Powering On![]() |
2. Program Selection![]() |
3. Water Level Setup![]() |
4. Cycle Running![]() |
5. Start/Stop Control![]() |
6. Paused State![]() |






