8x8 Scrolling LED display (Simple example)


Closed Thread
Results 1 to 40 of 69

Hybrid View

  1. #1
    Join Date
    Mar 2009
    Posts
    48


    Did you find this post helpful? Yes | No

    Default Re: 8x8 Scrolling LED display (Simple example)

    yes that is a great idea, going to google for samples of 4049!thx

  2. #2
    Join Date
    Mar 2009
    Posts
    48


    Did you find this post helpful? Yes | No

    Default Re: 8x8 Scrolling LED display (Simple example)

    here is the final result, the message is Baby on Board on my native language (bosnian)



    the code is made in ProtonIde compiler and is similar to PBP hope someone will use it

    Code:
    		 '****************************************************************
    
    ' SIMPLE 15X8 LED MATRIX SCROLLING EXAMPLE
    ' 16F877A External 8MHz Xtal Osc
    ' LED Matrix columns are conected to PORTC pin rc0 via ULN2004AN and CD4017.
    ' RC1 reset for 4017
    ' LED Matrix rows conected to PORTB via 100 ohm resistors 
    ' RB0 - top row
    ' Author: Muamer Halilovic
    ' www.mtskola.com
    ' today
    '***************************************************************************************
    Device 16F877A
    Xtal 12
    TRISB = %00000000
    TRISC = %10000000
    TRISD = %00000000
    PORTB=0
    PORTC=0
    PORTD=0
    All_Digital = True
      
    	EWrite 0,[%00000100,%00000110,%01111111,%00000110,%00000100]	'Up Arrow
    	EWrite 5,[%00010000,%00110000,%01111111,%00110000,%00010000]	'Dn Arrow
    	EWrite 10,[%01111110,%00010001,%00010001,%00010001,%01111110]	'A
    	EWrite 15,[%01111111,%01001001,%01001001,%01001001,%00110110]	'B
    	EWrite 20,[%00111110,%01000001,%01000001,%01000001,%00100010]	'C
    	EWrite 25,[%01111111,%01000001,%01000001,%00100010,%00011100]	'D
    	EWrite 30,[%01111111,%01001001,%01001001,%01001001,%01000001]	'E
    	EWrite 35,[%01111111,%00001001,%00001001,%00001001,%00000001]	'F
    	EWrite 40,[%00111110,%01000001,%01001001,%01001001,%01111010]	'G
    	EWrite 45,[%01111111,%00001000,%00001000,%00001000,%01111111]	'H
    	EWrite 50,[%00000000,%01000001,%01111111,%01000001,%00000000]	'I
    	EWrite 55,[%00100000,%01000000,%01000001,%00111111,%00000001]	'J
    	EWrite 60,[%01111111,%00001000,%00010100,%00100010,%01000001]	'K
    	EWrite 65,[%01111111,%01000000,%01000000,%01000000,%01000000]	'L
    	EWrite 70,[%01111111,%00000010,%00000110,%00000010,%01111111]	'M
    	EWrite 75,[%01111111,%00000100,%00001000,%00010000,%01111111]	'N
    	EWrite 80,[%00111110,%01000001,%01000001,%01000001,%00111110]	'O
    	EWrite 85,[%01111111,%00001001,%00001001,%00001001,%00000110]	'P
    	EWrite 90,[%01111111,%00001001,%00011001,%00101001,%01000110]	'R
    	EWrite 95,[%01000110,%01001001,%01001001,%01001001,%00110001]	'S
    	EWrite 100,[%00000001,%00000001,%01111111,%00000001,%00000001]	'T
    	EWrite 105,[%00111111,%01000000,%01000000,%01000000,%00111111]	'U
    	EWrite 110,[%00011111,%00100000,%01000000,%00100000,%00011111]	'V
    	EWrite 115,[$00,$00,$00,$00,$00]	'blank space
    	EWrite 185,[$00,$00,$00,$00,$00]
    	EWrite 190,[$00,$00,$00,$00,$00]
    	EWrite 195,[$00,$00,$00,$00,$00]
    	EWrite 200,[$00,$00,$00,$00,$00]
    	EWrite 205,[$00,$00,$00,$00,$00]
    	EWrite 210,[$00,$00,$00,$00,$00]
    	EWrite 215,[$00,$00,$00,$00,$00]
    	EWrite 220,[$00,$00,$00,$00,$00]
    	EWrite 225,[$00,$00,$00,$00,$00]
    	EWrite 230,[$00,$00,$00,$00,$00]
    	EWrite 235,[$00,$00,$00,$00,$00]
    	EWrite 240,[$00,$00,$00,$00,$00]
    	EWrite 245,[$00,$00,$00,$00,$00]
    	
    
    
        '________________________________________________________________
        'Deklaracija promjenjivih
        '________________________________________________________________
       	Dim kolona As Byte
    	Dim brojac As Byte
    	Dim k As Byte
    	Dim scan  As Byte
    	Dim scroll As Byte
    	leddata var Byte[100]
        Dim ir_ulaz As Word ' WORD variabla za zaprimanje podataka
        Dim EEpromAdress As Byte 'eprom adresa za upis 
        Dim test As Word 'uporedjivach 
        Dim upisi As ir_ulaz.LowByte
        Dim i As Byte
        Dim sledeceslovo As Word
        Dim prethodnoslovo As Word
        Dim potvrdi As Word
        Dim play As Word
        Dim x As Byte
        Dim j As Byte
        Dim cnt As Byte
        Dim a As Byte
        Dim b As Byte
        Dim c As Byte
        Dim d As Byte
    
        '________________________________________________________________
        'poetene vrijednosti
        '________________________________________________________________
    
        EEpromAdress = 255
        cnt=0
        k=114
    
        '________________________________________________________________
        'Inicijalizacija
        '________________________________________________________________
        High PORTD.0
        DelayMS 1300
        Low PORTD.0
        DelayMS 1300
        '________________________________________________________________
        'pregledaj eeprom ako ima sta idi na main ako ne idi na pripremu
        '________________________________________________________________
          '*******************************************************************
        Declare RC5In_Pin PORTC.7                    'infrared sensor pin
        '********************************************************************
    
    provjera:
       
            test.LowByte = ERead 255 'iscitaj zapis iz eeproma sa adrese 255
                    If test.LowByte = $FF Then 'ako je FF 
                        GoSub eepromprogON 'idi u programiraj komande
                        DelayMS 500
                    EndIf    
            test.LowByte = ERead 120 ' iscitaj zapis iz eeproma sa adrese 120 (pocetak poruke)
                    If test.LowByte = $FF Then ' ako je 00 
                        GoSub odaberporuku     ' idi na odaberi poruku
                        DelayMS 500
                    EndIf 
                   
    main:
        
    Clear ' ocisti sve varijable
    Low PORTD.0  ' usli smo u mod za prikaz poruke
    a=14
    k=120
    j=0
    leddata[0-13] = $00             ' varijabla ledadta od 0 do 13 je 00
    For b = 0 To 11                 ' moguci broj slova u poruci
        For i = 0 To 4      
            c=i+a                   'povecaj a=14-19; a=20-24; a=26-30 itd...
            d=i+j+k                   'povecaj j=120-124; a=126-130; a=131-135 itd...
                leddata [c]= ERead d	'filuj ledadtu od 14 do max broja slova za prikaz iz eeproma pocevsi od 120 pa nadalje
                DelayUS 20  
        Next
        leddata [a+5]=ERead 119   'upisi prazanu kolonu izmedju slova	
          a=a+6   
          j=j+6   
     Next
           For scroll = 0 To c      ' skrolaj poruku c zadnji leddata
              
             For scan = 0 To 35
                      PORTC.1 = 1   'reseting 4017
                      PORTC.1 =0 
    			For kolona = 0 To 14  'broj kolona
    				PORTC.0 = 1       'clock 4017
                    PORTC.0 =0
                    PORTB = leddata[kolona]
    				DelayUS 250
                    PORTB=0    	
    		    Next
    
             Next
             For brojac = 0 To (c-1)
            leddata[brojac]=leddata[brojac+1]' pomjeri za jedan
            Next
    
            Next
                    If PORTD.1=1 Then 
                    GoSub odaberporuku 
        	 	End If
    GoTo main
    End
    
    eepromprogON: 'podprogram za odabir komadi za upravljanje             
        High PORTD.0  
        
                Repeat
                    ir_ulaz.LowByte= RC5In '  Primanje signala sa TSOP1738
                Until upisi<> 255' Trazi-cekaj dok ne naleti valjano zaglavlje signala
                       
          EWrite EEpromAdress , [ ir_ulaz.LowByte ]
          sledeceslovo.LowByte = ERead EEpromAdress ' pridruzi varijabli sledece slovo komandu i upisi u eprom na zadnju lokaciju
          For i = 0 To 4 
    	 leddata [i]=ERead i	'  prikazi strelicu
    	Next
             For scan = 0 To 185
             PORTC.1 = 1  'reseting 4017
             PORTC.1 =0	
    			For kolona = 0 To 4
    				PORTC.0 = 1 'clock 4017
                    PORTC.0 =0
                    PORTB = leddata[kolona]
    				DelayUS 500
                    PORTB=0     	
    		    Next
             Next
    Low PORTD.0
    DelayMS 100
    High PORTD.0
    DelayMS 100
    Low PORTD.0
    DelayMS 100
    High PORTD.0
                Repeat
                    ir_ulaz.LowByte= RC5In '  Primanje signala sa TSOP1738
                Until upisi<> 255' Trazi-cekaj dok ne naleti valjano zaglavlje signala
                EEpromAdress=EEpromAdress - 1      
          EWrite EEpromAdress , [ ir_ulaz.LowByte ]
          prethodnoslovo.LowByte = ERead EEpromAdress ' pridruzi varijabli sledece slovo komandu i upisi u eprom na zadnju lokaciju
          For i = 0 To 4 
    	 leddata [i]=ERead i+5	'  prikazi strelicu
    	Next
             For scan = 0 To 185
             PORTC.1 = 1  'reseting 4017
             PORTC.1 =0	
    			For kolona = 0 To 4
    				PORTC.0 = 1 'clock 4017
                    PORTC.0 =0
                    PORTB = leddata[kolona]
    				DelayUS 500
                    PORTB=0     	
    		    Next
             Next
    Low PORTD.0
    DelayMS 100
    High PORTD.0
    DelayMS 100
    Low PORTD.0
    DelayMS 100
    High PORTD.0
                Repeat
                    ir_ulaz.LowByte= RC5In '  Primanje signala sa TSOP1738
                Until upisi<> 255' Trazi-cekaj dok ne naleti valjano zaglavlje signala
                       EEpromAdress=EEpromAdress - 1
                       EWrite EEpromAdress , [ ir_ulaz.LowByte ]
          play.LowByte = ERead EEpromAdress  ' pridruzi varijabli play komandu i upisi u eprom na predzadnju lokaciju
          leddata[0]=$FE  'play simbol
    	leddata[1]=$7C
    	leddata[2]=$38
    	leddata[3]=$10
    	leddata[4]=$00
     
         For scan = 0 To 185
             PORTC.1 = 1  'reseting 4017
             PORTC.1 =0	
    			For kolona = 0 To 4
    				PORTC.0 = 1 'clock 4017
                    PORTC.0 =0
                    PORTB = leddata[kolona]
    				DelayUS 500
                    PORTB=0     	
    		    Next
             Next     
    Low PORTD.0
    DelayMS 100
    High PORTD.0
    DelayMS 100
    Low PORTD.0
    DelayMS 100
    High PORTD.0
    
     Repeat
                    ir_ulaz.LowByte= RC5In '  Primanje signala sa TSOP1738
                Until upisi<> 255' Trazi-cekaj dok ne naleti valjano zaglavlje signala
                       EEpromAdress=EEpromAdress -1
                       EWrite EEpromAdress , [ ir_ulaz.LowByte ] ' pridruzi varijabli potvrfi komandu i upisi u eprom na predpredzadnju  :D lokaciju
          potvrdi.LowByte = ERead EEpromAdress
            
          leddata[0]=$00  
    	leddata[1]=$00
    	leddata[2]=$08
    	leddata[3]=$10
    	leddata[4]=$20
    	leddata[5]=$10
    	leddata[6]=$08
    	leddata[7]=$04
    	leddata[8]=$02
    	leddata[9]=$01 
         For scan = 0 To 185
             PORTC.1 = 1  'reseting 4017
             PORTC.1 =0	
    			For kolona = 0 To 9
    				PORTC.0 = 1 'clock 4017
                    PORTC.0 =0
                    PORTB = leddata[kolona]
    				DelayUS 500
                    PORTB=0     	
    		    Next
             Next     
          For x=0 To 5
            Toggle PORTD.0
            DelayMS 100
          x=x+1
          Next 
          x=0
          EEpromAdress=0
    Return 'vrati se u if petlju na pocetku
    
    
    
    odaberporuku:	' podrpogram za odabir poruke za prikaz
    High PORTD.0
    sledeceslovo.LowByte = ERead 255
    prethodnoslovo.LowByte = ERead 254
    play.LowByte = ERead 253
    potvrdi.LowByte = ERead 252
    cnt=0
    k=114
    Low PORTD.1
    Repeat
           ir_ulaz.LowByte= RC5In '  Primanje signala sa TSOP1738
        Until upisi<> 255' Trazi-cekaj dok ne naleti valjano zaglavlje signala 
    While ir_ulaz.LowByte<>play.LowByte
        Repeat
           ir_ulaz.LowByte= RC5In '  Primanje signala sa TSOP1738
        Until upisi<> 255' Trazi-cekaj dok ne naleti valjano zaglavlje signala 
    If ir_ulaz.LowByte=prethodnoslovo.LowByte Then
              If cnt = 0 Then
                cnt=5
             EndIf
       cnt=cnt-5
        For i = 0 To 4 
    	 leddata [i]=ERead i+cnt	'  
    	Next
             For scan = 0 To 185
             PORTC.1 = 1  'reseting 4017
             PORTC.1 =0	
    			For kolona = 0 To 4
    				PORTC.0 = 1 'clock 4017
                    PORTC.0 =0
                    PORTB = leddata[kolona]
    				DelayUS 500
                    PORTB=0     	
    		    Next
             Next
            
    ElseIf ir_ulaz.LowByte=sledeceslovo.LowByte Then
    
       cnt=cnt+5
    
        For i = 0 To 4 
    	 leddata [i]=ERead i+cnt	'  
    	Next
             For scan = 0 To 185
             PORTC.1 = 1  'reseting 4017
             PORTC.1 =0	
    			For kolona = 0 To 4
    				PORTC.0 = 1 'clock 4017
                    PORTC.0 =0
                    PORTB = leddata[kolona]
    				DelayUS 500
                    PORTB=0     	
    		    Next
             Next
                       If cnt = 119 Then
                cnt=0
             EndIf
    ElseIf ir_ulaz.LowByte=potvrdi.LowByte Then 'upisi odabran0o slovo u narednu slobodnu eeprom lokaciju
     k=k+6'krecemo od 120
     For i = 0 To 4 
    	 leddata [i]=ERead i+cnt
         DelayUS 10	'  
    	Next
     
     For i = 0 To 4 
     
    	 EWrite (i+k),[leddata [i]]	' 
         DelayMS 20 
     Next
    
    For scroll =0 To 1
     For i = 0 To 4 
    	 leddata [i]=ERead i+cnt	'prikazi odabrano slovo  
    	Next
    	leddata[5]=$00
    	leddata[6]=$00
    	leddata[7]=$08
    	leddata[8]=$10
    	leddata[9]=$20
    	leddata[10]=$10
    	leddata[11]=$08
    	leddata[12]=$04
    	leddata[13]=$02
    	leddata[14]=$01
             For scan = 0 To 185
             PORTC.1 = 1  'reseting 4017
             PORTC.1 =0	
    			For kolona = 0 To 14
    				PORTC.0 = 1 'clock 4017
                    PORTC.0 =0
                    PORTB = leddata[kolona]
    				DelayUS 500
                    PORTB=0     	
    		    Next
             Next
    Next
    EndIf
     
    Wend
    Low PORTD.0
    Return ' vrati se odakle si i dosao

Similar Threads

  1. Conway's Game Of Life
    By wellyboot in forum mel PIC BASIC Pro
    Replies: 45
    Last Post: - 28th May 2020, 06:14
  2. MY FIRST scrolling 8X8 LED
    By earltyso in forum mel PIC BASIC Pro
    Replies: 7
    Last Post: - 15th August 2008, 16:23
  3. 5x7 LED Matrix Scrolling Display
    By roycarlson in forum mel PIC BASIC Pro
    Replies: 18
    Last Post: - 4th August 2008, 23:50
  4. Replies: 2
    Last Post: - 14th July 2008, 22:11
  5. LCD will not start
    By btaylor in forum mel PIC BASIC Pro
    Replies: 49
    Last Post: - 24th May 2007, 02:30

Members who have read this thread : 1

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts