Help with code for multiplexing LED Display

I'm looking for someone to help me with the software side of a project. I've got a Symon RDU LED message display. It has 160 columns and 7 rows. The goal is to swap out the old uP that is in the unit with an ATMEGA328. I've traced out the schematic so hardware wise it looks pretty easy. The link for the schematic is below.

Here is my plan. U3 (CAT28C16AP) will get replaced by the ATMEGA328

ATMEGA Pins
D1 = Clear
D2 = Clock
D3 = ShiftReg1
D4 = ShiftReg2
D5 = ShiftReg3
D6 = ShiftReg4
D7 = ShiftReg5
D8 = ShiftReg6
D9 = ShiftReg7
D10 = ShiftReg8
D11 = To 4051 "A"
D12 = To 4051 "B"
D13 = To 4051 "C"

http://www.technicalelite.com/display/Schematic.pdf

If someone can point me in the right direction or help with the code any help would be greatly appreciated.

Have a read of this page:-
http://www.thebox.myzen.co.uk/Workshop/LED_Matrix.html

Just having a closer look at that circuit and it is a bit rubbish:-

  1. It uses 74LS164 shift registers and they have no data latches in them. That means when you shift in a new value there will be a small time where the LEDs flicker ans the later stages of the data goes past the earlier.
  2. There are no current limiting resistors in the LED lines. This means they will burn out.

I agree the parts they engineered this with are pretty poor.

As far as the flickering. Correct me if I am wrong, but we can wait to turn on the row transistors until the data string has gone through all the shift registers. That should keep all the LEDs from flickering.

I had wondered how they did the current limiting. All I can can think of is that the ULN2003A chips have current clamps so they dont burn out the LEDs.

The display is currently working now. It scrolls the time accros the display. The LEDs do not flicker and havn't burnt out yet.

The software is what I am stuck on. Do I have to design an alphabet? How do you handle the transistor rows when they aren't in sequential order? I'm just not sure where to start. Does my pinout for making a development display make sense?

As far as the flickering. Correct me if I am wrong, but we can wait to turn on the row transistors until the data string has gone through all the shift registers. That should keep all the LEDs from flickering.

Yes that is correct.

All I can can think of is that the ULN2003A chips have current clamps so they dont burn out the LEDs.

But they don't.

Do I have to design an alphabet?

Yes or use some one else's.

How do you handle the transistor rows when they aren't in sequential order?

You use a look array like it shows you in that link.

Hey- any progress on the board? I just picked up the same display for cheap, let me know if you've made any progress. I'll keep you up to date on my end. Wish i could find a true schematic of the display, but Symon seems to think really highly of there hardware- won't share. mine didn't come with a power cable or supply of any sort, it's labeled as 120v but it dosen't look to me like thats going to go over well. As far as i can tell so far it's running on a dual b+ rail with common ground- and it has an onboard -5v regulator.

I found this perl module for symon's signs and it works, with speakers.

The perl module uses Ethernet to talk to the sign, most signs with Ethernet run off port 700 but can be changed.
The module requires 'Digest::CRC' and 'IO::Socket::INET' installed, so since 'IO::Socket::INET' should be installed in the perl library by default 'Digest::CRC' should be the only thing you would need to install.
You will have to set the size of your sign in the program and then have fun.

sudo cpan install Digest::CRC

https://github.com/bwilber/Net-Symon-Netbrite