Pardon me, I don't wish to be repetitious, but I posted a reply on essentially the same thread last month: Subject: Re: ADVICE ON PICs (Times Square Display) Date: Mon, 17 Nov 1997 23:00:55 +1000 These have been a popular magazine project, and I actually have half a dozen used commercial ones sitting in my garage waiting for reverse engineering. I did not get the programmer box, and their Lithium RAM batteries are dead except for one, so there is no other choice. The array has a set of latched shift registers driving the columns, and the rows are driven in turn, i.e., it is multiplexed by row. A complete set of row data is shifted in whilst the previous row is being strobed, then the strobe is turned off, the data latched, and the next row strobe is turned on. With 1 in 7 multiplexing, good brightness is obtained. You will probably need ULN drivers for the columns making two chips and 8 resistors per 8 columns or 10 chips per 8 7x5 modules. You may get by with a ULN driver for the rows as whilst they draw a heavy current (the full supply current in fact), only one is ever enabled at once. The "plenty of I/O lines" requirement is debatable. Three to select the row via an HC138, one for serial data and one to latch makes five lines to drive the display, add I2C bus, serial port and maybe Microwire for temperature. Using an I2C EEPROM for data storage, since it is only read repeatedly, should work. You might as well initialise it and use it for the font also (i.e., download the font from the PC along with the message!) I have a suspicion you could do it with a PIC16F84. **NERI** wrote: > I use 16 of the 7x5 red displays in a scoreboard > I've designed. But do you know a method in which you do the same thing > with 7x5 displays with bicolor LEDs? ( Red, Green and Yellow also) I > think the hardware would become a lot more complicated. The word is DOUBLE. Either you duplicate the column data drivers (shift registers) in the above schema using three pin bi-colour LEDs, which is on consideration the cleanest approach, or you use two-pin bi-colours and now need bipolar drivers on BOTH column data and row select. The latter could be implemented with only a single shift register driving the tri-state line of each individual column driver, the common "data" line alternately selecting high and low data phases (red and green). Similarly, the row driver would enable a given row with a "data" value complementary to the current row driver polarity. I tend to think it would be easier to have two shift register/ uni- polar driver sets with three-pin LEDs, so that the multiplex duty cycle is only 1/rows, but you could use one column driver set and two row select sets alternately multiplexed (with of course, separate column data sets latched in) with a 1/2*rows duty cycle as for the two-pin LEDs. Clear as mud? > From: Michael Coop (pjm) > Date: Lunes, Diciembre 01, 1997 1:21 AM > Try looking at display drivers for alphanumeric LED displays - this > should give you a good idea where to start. > The most common displays are arranged as a 5 columns x7 rows matrix, > and there are chips designed to specifically drive these displays, Three problems: How much? Can they handle random data, particularly laterally-shifted data as needed for scrolling, wide characters and graphics; and how much multiplexing do you still need to load the data into these chips? > or for a more economical approach to large displays, you may consider > treating the display as 'blocks' of perhaps 8x8 pixels. But then you would still need a processor to buffer the 8x8 block and multiplex it separately. > Then, you can address the columns directly, or use a shift register to > 'walk' along the columns one at a time, while you send 8 bits at a > time to turn the lamps on in each column as desired. If you are referring to multiplexing a 50- to 100- column display in one block, you are going to have a VERY low duty cycle. That is why as I have outlined above, practical designs use shift registers to latch in a whole ROW of however-many column pixels are needed and strobe that row while the next row is shifted in. Cheers, Paul B.