Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

[AVR] Help me with led scrolling message board

Status
Not open for further replies.

codename25

Member level 3
Joined
Jan 15, 2015
Messages
65
Helped
0
Reputation
0
Reaction score
0
Trophy points
6
Activity points
555
H
I am new to microcontrollers, But I some how made a 5X7 led message display with AtMega16. But now I want to built a giant 10X100 led message display. But, to built this giant I need so many pins on my AtMega16 but I have only 40. I know there will be a solution, It would be grateful if anybody come up with a solution for this.

I have done my 5X7 led project like this:
https://electronicswork.blogspot.in/2011/12/5x7-scrolling-message-display.html

Thank you.
 

Easyrider83 & pulsetronics,Thanks for your reply. I'm really confused with the difference between decade counters and shift registers. Why shift registers are preferred mostly. How can shift registers help me to built a 100 column led scrolling message display. Can any one please explain me these. Thank you.
 

To make 10x100 display you must use multiplexing.
Similar this z80 system: http://www.z80.info/z80_mp.htm
I built it and works fine. It is must be work with Atmega. Simply use the mega's ports and replace the software with your own.
 

big moving display.JPG

https://www.electronics-tutorials.ws/sequential/seq_5.html
 
The principled topology can work, although some details like current limiting resistors are missing.

You should start however with a calculation of intended average and peak LED current and chose the hardware accordingly.

Considering 500 mA maximum ULN2003 output current, you end up with 5 mA LED peak and 0.5 mA average current for a 10x100 matrix. Probably too dim, you would rather attempt the five- or even tenfold current.
 

jamespond & ud23,Thank you for your helpful reply. Jamespond, I'm sorry that I'm a newbie in micro-controller and i find the schematic more confusing for me to understand. It would be really helpful to show me Atmega16 Shift Registers or Decade Counters combination project.

ud23, I found your reply more helpful, Because mine is just smiler to those posted. It would be more helpful for me to understand if i could get the code of the same. I have a doubt too, In my project each pin of AtMega16 is dedicated to each rows of the matrix. (ie: for 5 rows five pins are used) But here for 7 rows only 3 pins are connected. Can you please explain this?

Thank you.
 

But here for 7 rows only 3 pins are connected

That is why 74HC595 is used. It has Data, SH_CP, ST_CP pins. Let's say 8 pins of 74HC595 are connected to 8 pins (columns) of 8X8 matrix display. You send out 8 bits of data with 8 clock pulses serially and then give one ST_CP pulse to make this 8 bit data available at the output of 74HC595. If you have more HC595 then you cascade them. If you have three 8X8 matrix displays and 3 HC575 each driving 8 columns of 8x8 matrix displays then you serially load 8*3 = 24 bits of column data using 24 clock pulses on SH_CP and then provide one ST_CP (storage) clock pulse to make the 24 bits of column data appear at the outputs of HC595 at the same time.
 
Thank you for the brief explanation milan.rajik. I understood the working of shift resisters at the columns (ie:74HC595) but i meant of the shift register in rows (ie: 74HC259) connected to the micro-controller. Can you please explain it?. Thank you.
 

74HC259 isn't a shift register, it's an addressable latch, in this case used as simple multiplexer setting one out-of-eight outputs high, selected by the input code 0 to 7.
 
In a 10 x 100 matrix you need to update each LED at least 50 times each second. If you feed the rows parallel from the micro, it will be a good idea to use the shiftregister for the column control. Loading a single active bit in to the 100 bit long shift register, you can step it 1 column at the time and scan the whole matrix that way. The speed of the update will then be 50 x 100 = 5000 columns each second. Each LED column will then be turned ON 200us each time. And this should not be to hard to achieve even for a person new to programming microcontrollers.
To do this you will only need a minimum of 12 pins on the micro. 10 for the 10 rows and 'clk' and 'data' for the shift register. Latch and output enable will be kept active all the time. If you also want to control them you will need 2 pins more.

As said before, the shift register and processor outputs will need a transistor and base resistor, to make a high current output. The row outputs will in addition each need a LED current liimitting resistor.
 
The speed of the update will then be 50 x 100 = 5000 columns each second. Each LED column will then be turned ON 200us each time.
You are suggesting 1:100 column multiplexing. That's rather unsuitable in terms of peak to average LED current. The circuit posted by ud23 is designed for 1:7 (could be also 1:10) row multiplexing instead. Load 100 bits of a row into the shift register, then activate the respective row driver output. Repeat for all rows.
 

FVM and Gorgon, Thanks all for your generous support. Hi FVM, So, You meant that the scanning of the matrix is done by the addressable latch?. But In my 10X100 led board, I need 10rows and addressable latch have only eight output pins. Please leave a reply.

Hi Gorgon, I too prefer Feeding of the data (data of character to be displayed) from the micro controller directly to the rows of matrix because I a newbie (I've just started understanding things) and less complicated. I have the code of my 5X7 led matrix and i did like this: https://electronicswork.blogspot.in/2011/12/5x7-scrolling-message-display.html.
The problem here is I can load only 8bits of data to the matix (please check this code). How can 10 rows possible?

Code:
unsigned char seq[]={

0b01111111,

0b00001001,

0b00001001,

0b00001001,

0b00000110,   

};
 

You can control 10 rows with 4 processor output lines, decoded by 2 74HC238, or any other equivalent logic arrangement.

Don't forget to calculate LED currents and driver current strengths before you start to build any real hardware.
 
Thanks for the reply FVM, what hardware changes do you suggest for the mentioned circuit which will give a bright glow of 15mA current for each led. Also, could you please suggest a C program for the same circuit? So, I can understand the working of addressable latches with Muc.
 

Do you mean 15 mA average current? Then have to chose a LED that is rated for 150 mA peak current with 10% duty cycle. Or 15 mA peak/1.5 mA average. IN both cases the row driver must be able to sink high current, up to 15A respectively 1.5 A.
 

Do you mean 15 mA average current? Then have to chose a LED that is rated for 150 mA peak current with 10% duty cycle. Or 15 mA peak/1.5 mA average. IN both cases the row driver must be able to sink high current, up to 15A respectively 1.5 A.

Thanks again. So, you are concluding that just ULN 2003 is not enough to handle this? What would be a better replacement.?
 

Thanks Fvm, I have a doubt, If I'm scanning the whole 10X100 led sign board column wise (sinking) and feeding the data via rows (sourcing), in a moment maximum of 10 Leds will glow at a time that means if each pins of MUC is sourcing 1.9V with 15mA via 220ohm resister for each Led. It will be 150mA for 10 Leds which can be easily sinked with ULN2003. In this case, is there any use of Mosfet exist?
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top