Summary of One-chip 11×10 LED matrix. using pic microcontroller
This project demonstrates driving a 11x10 LED matrix using only a single 8-bit PIC microcontroller via charlieplexing. The author utilized 110 LEDs and an 11-pin controller to achieve the maximum theoretical limit of N*(N-1) LEDs. To maintain consistent brightness, the system scans all 110 positions at approximately 30Hz using Timer0 interrupts, ensuring every LED receives a uniform duty cycle regardless of how many are illuminated.Parts used in the One-chip 11x10 LED matrix:
- 110 LEDs (from original 120)
- PIC16F688 microcontroller
- PIC16F1823 microcontroller
- Timer0 module
This project is pretty cool for a few reasons, and driving a huge LED matrix with a single 8-bit controller is just one of them. The idea was born when I bought 120 LEDs of the wrong type, and decided to do something with them. With that many LEDs, there are only a few things you can do, and a matrix is the natural first-place-winner in the competition of those ideas. One of the LEDs did not work, so a 12x10 matrix was out, so I settled for an 11x10 matrix. This meant I had to drive 110 LEDs. The only controller I had free was a PIC16F688 with 11 pins that can be used for output.After deciding not to use any other chips, charlieplexing was the way to go. The maximum number of LEDs one can charlieplex using N pins is N * (N - 1), so for 11 pins that number is 110. What a coincidence! 🙂

For more detail: One-chip 11x10 LED matrix.
Quick Solutions to Questions related to One-chip 11x10 LED matrix:
- How was the decision made for the matrix size?
The author started with 120 LEDs but one failed, reducing the count to 119; since a 12x10 grid required 120, an 11x10 grid using 110 LEDs was selected. - Why was charlieplexing chosen for this project?
Charlieplexing was selected because it allows driving up to 110 LEDs using exactly 11 output pins on the available PIC16F688 controller. - How is consistent brightness maintained across all LEDs?
The system scans through all 110 positions regardless of whether they need to be lit, preserving timing so every active LED has the same 1/110 duty cycle. - What scan rate was determined to be sufficient for persistence of vision?
A scan rate of approximately 30 times per second was chosen to ensure each LED turns on at least 25 times a second as required by human vision. - How does the code handle the high switching frequency requirement?
Interrupts are used to manage the 3300 switches per second, specifically utilizing Timer0 overflow interrupts to update which LED is active. - What specific configuration is used for Timer0 on the PIC16F688?
Timer0 runs with no prescaler at 8 MHz, allowing only 32 instructions between interrupts before reloading the timer with 0xD0. - How does the implementation differ when using a PIC16F1823?
The PIC16F1823 runs faster at 32 MHz, allowing the use of a 1/8 prescaler and a reload value of 0x60 for simpler timing management.
Related projects
Determine capacitance by measuring the charging time using PIC16F688
When TEST botton is pressed, RA3 pin is set to "1". R2 and R3 are divide the voltage to 1/2 Vra3 which...
Meters & Test Instruments · PIC16F688Digital Oscilloscope using PIC16F688
Far and away my most ambitious project to date, this digital oscilloscope can sample up to four channels at a rate up...
Sensors & Temperature · PIC16F688Digital Thermometer Using PIC16F688 microcontroller
Digital thermometers are cool devices as they show temperatures in human readable formats. This digital thermometer project is based on a PIC16F688...
LED ProjectsAn Application-Driven Microcontroller Curriculum
Understanding how to apply microcontrollers lies at the core of modern embedded systems education. This student project takes an experiential approach to...
LED ProjectsBuild this microcontroller controlled rainbow flying disc – and then throw it!
Hello all and welcome to this super simple and inexpensive instructable. If you like throwing frisbees AND you like flashing lights AND...
LED ProjectsLED Scrolling Display Project Working With Circuit Diagram
We normally use a simple static LED display screen to convey a message. Earlier, when we want to display large data, we...