Using an undocumented display with an FPGA

When [Mike] ran across a display on Deal Extreme with 8 seven-segment displays, 8 red/green LEDs, and 8 buttons, he knew it would find a good home in a future project. There was only one problem, though: except for an Arduino library, there was absolutely no documentation available for this display. Wanting to use this display with an FPGA board, [Mike] decided against bit-banging a protocol and ported the C++ code into a hardware implementation.

This Deal Extreme display, the TM1638, features enough seven-segment displays, LEDs and buttons to build something really cool, and surprisingly isn’t terribly hard to interface with a microcontroller. The TM1638 library communicates with the outside world via only three pins and a simple serial connection.

After figuring out what commands are sent to make the display turn LEDs on or off, [Mike] wrote a hardware implementation for his Digilent Nexys2 and Digilent Basys2. Now the display operates on an FPGA just like it does with an Arduino, and is a great tool for debugging HDL code for [Mike]‘s FPGA.

10 thoughts on “Using an undocumented display with an FPGA

  1. There actually is documentation; one of the folks at the DealExtreme forums translated the Chinese datasheet into english.

    The device uses a straightforward 3-wire SPI interface (strobe, clock, and a bidirectional serial pin).

    I ended up bit-banging the protocol on my MSP430, but there is a library out there on the 43oh forums that uses the hardware SPI interface (and a couple external diodes) to make it work without bit-banging.

  2. Actually there is documentation, but in Chinese. You can download the datasheet of the TM1638 on the manufacturer’s website (titanmec.com). Timing diagrams are a universal language, and in case of doubt automatic translation usually works well with Chinese.

  3. I actually had plans to build the Arduino library using SPI too, but it was simple to try and test it and get it to work using the bit-banging than SPI.

    Just never had time to pick it up, but it’s on my TODO list to pick it up and use the SPI on arduino too… someday :)

    1. I it was your library code that I worked from, so a big public “thank you” is needed.

      Thank you!

      Now I must be able to do something grand with this display… I’m thinking of using a GPS module to get my car’s car speed, and then using a row of three of these to make a POV display that displays “I am going X km/hr” as I drive down the street. It can use the speed info to adjust the aspect ratio.

      Won’t be doing it on and FPGA though :-)

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s