Close
0%
0%

More LED Matrix Display Fun

A smaller version of the previous LED Matrix projects.

Similar projects worth following
In previous projects, I have written about driving and using some good sized LED displays. Now, I am working on a project that I want to be small (ish), so smaller displays are in order. This project is packing 2 displays per board and driver chip, keeping costs down.

After using matrix LED displays, I really like them better than the 7 segment LED displays. Partly because they support full alpha-numeric data and also because they are more pleasing to my eyes.

The IS31FL3730 driver chip has worked well for me on several projects, driving large multicolor matrix LED displays. It will support two matrices of up to 8x8 LEDs. Previous projects have used the larger LiteOn LTP2588AA displays which have a red and green LED at each dot, allowing 3 color choices per dot. On the driver chip, pins are shared between both LED matrices, with matrix 1 driving displays with their cathodes on the column pins and matrix 2 driving displays with their cathodes on the row pins. The larger displays have separate pins for the red and green arrays, but both sets have their cathodes on the column pins. By electrically rotating the second LED matrix, and connecting it's rows to the column pins on the driver chip, it appears to the chip that it's column pins are driving a common anode display. This rotation also makes the displayed characters rotate 90 degrees.

Inside the driver chip, there are two pairs of 11 8 bit registers, because the chip can support up to 11 column displays. I am only using 8 columns for both colors in the LTP2588AA displays. Each bit in each column register corresponds to a row in that column. A 1 in column register 2, bit 3 results in the LED connected to column 2, row 3  lighting up. Both matrices in the chip share the configuration, so the driver chip needs to be configured for 8 columns x 8 rows of active space.

 Translation from ASCII characters to LED on/off data is done in the driver software that I wrote. An  2 dimensional array is used for this translation. One dimension is indexed by the ASCII character value and the other is the column number.  The data values from the array get loaded into the column registers in the driver chip. Since matrix 2 display is rotated electrically, you need to rotate the translated LED data so the characters appear in the right orientation. It would be possible to rotate the matrix 2 data for each character on the fly in the driver, but this would slow things down quite a bit. A second array with the rotated values is a simple solution to this at the cost of an extra 768 bytes of storage space. Both of these arrays are constant values, stored in program memory space.

Shopping around for smaller matrix displays, I found the LTP757 displays which are 0.7" high characters using a 5x7 matrix. That series is available in a few different colors, but only one color per display. Instead of driving a second matrix on the same display, the new board drives 2 displays from one driver chip. The same driver trick is used to correct for the electrically rotated character in the second matrix.  

Schematic of the new LTP757 Dual character board.
Schematic of the new LTP757 Dual character board.

The I2C address for each module is selected by populating jumper 1 through 4. There are only 4 address choices available for each driver chip. I2C bus termination can be applied by populating the resistors R1, R2 or not.

Very little modification to the driver software was needed to support two digits instead of two colors per digit. Mostly, it was removing support for the color attribute. Minor changes were needed in the initialization code so that each driver chip only got initialized once. Upon testing, the new displays were much too bright, so the PWM value got adjusted downward so the brightness range makes sense. Code that actually loads the column registers for each character now senses whether the selected character index is odd or even. Even character column data gets loaded into matrix 1 registers and odd character column data gets loaded into matrix 2 registers. Since the new displays are 5 columns x 7 rows, while the original displays are 5 columns x 8 rows, a few of the character generator array values need to be adjusted. Digits and upper case alpha characters are fine, while lower case descender characters like g, j, p, and q need to get shifted up a row to be complete.

The driver software makes all 5 of these displays appear to be a single 10 character display....

Read more »

  • Making Larger Boards

    Bharbour09/14/2024 at 18:59 0 comments

    On the way through a long, hot, summer, I decided to lay out two variants of these displays. Neither of these boards was done with a specific project in mind. Both are 4 character boards built from the same schematic but have different mechanical setups.

    Schematic for the 4 Character Boards with Ambient Light Sensor
    Schematic for the 4 Character Boards with Ambient Light Sensor

    The first board is designed to go into an application needing 4 alpha-numeric characters on a line. Maybe a meter or something similar. The second board is designed to be end to end stackable, so you can add characters in increments of 4 per board. Both boards have an ambient light sensor on them for auto-dimming the displays. Note that the auto-dimming is done in software.

    There are two driver chips per board to support the 4 characters. Each chip can listen on 1 of 4 addresses, so an I2C address mux will be required in a system using more than 1 of these boards. On rev 1.0 of these boards, the addresses for both driver chips are hard wired, meaning you will need one mux channel per board. The week after I sent the boards out to OSH Park, it occurred to me that with a couple of 3 pad jumpers per board, I could get two of these boards on the same I2C bus or mux channel. That will be rev 1.1 of the boards.The schematic shown is rev 1.1 with the jumpers added.

    4 Character, None-stackable Version
    4 Character, Non-stackable Version
    4 Character, Stackable Version
    4 Character, Stackable Version

    I have added discrete LEDs between the characters to use as decimal points in numeric applications. On the stackable version of the board, the discrete LEDs are in line with the bottom row of pixels of each display. On testing this, it doesn't look good. The decimal point does not stand out from the numbers and looks more like a bug than a feature. On the non-stackable version, the discrete LEDs are below the displays and this looks much better.

    Mounting for the non-stackable boards is done with a pair of machine screws that will thread into standoffs on the back side of the board. Mounting for the stackable version of the boards uses a single machine screw between the second and third character.

     A right angle connector adjusted to be a little less than right angle provides the power and I2C bus connections for the boards.

  • Fixed the Extra LED Mounting in Rev 1.1 of the PCB

    Bharbour07/18/2024 at 15:24 0 comments

    There are pads to place 3 "extra" LEDs on the rev 1.0 boards. Those LEDs are available to add a colon for clock type displays and a decimal point for float values. They are driven from an extra column on the display driver. For rev 1.0, I just put SMT pads along the right edge of the PCB, with the intention of soldering the LEDs to the pads.

    Rev 1.0 Display with SMT pads for misc LEDs.
    Rev 1.0 Display with SMT pads for misc LEDs.

    This did not work well. It was kind of an afterthought anyway. It was difficult to get the LEDs positioned with any accuracy and it was easy to pull the SMT pads off the board along with the LEDs.

    The solution to most of the problems was to widen the board slightly (.050") and replace the SMT pads with through hole pads. The mounting is much more durable, the LED lead dress to get them in the right place is easier, and the vertical LED placement is pretty consistent. The rightmost LED is a little wild on the placement here, but I was experimenting with the lead dress for the colon operation and did not get the LED re-positioned well.

    The new LEDs look a lot better in this use situation, as they give a well defined dot that looks more like the display pixels than the old round dome mini LEDs that I was using on the R1p0 displays.

    The board to board spacing is fairly important to get things looking good. The pixel to pixel spacing on the displays is 0.100" and between the two displays on the board, the pixel spacing is 0.200" The decimal point looks OK if the board to board spacing places the adjacent display pixels are 0.200" apart.

    With 0.200" spacing, the colon visually smears into the characters and looks bad. Placing the boards on either side of the colon so that there is 0.400" spacing looks much better, but makes the LED lead dress a little more difficult. The LEDs for the colon need to be spaced about 0.150 to the right of the display module and the height flush with the top of the display modules.

    All told, the rev 1.1 board is an improvement and I am happy with the design now.

View all 2 project logs

Enjoy this project?

Share

Discussions

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates