I am planning to use 5 40 pin Picaxe micro-controllers to control a 70x70 LED board matrix. My plan is to use 4 of the micro-controllers to control the LEDs and the 5th to tell the other micro-controllers which lights to turn on and off. first of all is this the best plan for the system and second of all how would I communicate between the main micro-controller and the other ones.

Also is anyone has a better idea to control a 70x70 LED board fire away :)

  • \$\begingroup\$ I think you should take a look at charlie plexing (google it) and see if that can help your application. \$\endgroup\$ Commented Mar 6, 2013 at 22:53
  • \$\begingroup\$ I have had a quick look into it but from the little research i did (i may be wrong) there were problems that started to arise from larger LED boards when using charlie plexing \$\endgroup\$
    – Nick
    Commented Mar 6, 2013 at 22:56
  • 1
    \$\begingroup\$ Yes. Just wanted to make sure you were aware of it. As for the issue of the Master and the slaves, this depends on how fast the LED patterns change, but usually using SPI works well since it can handle multiple slaves. \$\endgroup\$ Commented Mar 6, 2013 at 22:58
  • \$\begingroup\$ Thanks, If using a matrix is not as feasible as I think then I will look more into it. \$\endgroup\$
    – Nick
    Commented Mar 6, 2013 at 22:59
  • 2
    \$\begingroup\$ Make sure to look at current consumption. This will be one of the major issues give that you have so many LEDs. An FPGA could tackle it but it'd need to be quite beefy as far as number of I/Os \$\endgroup\$ Commented Mar 6, 2013 at 23:02

2 Answers 2


You can easily do this in a small FPGA, provided that you use a shift registers like a 74xx595 to reduce the number of FPGA I/O Pins. Even the smallest Xilinx Spartan-3 could do it. Now, what you want to do with a 70x70 LED display might place additional demands on the FPGA size.

If you wanted to not use an external shift register(s), then you need a lot of pins on the FPGA. A minimum of 140 I/O pins, but possibly 210 or more. That still is not terrible, but will push you into a BGA which you might not want to deal with at this point.

With external shift registers, you might be able to use a single MCU. The trick here is that you want to connect the shift registers to some sort of SPI serial port, and then use DMA to feed the SPI interface. You don't want to bit-bang the serial interface for this. A typical 8-Bit Micro is probably not going to be enough for this. There are lots of ARM Cortex M0, M3, and M4's that are super cheap and would be a good option.

You could also use external latches (74xx374) instead of shift registers with an MCU. You could probably bit-bang an interface to latches, but using shift registers and SPI with DMA would be superior.

I have done a lot of multi-CPU systems and I can safely say that you do NOT want to do this if you can avoid it. There are a lot of synchronization issues that creep up when using several CPU's, and if you don't know what to pay attention to then you will likely just end up with a sub-par result and a lot of frustration.

  • \$\begingroup\$ Agreed on multi-CPU, but two quibbles/questions: a) with multi-PICs, I thought OP was hoping to avoid additional driving circuitry, whereas with FPGAs you'll definitely need LED drivers. b) depending on your needs, bit-banging can be more effective than built-in SPI (such as when you want to bit-bang parallel SPI outputs) \$\endgroup\$ Commented Apr 6, 2013 at 2:41
  • \$\begingroup\$ @angelatlarge You need additional driving circuitry with PIC's and FPGA's. Although I should mention that there are dedicated LED driver chips out there with built in shift registers! If my options are to bit-bang a 2-8 bit wide SPI vs. use a 1-bit wide SPI controller w/DMA then I'll choose the DMA option every time. ti.com/lit/ds/symlink/tlc5928.pdf \$\endgroup\$
    – user3624
    Commented Apr 6, 2013 at 2:49
  • \$\begingroup\$ I was thinking 70 leds x 10mA/LED (lowballing!) / 4 PICs = 175mA / PIC... \$\endgroup\$ Commented Apr 6, 2013 at 2:55
  • \$\begingroup\$ @angelatlarge If the LED's are in a matrix then you will want to "overdrive" the LEDs. Otherwise they appear too dim. The exact drive current will depend on the LED, but 30 to 90 mA is common. Carefully read the LED datasheets and it will give you an idea about what is acceptable (but usually it is just a starting point). \$\endgroup\$
    – user3624
    Commented Apr 6, 2013 at 3:06

Aside from current demands, you can use one microcontroller, 9 daisychained shift registers for the rows and 9 for the columns. Probably more expensive than your solution, but probably easier to program. If shifting in 70 bits is too slow, you can break them into chunks of 8 or so, with a different output bit handling each chunk

  • \$\begingroup\$ Thanks for your suggestion, I will keep it in mind, but seeing as the programming side is the thing that I find easy I might stay with the micro controllers :) \$\endgroup\$
    – Nick
    Commented Mar 7, 2013 at 23:56

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.