Controlling Akizuki 32x16 LED Matrix Display

Akizuki 32x16 LED Matrix Display with ATmega


For Google Summer of Code 2009, FSIJ had two projects for Akizuki 32x16 LED Matrix Display.

That's because it is important to support hardware/device developments by Free Software, and we would like to expand the power of Free Software Movement. In the long run, it is for Free Software, because software runs on hardware (computers with devices).

We develop a USB target device which is connected to Akizuki 32x16 LED Matrix Display. Host PC can control the LED matrix through USB.

We use Atmel's ATmega for a microcontroller and use V-USB as a USB protocol stack. While it runs as "low-speed device", it is enough for the purpose.

Here is my record of the development, for those who have interests.

Gniibe offers his code to students in the beginning, and students continue their own development from here.

Since the code itself is useful, you can enjoy it, too.

Parts needed

Akizuki 32x16 LED Matrix Display 1
ATmega168 (or 88 would be OK) 1
3.6V Zener diode 2
20MHz XTAL 2
Register: 68 2
Register: 470 1
Register: 1.5k 1
Capacitor: 0.1uF 1
Capacitor: 10uF (or more) 1
USB connector 1
breadboard 1
Wires some


You need GNU development environment for AVR (see AVR GCC Tool Collection) to build target executable from target code, and you need libusb to build/run host executable.

You need a tool to write your program on AVR. We use Avrdude.


If you don't have a friend who has a AVR writer, you need to build it too (yes, you can).

It is natural for micro-controller engineers to make writer for the chip by the chip. And yes, most AVR writers are designed using AVR. But here we have chicken-and-egg problem

Our approach is like following:

  1. Start with USB serial writer
  2. Built USB writer with AVR
  3. USBbootloader


Thanks to Objective Development Software GmbH for V-USB.

Thanks to GNU development environment for AVR, i.e., GCC, avr-libc, etc. , etc.

On the shoulders of forerunners, we can go further.


Gniibe's code is available at my cgit.

It comes with Readme.txt (with a kind of circuit diagram), target code, host code (of display invaders), and the copy of V-USB. You can write your own host code, or extend target code too.

It is distributed under the terms and conditions of GNU GPL version 3 (or later).