Summary of Countdown Timer using PIC16F84 microcontroller
This article describes a precise kitchen timer project using two PIC16F84 microcontrollers. One PIC encodes keyboard input, while the other drives the display and manages timing functions, achieving 1/100th-second accuracy. The system utilizes a serial connection between chips and a 4-to-16 line decoder to manage six display digits with limited I/O. A buzzer shares decoder outputs with the display, causing them to flash simultaneously when active.
Parts used in the Kitchen Timer:
- PIC16F84 microcontroller (Keyboard encoder)
- PIC16F84 microcontroller (Display driver)
- LED display segments
- 4 to 16 line decoder
- Buzzer
It’s a kitchen timer. Use it to time spaghetti, or maybe an egg. It uses two PICs, one acts as a keyboard encoder, the other drives the display and supports the timer functions. You key in the desired time and press ‘#’. It’s accurate to 1/100th of a second, which can make all the difference I’m sure you’ll agree.
You can buy something similar to this from Denkimono.
Operation:
The PIC16F84 doesn’t have enough I/O lines to drive the display and keyboard so the keyboard encoding was done by one PIC and the display driving by another. The keyboard data was transferred to the display driver PIC over a single serial line. Even then there were not enough lines for the display driver PIC to drive the LED segments and select the display digit directly, so a 4 to 16 line decoder was used. This uses a 4-bit binary encoded input to select one of 16 outputs. This way the PIC was able to select each of six digits using only 4 output lines (3 to select the digit and 1 to latch the data to the decoder).
3 binary inputs decode to 8 outputs so one of the spare outputs was connected to the buzzer. The drawback with this is that the display and the buzzer cannot operate concurrently. This was turned into a ‘feature’ by flashing the display when the buzzer is sounding.
For more detail: Countdown Timer using PIC16F84 microcontroller
- How is the time input processed?
The user keys in the desired time and presses '#' to start. - What determines the accuracy of this timer?
The timer is accurate to 1/100th of a second. - Why are two PICs used in the design?
One PIC acts as a keyboard encoder while the other drives the display and supports timer functions because a single chip lacks enough I/O lines. - How is data transferred between the two microcontrollers?
Keyboard data is transferred to the display driver PIC over a single serial line. - How does the system select each of the six display digits?
A 4-bit binary encoded input selects one of 16 outputs on a decoder, allowing the PIC to select digits using only 4 output lines. - Can the display and buzzer operate at the same time?
No, they cannot operate concurrently because the buzzer uses one of the spare decoder outputs. - How does the device indicate when the buzzer is sounding?
The display flashes when the buzzer is sounding to turn the limitation into a feature.

