8x8 Scrolling LED display (Simple example)


Results 1 to 40 of 69

Threaded View

  1. #15
    Join Date
    Mar 2009
    Posts
    48


    Did you find this post helpful? Yes | No

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

    wel as for the reading of IR code i used a build in command from protonIde picbasic compiler, the code is only for testing puposes and not looking good as i yet didn't finished the implementing my idea, and here it is

    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 8
    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
    
    
        '________________________________________________________________
        '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 kraj As Word
        Dim x As Byte
        Dim j As Byte
        Dim cnt As Byte
    
        '________________________________________________________________
        'poetene vrijednosti
        '________________________________________________________________
    
        EEpromAdress = 255
        cnt=0
        k=109
        j=0
        '________________________________________________________________
        'Inicijalizacija
        '________________________________________________________________
        High PORTD.0
        DelayMS 1300
        Low PORTD.0
        DelayMS 1300
        '________________________________________________________________
        'pregledaj eeprom ako ima sta idi na main ako ne idi na pripremu
        '________________________________________________________________
    
    provjera:
       
            test.LowByte = ERead EEpromAdress 'iscitaj zapis iz eeproma sa adrese 255
                    If test.LowByte = $FF Then 'ako je FF pici dalje
                        GoSub eepromprogON
                        DelayMS 1000
                    EndIf
            test.LowByte = ERead 255
                    If test.LowByte <> $FF Then 
                        GoSub odaberporuku
                        DelayMS 1000
                    EndIf
        '*******************************************************************
        Declare RC5In_Pin PORTC.7                    'infrared sensor pin
        '********************************************************************
    main:	
    Clear
    Low PORTD.0
    j=0 
    leddata[0-13] = $00 
        For i = 0 To 4
        k=115
    	 leddata [i+14]=ERead k+i	'B 
    	 leddata [19]=$00
         leddata [i+20]=ERead k+i+6	'B
          leddata [25]=$00
         leddata [i+26]=ERead k+i+12	'B 
          leddata [31]=$00
         leddata [i+32]=ERead k+i+18	'B   
    	Next
    
    
           For scroll = 0 To 37 ' 
              
    
             For scan = 0 To 50
    	                                 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 150
                    PORTB=0     	
    		    Next
             Next
             For brojac = 0 To 36
            leddata[brojac]=leddata[brojac+1]
            Next
            Next 
    GoTo main
    
    eepromprogON:            
        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
    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
    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 ]
          kraj.LowByte = ERead EEpromAdress
    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 ]
          potvrdi.LowByte = ERead EEpromAdress
            
                
          For x=0 To 5
            Toggle PORTD.0
            DelayMS 100
          x=x+1
          Next 
          x=0
          EEpromAdress=0
    Return
    
    odaberporuku:	
    High PORTD.0
    While ir_ulaz.LowByte<>kraj.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=sledeceslovo.LowByte Then
    
        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=115 Then
          cnt=0
          EndIf
          cnt=cnt+5
    '      j=j+1
    ElseIf ir_ulaz.LowByte=prethodnoslovo.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=0 Then
          cnt=115
          EndIf
    '      j=j+1 
    
    'zapamti slovo u eeprom   na lokaciji 115 pa nadalje!
    
    ElseIf ir_ulaz.LowByte=potvrdi.LowByte Then
     k=k+6
     For i = 0 To 4 
    	 leddata [i]=ERead i+cnt	'  
    	Next
     For i = 0 To 4 
     
    	 EWrite (i+k),[leddata [i]]	' 
         DelayMS 20 
     Next
     Low PORTD.0
     DelayMS 200
     High PORTD.0
    
    
    ' j=j+1
    'elseIf ir_ulaz.LowByte=kraj.lowbyte and j<>0 Then GoTo main
    EndIf
    
    Wend
    'goto main
    Return
    End
    as for the schematic i just used cd4017 datasheet section for cascading columns, the clock is portc.0 pin and the reset is portc.1 pin, as you can see i am working on a protoboard so i dont have a full schematic. This fun project is in development and probably wont be finished for long so i cant ofer a PCB design!!! thx again for help from everyone spacially wellyboot
    Last edited by xxxxxx; - 11th February 2011 at 07:12.

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