Proteus 8 project: On 5x7 Matrix LED Display show numbers 0-9 (up and down), with 1Hz, Counter, Multiplexer and EPROM.

Daniel44

Junior Member level 1
Joined
Dec 22, 2024
Messages
15
Helped
0
Reputation
0
Reaction score
0
Trophy points
1
Visit site
Activity points
107
I tried, but I'm stuck. I think I need to connect a shift register to the 7 rows but don't know how.
Here's the file how it looks like as of now.
Also a screenshot.
Any help would be good.
 

Attachments

  • Projekat.PDF
    27.7 KB · Views: 42

Getting closer...
U16.Q5 and Q6 connection to EPROM is useless, bits are constantly 0. Instead U1.Q0-Q2 need to be connected to EPROM A5 to A7 (or A0 to A2, depending on code table design) to select individual column dot patterns.
Tried with 2 EPROM, it goes 15 11 13 11 (yellow light) 15 11 13 11 15.
Also tried something like this (2nd picture).
 

Tried with 2 EPROM, it goes 15 11 13 11 (yellow light) 15 11 13 11 15.
Also tried something like this (2nd picture).
yes we see.
But why don´t you follow our recommendations?

We tell you what to do ... but you do something else. I don´t understand why.

Klaus
 

Again, close but not quite there.
Think carefully about how the character shape is formed (the font). The multiplexing technique uses persistence of vision to make the digit shape look 'solid' when in fact it is rapidly being flashed column by column. So you have to light up the LEDs according to the bits in the first column, then repeat for the second column and so on. Do it quickly enough and your eyes won't notice the flicker and see all the bits appear to be lit simultaneously.

The EPROM contains the character font and it has eight data bits, this makes it ideal to use seven of them for the rows, the extra one can be ignored or maybe used to drive a decimal point LED. Connect the EPROM data outputs to the rows of the LED matrix. Now you have to make the appropriate bits come out of the EPROM for each column of the LED matrix. As you turn each column on, you have to output the EPROM bits for that column, this means you need the same count that turns the columns on to also control the EPROM output. To do that, connect the signals (decoded or in binary) to some of the EPROM address lines. As each column is turned on, another address is selected in the EPROM and its output bits turn on the LED for that column. Note that this sequencing of the columns is not related to the number you selected to display, it just has to be fast enough (suggest about 500Hz) that you don't notice the flickering. Also note that if you decode the columns (74HC238) from a binary counter you can use the binary bits to address the EPROM and you don't have to reset the count at all if you can live with a brief blank for three of the column periods.

If you got this far, you have a free running display that shows whatever digit or bit pattern was in the EPROM at the addresses you chose. I would suggest you connect address lines A4, A5 and A6 to the column binary counter so the actual digit you want to be shown can be selected with A0,A1, A2 and A3. All the other address lines can be grounded.

Brian.
 

I would suggest you connect address lines A4, A5 and A6 to the column binary counter so the actual digit you want to be shown can be selected with A0,A1, A2 and A3. All the other address lines can be grounded.
Like this?
Connected a counter to the EPROM A5, A6, A7 and that counter also goes into the decoder.

EDIT:
I think I made it work with 2 EPROMs.
The only question is how to make it faster (I think I will need 1 Hz, as it is a special requirement).
 

Attachments

  • Project.zip
    17.4 KB · Views: 20
Last edited:

Hi,

I did not go deep ... but at first sight .... it looks much better now.

*****
Don´t connect U2:Q1:Q3 to the blue bus. They are not member of this bus.

Not mistakes .. but to make it more clear:
* I´d rename Q1..3 --> COLB0..2 // this way every one knows that this is the column counter (B here measn BINARY)
* the same way you could name the EEPROM outputs ROW0...7 (But d0..7 is good)

****
* U1 and U16 are binary asynchronous (ripple) counters with asynchronous RESET. The outputs don´t switch at the same time .. thus your RESET logic may cause glitches resulting in false RESET.
* I personally like synchronous counters with synchronous RESET. --> More reliable operation ... without critical glitches, relaxed timing.
* I personally would re-arrange the EEPROM addresses: COLB0:3 --> A0:2. .. and the number_counter to A3:7. This makes the EEPROM contents more ordered.

***
While in your simulation the matrix may work ... I doubt it does in real life.
* Because one column consisits of 7 LEDs. .. if all 7 are ON at the same time you get 7x LED current at the COL lines. So if you drive the LEDS with 20mA each this makes 140mA COL current. Your HC238 nevere3 can drive that much. --> you need a COL driver
* to drive the LED matrix correctly you need to install a current limiting resistor at each of the ROW lines.
* but ... the EEPROM outputs are not meant to drive a full LED current (20mA for example). I´d add a ROW driver, too. Depends on drive strength of the EEPROM

Mind: due to your 1:5 MUX rate ... the average LED current is then 1/5 only. (20mA --> 4mA average) Thus the brightness is reduced. For sure one could "overdrive" the LEDs with increased current. See matrix datasheet on SOA.

A real circuit also needs real clock oscillators ... and power supply decoupling capacitors.

Klaus
 

Thanks, if I want to display numbers individually, it works, but once I want to display all of them, it won't work.
Displaying 0,1 and 2 works, but once it goes to the final column of the number 3 it's wrong, also the following numbers aren't good.
Now that the second counter is connected to the BUS, can I keep the decoder on the BUS too or should I remove it as you said earlier?
 

A detail that was implemented in post #26 is missing in your final schematic. The EPROM should hold different dot patterns for each column, to select it, ColB[2..0] must connected to EPOM address lines.
 

A detail that was implemented in post #26 is missing in your final schematic. The EPROM should hold different dot patterns for each column, to select it, ColB[2..0] must connected to EPOM address lines.
Could it be the following: 0 (5 states), 1 (5 states), 2 (5 states), 3 (4 states, last column Reset starts from 0) 5+5+5+4 = 19, 19 is Master Reset at the Counter.

EDIT:
Yes, this was the problem.
Had to change the Master Reset (here I did 95, but should be 90).
Because 18*5=90.
 
Last edited:

Confusion rising

We have 18 steps in the number sequence 0 to 9, 8 downto 1, selected by 5 bits of slow counter U5 (below U16).
And 5 columns, selected by 3 bits of fast multiplex counter U10 (below U1).

I expect a 5 column x 7 row dot pattern for each number (in contrast to post #3 assuming a 5x5 dot matrix).

As stated, post#26 is showing a possible wiring scheme. Alternatively, column address could be mapped to the lower and number selection to the upper bits, which corresponds to the usual data ordering of character generators.

 

Alternatively, column address could be mapped to the lower and number selection to the upper bits, which corresponds to the usual data ordering of character generators
Does this mean to connect U1 (Q1,Q2,Q3) to EPROM U15 A0,A1,A2. And then to connect U16 Q0,Q1,Q2,Q3,Q4 to A3,A4,A5,A6,A7?
Because I did it and it's not working (stuck on the first column).
Also can I leave it like in the #30 post where I have 90 states?
 

Because I did it and it's not working (stuck on the first column).
"Stuck" means what? Also, what's the EPROM code? You didn't yet show a valid 5x7 matrix.

EPROM organization has to refelect order of address lines.
LSB connect to column position means you have 5 column bytes and 3 void bytes for character "0" in the first 8 posistions and so on.

Also can I leave it like in the #30 post where I have 90 states?
No, because both counters must run a different speed.
 

Stuck as in runs only the first column (first from the right side).
The EPROM code is written with the idea that every column is activated one by one.
EPROM code:

For easier reading:
 

Thanks for all the replies, it finally works the way it should!
Here, as you can see it's working.
 

Cookies are required to use this site. You must accept them to continue using the site. Learn more…