A look at a retro LED matrix display project and problems with some eBay LED matrix modules

By Julian

Youtuber, shed dweller, solar charge controller aficionado

14 thoughts on “Led matrix displays and non-optimal byte orientation”
  1. Avataaar/Circle Created with python_avatars protonjinx says:

    stacking them vertically just means youll have to use wires instead of jumpers

  2. Avataaar/Circle Created with python_avatars Vyratron says:

    I made one in the 90s and I used horizontal bytes Because vertical bytes would have been too dim with all the multiplexing. 1/7 brightness is much brighter than 1/32 brightness (multiplexing duty cycle).

  3. Avataaar/Circle Created with python_avatars acestu says:

    You waited all that time for the magazine to come out only to find they spelled your name wrong Julyan, or should I say Julian !

  4. Avataaar/Circle Created with python_avatars Alone says:

    In the magazine is written Julyan instead of Julian?!

  5. Avataaar/Circle Created with python_avatars D. White says:

    Bought heaps of different LED 8*8 matrices and at the end of the day they all worked but were a pain in the butt for one reason or another to cascade. My next project is using a DIP version of the MAX7219 using the 3mm 8*8 array in a 4*1 configuration that can be linked.

    Provided the 4*1 works and can be linked and I got the spacing right will make similar for 4*2 and finally 4*4.

    As for buffering I have multiple bitmap classes for 1,4 and 16 bit displays so use the 1 bit version for these. The 1 bit version (here's the trick) has 2 mapping options so I use the one that mimics the MAX7219 output format 1:1.

    My MAX7219 class has an output buffer method that expects a frame buffer and it simply transfers the lot. On my Due it uses DMA at a clock of 20Mhz to do the transfers which can output well over 100 FPS with a 32 * 32 pixel grid.

    I also found the original code I used for the MAX7219 was quite shockingly slow. It use to clock a lot of NOP operations and over multiple devices it would choke. Basically I send each byte just once but send in reverse order as they get shuffled along.

  6. Avataaar/Circle Created with python_avatars Flat Finger Tuning says:

    Bit-per-pixel video displays almost invariably orient bytes horizontally because everything on a row needs to be sent consecutively because an N-dot display will only need to fetch N/8 bytes per line, instead of fetching N bytes of data and discarding 7 bits from each. Scanning top to bottom generally looks better than scanning left to right, and unless a display's memory is set up to group bytes differently when fetching than when writing, that implies that bytes get oriented horizontally.

    My more modern pet peeve is with color oled/lcd displays that require shifting in 16 or 24 bits per pixel. Adding a 256-color LUT and then having an option to write 8 bits per pixel shouldn't cost much, but would make microcontroller-based screen updates almost twice as fast.

  7. Avataaar/Circle Created with python_avatars Graham Uk says:

    Why was your name spelled Julyan back then?

  8. Avataaar/Circle Created with python_avatars Mike oliver says:

    I had this problem on a display like your and all I had to do was make changes to the header file for the Arduino library I was using. I used the MD_MAXX7219 library and after making the changes it worked great. I think learnelectronics has a video on it.

  9. Avataaar/Circle Created with python_avatars Jon Shygye says:

    Just look up Character ROM. Remember old CRT terminals scanned from left to right.

  10. Avataaar/Circle Created with python_avatars Pete and Peter says:

    I've been fighting this myself for months.. the two arduino libraries that seem to address this problem are MD_MAX72XX and MD_PAROLA .. they seem to be written for this type of orientation..

  11. Avataaar/Circle Created with python_avatars Readme .txt says:

    For cascaded modules you better use a software display buffer (bitmap), because you can easilly build e.g. 16X128 pixels matrices. You can put bits to the buffer any way you like. Finally, a Paint() or simillar function transfers whole bitmap to the MAX ICs. I could send you my software 'driver' if you like.

  12. Avataaar/Circle Created with python_avatars Readme .txt says:

    I agree. The chip was meant to drive 7s digits. Anyway, you can arrange anything you like in software 😉 (1. Create display_buffer, 2. Fill with pixels using by column method, 3. Transfer it to the matrix using the matrix orientation)

  13. Avataaar/Circle Created with python_avatars Spikey DaPikey says:

    Can you buy the back boards for the matrix modules? I have 6 modules, but no idea now how to use them, as I'm a bit of a noob.

  14. Avataaar/Circle Created with python_avatars jimsal78 says:

    Would matrix transposition work? Not really thought much through but that would be my first thought?

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.