Making a binary clock using a PIC Microcontroller
You can use a PIC microcontroller and an LED
matrix to create a binary clock (or if you prefer you can wire up individual
This project uses an LED matrix block as it saves lots of wiring.
So what is it ?
Its an led clock that displays the time information as binary numbers...
...and it is a good way of learning how to read binary (well up to 9 any
You can represent the numbers 0-9 using 4 binary
digits so only four leds are needed for each time digit. There's a
binary-decimal conversion table here.
To display hours, minutes and seconds (2 digits each) you need 6 binary digits
in total (depending on whether you use a 24 hour clock the top digit needs only
1 or 2 LEDs).
LED Binary Clock block diagram
How to read a binary
The time is displayed in 24 hour mode so:
- The 1st two digits represent 0-23 hours,
- The next two digits represent 0-59 minutes,
- The next two digits represent 0-59 seconds.
To show the time 6 digits are needed as follows:
Binary Clock digit defiinition
Significant Digit, Least Significant Digit)
Note: You could use a 5x7 led matrix
as only the right hand 4 leds (also only 6 rows)are used in this
The black rectangle, in the diagram above, shows which leds you need to look at
- the rest are not used in this project. You read the clock starting from the
top and read horizontal row of four LEDs as a binary number. Each LED that is
on represents a one and each LED that is off represents a zero. You then use
the conversion table to translate it into
decimal until you become so good at it that you won't need the table!
This project uses the same hardware as the led matrix project using a 16F88 PIC
microcontoller and an LED matrix. Its worth taking a look there as the same
hardware description applies on how to multiplex the display.
I'll just say here that instead of using 64 output pins only 10 are needed to
drive the display.
PIC Microcontroller binary
clock display hardware
(Click diagram to open a pdf)
|Binary clock display
|Red 8x8 LEDs matrix (for convenience) you only
really need a 6x4 LED matrix and you can only buy an 8x8 or a 5x7!
Binary Clock display project details.
PIC Microcontroller Binary Clock Project
|Mikroelectronika MikroC Compiler
|16F88/16F84 (retargetable to other PICs that have an enough
|Multiplexing the display/clock algorithm.
|No special notes
|Enter your details to get the Download Link
and get the microcontroller newsletter:
(Your email is safe it will never
be sold or rented).
You will get All the C source code and
Note: Check your email for the project code download link.
PIC Micro Binary Clock Software
Project files for the dot matrix led display
C Source files.
Binary Clock code description.
This contains all the code except :
- Bit manipulation routines found in bit.h
- Type definitions in types.h
The code is simple to follow and everything is done in
The multiplexing method is the same for the led matrix project so have a look there
for the software description of that method.
The only difficult part is to correctly control the time
display but its not that difficult as you can see in the code.
Note definitions FLIPLR and ROT180 allow you to alter the display
orientation without re-wiring the board!
You can improve the project to make it into a full clock by adding a set of
keys in the same way as the RTC project
This would let you set and change the time.
This project relies on the accuracy of the microcontroller's
internal oscillator which is only 1% - and this is not very accurate at all.
You can expect to loose ~15 minutes per day!
For a better accuracy use an external crystal as shown in some
of the other projects. If you use a crystal the clock will be accurate to a few
minutes per month.
Note: Even when using a standard
crystal the board layout is very important - i.e. it will be a lot better
than 1% but won't be as good as watch crystal accuracy.
You could use a DS1307 clock
chip but even these accurate to about 2 seconds per day (loss) as they rely
on a 20ppm watch 32kHz crystal - good track layout and correct capacitive
crystal loading is needed to get the accuracy shown.
|Error per Day
|Error per Month
| About Me