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.

DIY Moving Message Display

Status
Not open for further replies.

Sadaf

Newbie level 5
Newbie level 5
Joined
Feb 7, 2003
Messages
9
Helped
10
Reputation
20
Reaction score
10
Trophy points
1,283
Location
Lahore, Pakistan
Activity points
824
moving message display circuit

Hi all
I want to have moving message display program for atmel AT89C251. May some one help me?
 

moving message display project

Embedded control software always depends on hardware design. It is hopeless to any advice if you don't mention clearly what you wanted.
 
moving message software

Epegic said:
Embedded control software always depends on hardware design. It is hopeless to any advice if you don't mention clearly what you wanted.
Thanks for reply.... suppose I have a text string like "Well Come We have all stuf you want". I want to get it scrool over and over... moving letters on a 7x9 led matrix. I saw a unit which was doing this. In that unit it was possible that you change the moving message with the help of a infra red remote control. It means that moving message has built in characterset.. from which letters can be selected to make a message. It contains 19 led matrix displays (7 x 9). May it help to advice me ATMEL based Hardware design and its software? Thanks again.
Saif
 
microcontroller based moving message display

It doesn't help too much. The first thing to do is design driving hardware for LED matrix. Software is used to pump display data and control how data are displayed. Simple hardware need complicate software and vice vera.
 
circuit diagram moving message display

hai,

u go and search maxim ic for led matrix display.
 
message display software

Dear saif
I think that I understand what you need. The idea os the design of the moving message as follows

The shape of the characters are saved in EPROM (for example) and the display matrix are arranged in row and columns each column can be enabled individually.

Counters are used to address the contents of the EPROM in synchrounous with the columns enabled sequence so the shape of the character can be drwan on the Matrix.

to show the moving effect, enable column n then n-1 then n-2 and display the output of the EPROM content on the appropreiat column, repeat this action for example 25 --> 50 time/second.

repeat the last setp by shifting the columns address i.e enable n+1 then n then n-1 and so on.

repeat the last step till the end of your dislay matrix, you get the moving effect.

regards
 
diy moving message display

Dear Al Farouk
Thank you verymuch for your reply... You are very right ... you got it.... now I am posting pcb design and parts layout of a portion of actual unit as suggested Mr. Epegic in his pm. May it help to advice me more on this topic.

Thanks
Saif
 
diy moving message display

Dear Saif

My advice to you is
you should first reverse engineer the board you have to get sch first and then study the idea behind the sch to be able to understand the correct layout and the track width in each section.

this also will help you to writ down the program that will be run by the microcontroller.
 
cd4514 led scroll circuits

This link may be very useful:
https://attiny.com/dotmatrix.htm
It uses an Atmel AVR ATtiny2313 for controlling eight 5x7 LED dotmatrix displays.
rescroll.gif

test_scroller.gif


[edit June 2009: Changed link to new website and use ATtiny2313 instead of the now obsolete AT90S2313)
 
e03b016.pdf

Normally these units have a serial i/p for computer programming with a fairly simple protocol. Are you sure that the one you are looking at does not have this facilty?, if not there are plenty that do.
 

    V

    Points: 2
    Helpful Answer Positive Rating
cd4514 led scroll circuit

GrandAlf said:
Normally these units have a serial i/p for computer programming with a fairly simple protocol. Are you sure that the one you are looking at does not have this facilty?, if not there are plenty that do.
The one that I linked to have RS232 interface for connetion to PC:
ATtiny.com | Using the UART/USART for receiving data
uartrx.gif


But I doesnt seems like the one posted by Saif have any connector except a Powersupply plug.
 
Last edited:
  • Like
Reactions: emina

    emina

    Points: 2
    Helpful Answer Positive Rating
moving message display using pic

Here is another link for a Pic scrolling project with hex files, and many
other projects.
**broken link removed**

Tornado
 
  • Like
Reactions: RFID_H

    RFID_H

    Points: 2
    Helpful Answer Positive Rating
scrolling message display circuit diagram

Saif,
Is this your own design?
PCB layout is not so good for understand the circuit, schematic diagram will be much better.

Some advices:
I don't have detail specification of 164 and 7445, 164 have to provide 5~20mA, depends on LED used. 7445 need 5 times the driving current.

Refresh rate should be >40Hz(very flicker) to 70Hz(very stable), that means switching each row in (1/40/7) 3.5ms to (1/70/7) 2ms, setup a timer to involve the scan() function.

A prelimary algorithm for your reference
Assuming Port1 connected to 7445 and port 2 to 164,
4 bytes (25 columns) used for display data for each row.
Code:
dispBuffer[row][col/8];
#define Sclock  P^0;
#define Sdata  P^1;

void scan(void) {
for (row=0; row<7 row++) {
  P1 = 0x00;  // turn off display
  for (i=0; i<4; i++)   // send 4 bytes of display data
    outOneByte(dispBuffer[row][i]);  // send data to 164
  P1 = 0x01<<row;  // enable one single row 
} }
  
void outOneByte(dispData) {
  Sclock = 0;  // serial clock low
  for (i=0; i<8; i++) {  //send 8 bits
    if ((dispData & 0x01)==1) Sdata = 1;
    else Sdata =0;
    Sclock =1;
    dispData >>=1;
} }

The above code fragments are by no means accurate, by only give a rough idea, you have to rewrite to fit your situation.

I will search some reference designs for you later.
 
Last edited by a moderator:
  • Like
Reactions: chirantha_ic

    V

    Points: 2
    Helpful Answer Positive Rating

    chirantha_ic

    Points: 2
    Helpful Answer Positive Rating
moving message program

The circuit supplied by ME also need a storage media (EPROM, EEPROM, or else) to be read at poer up and also facilitate the field updating.
 
led moving message display circuit

Al Farouk said:
The circuit supplied by ME also need a storage media (EPROM, EEPROM, or else) to be read at poer up and also facilitate the field updating.
You can download the program with the ISP connector, then you can program the text inide the Flash memory as a part of the program, then you don't need any eeprom. If there is not enough space in the AVR, then you can just use a bigger AVR with more Flash memory.
 

source code moving message display

HI .. The circuit supply by ME is good one . it use internal eeprom to store upto 128 char for moving message. I'm currently work on 16*32 led moving bar. it use sanyo LC7932 16 bit shift open drain ic.
i use timer interupt for shift every column and i use internal eeprom to store letter the logic will like this

read column(i)
send shift data to ic controll column
display column(i)
increase i

this will display static data so i need to chage column data to make it move in a time that i set .. I try this and it work.. but my source code is writen in bascom and it use with LC7932 Driver + AT90S2313 .. if anyone interest i could post it here..
 

    V

    Points: 2
    Helpful Answer Positive Rating
moving message display

tobb said:
HI .. The circuit supply by ME is good one . it use internal eeprom to store upto 128 char for moving message. I'm currently work on 16*32 led moving bar. it use sanyo LC7932 16 bit shift open drain ic.
i use timer interupt for shift every column and i use internal eeprom to store letter the logic will like this

read column(i)
send shift data to ic controll column
display column(i)
increase i

this will display static data so i need to chage column data to make it move in a time that i set .. I try this and it work.. but my source code is writen in bascom and it use with LC7932 Driver + AT90S2313 .. if anyone interest i could post it here..

I just looked at the site I linked to and I can't find the sourcecode or hex file, have you found the source code or hex at the site?
Just upload the bascom code, it's a small file, I'm sure it will be usefull to someone, eventhough I don't use Basic.
 
microcontroller moving message display

Thanks all...
I am grateful all of you... It helped me very much to understand the program logic for moving message display. If readymade program code is available anywere than please tell. I am also trying to write one... If I succeeded ... I will place one on this forum for others to use it in their project.

Thanks again

Saif
 
  • Like
Reactions: RFID_H

    RFID_H

    Points: 2
    Helpful Answer Positive Rating
scrolling message display circuit

Hi,


Let me place a question about hardware.

Do you have already tried to switch ON all the leds (or 80% of them)?

NeuralC
 

74138 cascade

For this Question
Let me place a question about hardware.

Do you have already tried to switch ON all the leds (or 80% of them)?

Yes.. If from my hardware. I have try enable all 512 leds and it all work find. the only ploblem is if you scan leds to slow it could be easily see it flickers. The led maxtrix use scan methode so the power supply can be smaller and for me i use only one 7805 to feed my micro and 512 leds

And this is a simple code that move image display to right and also with my system picture

Here is Bascom code,
Code:
Dim Outser1 As Integer
Dim Outser2 As Integer
Dim Outprt As Byte
Dim Outrow As Integer

Dim Outserlong As Long
Dim Tmplong As Long

Dim Sr_cnt As Byte
Dim Sr_cnt_zero As Byte
Dim Sr_cnt_first As Byte
Dim Sr_cnt_second As Byte
Dim Page As Byte
Dim En_flage As Byte
Dim I As Byte , J As Byte , K As Byte
Dim I_zero As Byte
Dim I_invert As Byte
Dim Shifttime As Integer
Dim Shiften As Byte


$eeprom
Data &B0000000000000000%
Data &B0000000000000000%
Data &B0101010011100000%
Data &B0101010100010000%
Data &B0101010111110000%
Data &B0101010100000000%
Data &B0010100011100000%
Data &B0000000000000000%
Data &B0000000000000000%
Data &B0111001000000100%
Data &B0100100001100001%
Data &B0100101010010100%
Data &B0100101010010100%
Data &B0111001001110100%
Data &B0000000000010000%
Data &B0000000001100000%
Data &B0000000000001010%
Data &B0110001100000101%
Data &B1001010010000010%
Data &B1000100010110001%
Data &B1000000011001000%
Data &B0100000100001000%
Data &B0010001100010000%
Data &B0001010010100000%
Data &B0000100001000000%
Data &B1000000010001010%
Data &B1100110010001010%
Data &B1001001010001010%
Data &B1001001010001010%
Data &B1000111010000000%
Data &B0000000000001010%
Data &B0000000000000000%
Config Portb = Output
Config Timer0 = Timer , Prescale = 8
Enable Timer0
Enable Interrupts
On Ovf0 Tim0_isr
Do
Loop
Tim0_isr:
Disable Interrupts
Incr Shifttime
If Shifttime = 150 Then
Incr Shiften
If Shiften = 32 Then Shiften = 0
Shifttime = 0
End If
    Sr_cnt_zero = Sr_cnt - 1
    Sr_cnt_first = Sr_cnt_zero * 2
    Sr_cnt_second = Sr_cnt_zero + 16
    Sr_cnt_second = Sr_cnt_second * 2

    Readeeprom Outser1 , Sr_cnt_first
    Readeeprom Outser2 , Sr_cnt_second

    For I = 0 To 31
    J = I - 16
    If I < 16 Then Outserlong.i = Outser1.i
    If I >= 16 Then Outserlong.i = Outser2.j
    Next I

    Tmplong = Outserlong
    If Shiften > 0 Then
    Shift Outserlong , Left , Shiften

       For I = 0 To Shiften
         K = Shiften - I
         J = 32 - K
         Outserlong.i = Tmplong.j
       Next I
    End If
    For I = 0 To 31
        J = I - 16
        If I < 16 Then Outser1.i = Outserlong.i
        If I >= 16 Then Outser2.j = Outserlong.i
    Next I
    Set Portb.5
        Outrow = &B0000000000000000
        Outrow.sr_cnt_zero = 1

        For I = 1 To 16
            I_zero = I - 1
            I_invert = 15 - I_zero
            Reset Portb.4
            Portb.2 = Outser1.i_invert
            Portb.1 = Outser2.i_invert
            Portb.0 = Outrow.i_invert
            Reset Portb.3
            Set Portb.3
        Next I
        Set Portb.4
        Reset Portb.5
        If Sr_cnt => 16 Then Sr_cnt = 0
        Incr Sr_cnt

Disable Interrupts
Return
 
Last edited by a moderator:

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top