Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Sterowania multipleksowe wyświetlaczem matrycowym 7x5 LED

misiaa26 03 Lis 2009 20:46 4582 21
  • #1 03 Lis 2009 20:46
    misiaa26
    Poziom 9  

    Witam
    Zmontowałem sobie układ atmega8 oraz 35 LED połączonych w małą matrycę 7x5
    Załadowałem kod który jest napisany w listingu do książki Marcina Wiązania.Są tam dwa kody jeden do wyświetlania po kolei wszystkich znaków ASCII który działa bez problemowo oraz drugi który przewija text lecz on nie działa
    Oto ten kod. Co jest w nim nie tak?

    Code:
    'Program tablicy świetlnej
    
    'Sterowania multipleksowe wyświetlaczem matrycowym 7x5 LED
    'Częstotliwość sterowania kolumn wyświetlacza wynosi ok. 333 Hz
    'czyli częstotliwość odświeżania kolumn wyświetlacza
    'wyniesie ok. 333/5 = ok. 67 Hz

    $regfile = "m8def.dat"                                      'informuje kompilator o pliku
           'dyrektyw mikrokontrolera
    $crystal = 8000000                                          'informuje kompilator
           'o częstotliwości oscylatora
           'taktującego mikrokontroler
    Config Pind.0 = Output                                      'linia PD0 jako wyjściowa
    Config Pind.1 = Output                                      'linia PD1 jako wyjściowa
    Config Pind.2 = Output                                      'linia PD2 jako wyjściowa
    Config Pind.3 = Output                                      'linia PD3 jako wyjściowa
    Config Pind.4 = Output                                      'linia PD4 jako wyjściowa
    Config Pind.5 = Output                                      'linia PD5 jako wyjściowa
    Config Pind.6 = Output                                      'linia PD6 jako wyjściowa
    Config Pinb.0 = Output                                      'linia PB0 jako wyjściowa
    Config Pinb.1 = Output                                      'linia PB1 jako wyjściowa
    Config Pinb.2 = Output                                      'linia PB2 jako wyjściowa




    Config Pinb.3 = Output                                      'linia PB3 jako wyjściowa
    Config Pinb.4 = Output                                      'linia PB4 jako wyjściowa
    Config Timer0 = Timer , Prescale = 256
           'konfiguracja Timer0 jako timer
           'z podziałem preskalera przez
           '256

    Declare Sub Tablica_sw(byval Tekst As String , Byval Szybkosc As Byte)
           'procedura tablicy świetlnej
    Declare Sub Pobr_kol_z_tab                                  'procedura pobiera kod kolumny
           'wyświetlanego znaku z tablic
    Declare Sub Przepisz                                        'procedura przesuwa wartości
           'wyświetlanych kolumn o kolejną
           'pozycję
    Declare Sub Wysl_zn                                         'procedura wysyłająca znaki
           'z tablicy Kol na wyjścia poru D
    On Timer0 Mult_wysw_matr                                    'przerwanie od przepełnienia
           'Timer0, skok do podprogramu
           'przerwania Mult_wysw_matr

    Dim Znak As String * 1                                      'zmienna, do której wpisywany
           'jest znak do wyświetlenia
    Dim Nr_kol As Byte                                          'zmienna określająca numer
           'zapalanej kolumny wyświetlacza
    Dim Kod_zn As Byte                                          'zmienna, do której wpisywany
           'jest kod ASCII wyświetlanego
           'znaku
    Dim Kol_zn As Byte                                          'zmienna, do której wpisywany
           'jest kod wyświetlanej kolumny
           'z określonej tablicy
    Dim Kol(5) As Byte                                          '5-elementowa tablica Kol do
           'której będą wpisywane
           'wyświetlane kody kolumn znaków
    Dim I As Byte                                               'zmienna licznikowa
    Dim J As Byte                                               'zmienna licznikowa

    C1 Alias Portb.0                                            'przypisanie linii PB0 nazwy C1
    C2 Alias Portb.1                                            'przypisanie linii PB1 nazwy C2
    C3 Alias Portb.2                                            'przypisanie linii PB2 nazwy C3
    C4 Alias Portb.3                                            'przypisanie linii PB3 nazwy C4
    C5 Alias Portb.4                                            'przypisanie linii PB4 nazwy C5

    Enable Interrupts                                           'odblokowanie globalnego systemu
           'przerwań
    Enable Timer0                                               'odblokowanie przerwania od
           'przepełnienia Timer0
    Load Timer0 , 94                                            'wpisanie do licznika wartości
           'początkowej 162 gdyż
           '256 - 94 = 162
    Do                                                          'początek nieskończonej pętli
     Tablica_sw "*Bascom AVR*" , 100                            'wywołanie w pętli procedury
           'tablicy świetlnej co 100 ms
    Loop                                                        'koniec pętli nieskończonej
    End                                                         'koniec programu

    Sub Tablica_sw(byval Tekst As String , Byval Szybkosc As Byte)
           'definicja procedury
           'z parametrem Tekst oraz
           'Szybkosc
     Local Dl As Byte                                           'definicja zmiennej lokalnej Dl
     For I = 1 To 5                                             'pętla wykonywana 5 razy
      Kol(i) = 255                                              'wpisanie do wszystkich
           'elementów tablicy Kol wartości
           '255 powodującej wygaszenie
           'kolumn
     Next I                                                     'zwiększenie o 1 zmiennej I
     Dl = Len(tekst)                                            'odczyt ilości znaków w tekście
     For J = 1 To Dl                                            'zewnętrzna pętla wykonywana od
           'wartości J = 1 do liczby znaków
           'w tekście
      Znak = Mid(tekst , J , 1)                                 'przypisanie zmiennej Znak
           'znaku odczytanego z pozycji
           'określonej przez J z parametru
           'Tekst
      Kod_zn = Asc(znak)                                        'zamienia znak zmiennej Znak na
           'odpowiednik kodu ASCII
      For I = 1 To 5                                            'wewnętrzna pętla wykonywana 5
           'razy
       Call Pobr_kol_z_tab                                      'pobranie kodu kolumny do
           'zmiennej Kol(5) z odpowiedniej
           'tablicy stałych
       Waitms Szybkosc                                          'opóźnienie o czas zadany
           'parametrem Szybkosc
       Call Przepisz                                            'przepisanie wartości z tablicy
           'zmiennych Kol
      Next I                                                    'zwiększenie o 1 zmiennej I
      Kol(5) = 255                                              'zapisz do Kol(5) wartość 255, co
           'powoduje odstęp pomiędzy
           'przesuwanymi znakami
      Waitms Szybkosc                                           'opóźnienie o zadany czas
      Call Przepisz                                             'przepisanie wartości z tablicy
           'zmiennych Kol w lewo
     Next J                                                     'zwiększenie wartość zmiennej J
     For I = 1 To 4                                             'pętla wykonywana 4 razy
      Kol(5) = 255                                              'wygaszenie kolumny C5
      Waitms Szybkosc                                           'opóźnienie o zadany czas
      Call Przepisz                                             'przepisanie wartości z tablicy
           'zmiennych Kol w lewo
     Next I                                                     'zwiększenie o 1 zmiennej I
    End Sub                                                     'koniec procedury

    Sub Pobr_kol_z_tab                                          'definicja procedury
           'Pobr_kol_z_tab
     Select Case I                                              'w zależności od wartości
           'i wykonaj:
     Case 1:                                                    'jeśli I ma wartość 1, to
      Kol(5) = Lookup(kod_zn , Kol1)                            'wpisanie do tablicy Kol(5) kodu
           'znaku dla kolumny 1
     Case 2:                                                    'jeśli I ma wartość 2, to
      Kol(5) = Lookup(kod_zn , Kol2)                            'wpisanie do tablicy Kol(5) kodu
           'znaku dla kolumny 2
     Case 3:                                                    'jeśli I ma wartość 3, to
      Kol(5) = Lookup(kod_zn , Kol3)                            'wpisanie do tablicy Kol(5) kodu
           'znaku dla kolumny 3
     Case 4:                                                    'jeśli I ma wartość 4, to
      Kol(5) = Lookup(kod_zn , Kol4)                            'wpisanie do tablicy Kol(5) kodu
           'znaku dla kolumny 4
     Case 5:                                                    'jeśli I ma wartość 5, to
      Kol(5) = Lookup(kod_zn , Kol5)                            'wpisanie do tablicy Kol(5) kodu
           'znaku dla kolumny 5
     End Select                                                 'koniec instrukcji wyboru
    End Sub                                                     'koniec procedury

    Sub Przepisz                                                'definicja procedury Przepisz,
           'przesuwa wartości wpisane do
           'tablicy Kol o jedną pozycję
           'w lewo
     Kol(1) = Kol(2)                                            'przepisanie wartości Kol(2) do
           'Kol(1) - wartość Kol(1) tracona
     Kol(2) = Kol(3)                                            'przepisanie wartości Kol(3) do
           'Kol(2)
     Kol(3) = Kol(4)                                            'przepisanie wartości Kol(4) do
           'Kol(3)
     Kol(4) = Kol(5)                                            'przepisanie wartości Kol(5) do
           'Kol(4)
    End Sub                                                     'koniec procedury

    Sub Wysl_zn                                                 'definicja procedury, która
           'w zależności od Nr_kol wpisuje
           'wartość z odpowiedniej tablicy
           'Kol do portu D
     Select Case Nr_kol                                         'w zależności od wartości Nr_kol
           '- numeru kolumny wykonaj:
     Case 0:                                                    'gdy Nr_kol = 1
      Kol_zn = Kol(nr_kol + 1)                                  'wpisanie do zmiennej Kol_zn
           'wartości pierwszego elementu
           'tablicy Kol (Nr_kol+1)
     Case 1:                                                    'gdy Nr_kol = 2
      Kol_zn = Kol(nr_kol + 1)                                  'wpisanie do zmiennej Kol_zn
           'wartości drugiego elementu
           'tablicy Kol (Nr_kol+1)
     Case 2:                                                    'gdy Nr_kol = 3
      Kol_zn = Kol(nr_kol + 1)                                  'wpisanie do zmiennej Kol_zn
           'wartości trzeciego elementu
           'tablicy Kol (Nr_kol+1)
     Case 3:                                                    'gdy Nr_kol = 4
      Kol_zn = Kol(nr_kol + 1)                                  'wpisanie do zmiennej Kol_zn
           'wartości czwartego elementu
           'tablicy Kol (Nr_kol+1)
     Case 4:                                                    'gdy Nr_kol = 5
      Kol_zn = Kol(nr_kol + 1)                                  'wpisanie do zmiennej Kol_zn
           'wartości piątego elementu
           'tablicy Kol (Nr_kol+1)
     End Select                                                 'koniec instrukcji warunkowej
     Portd = Portd And &B10000000                               'wyzerowanie 7 bitów rejestru
           'PORTD
     Kol_zn = Kol_zn And &B01111111                             'wyzerowanie najstarszego bitu
           'zmiennej Kol_zn zawierającej
           'kolumnę znaku do wyświetlenia
     Portd = Portd Or Kol_zn                                    'zapisanie do rejestru PORTD
           'wartości zmiennej Kol_zn bez
           'zmiany najstarszego bitu
           'rejestru PORTD
    End Sub                                                     'koniec procedury

    Mult_wysw_matr:                                             'podprogramu obsługi przerwania
           'od przepełnienia Timer0
     Load Timer0 , 94                                           'wpisanie do licznika wartości
           'początkowej
     Set C1                                                     'wygaszenie kolumny 1
     Set C2                                                     'wygaszenie kolumny 2
     Set C3                                                     'wygaszenie kolumny 3
     Set C4                                                     'wygaszenie kolumny 4
     Set C5                                                     'wygaszenie kolumny 5
     Call Wysl_zn                                               'wywołanie procedury
           'pobierającej i wysyłającej kod
           'wyświetlanej kolumny z tablic
     Select Case Nr_kol                                         'w zależności od wartości Nr_kol
           'wykonaj:
     Case 0:                                                    'gdy Nr_kol = 0, to
      Reset C1                                                  'włączenie kolumny 1
     Case 1:                                                    'gdy Nr_kol = 1, to
      Reset C2                                                  'włączenie kolumny 2
     Case 2:                                                    'gdy Nr_kol = 2, to
      Reset C3                                                  'włączenie kolumny 3
     Case 3:                                                    'gdy Nr_kol = 3, to
      Reset C4                                                  'włączenie kolumny 4
     Case 4:                                                    'gdy Nr_kol = 4, to
      Reset C5                                                  'włączenie kolumny 5
     End Select                                                 'koniec instrukcji wyboru
     Incr Nr_kol                                                'zwiększenie o jeden wartości
           'Nr_kol
     If Nr_kol = 5 Then                                         'jeśli wartość Nr_kol osiągnie
           '5, to
      Nr_kol = 0                                                'zerowanie wartości Nr_kol
     End If
    Return                                                      'powrót z podprogramu przerwania

    Kol1:                                                       'tablica kodów Kol1 dla
           'pierwszej kolumny wyświetlacza
           '- kolejność kodów odpowiada
           'numerom ASCII
    Data 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 ,
    Data 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 ,
    Data 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 ,
    Data 127 , 127 , 127 , 127 , 127 , 107 , 109 , 29 , 73 , 127 ,
    Data 127 , 127 , 107 , 119 , 127 , 119 , 127 , 125 , 65 , 127 ,
    Data 94 , 61 , 115 , 13 , 97 , 127 , 73 , 79 , 127 , 127 , 119 ,
    Data 107 , 127 , 95 , 89 , 64 , 0 , 65 , 0 , 0 , 0 , 65 , 0 ,
    Data 127 , 125 , 0 , 0 , 0 , 0 , 65 , 0 , 65 , 0 , 78 , 63 , 1 ,
    Data 3 , 1 , 28 , 15 , 60 , 127 , 43 , 127 , 111 , 126 , 127 ,
    Data 125 , 0 , 113 , 113 , 113 , 119 , 103 , 0 , 127 , 125 , 0 ,
    Data 127 , 96 , 96 , 113 , 96 , 119 , 96 , 118 , 111 , 97 , 99 ,
    Data 97 , 110 , 103 , 110 , 127 , 127 , 127 , 119 , 119

    Kol2:                                                       'tablica kodów Kol2 dla drugiej
           'kolumny wyświetlacza
           '- kolejność kodów odpowiada
           'numerom ASCII
    Data 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 ,
    Data 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 ,
    Data 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 ,
    Data 127 , 127 , 127 , 127 , 15 , 0 , 85 , 27 , 54 , 47 , 99 ,
    Data 62 , 119 , 119 , 122 , 119 , 124 , 123 , 58 , 94 , 60 , 62 ,
    Data 107 , 46 , 86 , 56 , 54 , 54 , 73 , 74 , 107 , 107 , 62 ,
    Data 63 , 54 , 59 , 54 , 62 , 62 , 54 , 55 , 62 , 119 , 62 , 126 ,
    Data 119 , 126 , 95 , 111 , 62 , 55 , 62 , 55 , 54 , 63 , 126 ,
    Data 125 , 126 , 107 , 119 , 58 , 0 , 75 , 62 , 95 , 126 , 63 ,
    Data 106 , 118 , 110 , 110 , 106 , 64 , 90 , 119 , 110 , 126 ,
    Data 123 , 62 , 111 , 119 , 110 , 107 , 107 , 119 , 106 , 1 ,
    Data 126 , 125 , 126 , 117 , 122 , 108 , 119 , 127 , 62 , 119 , 99

    Kol3:                                                       'tablica kodów Kol3 dla trzeciej
           'kolumny wyświetlacza
           '- kolejność kodów odpowiada
           'numerom ASCII
    Data 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 ,
    Data 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 ,
    Data 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 ,
    Data 127 , 127 , 127 , 6 , 127 , 107 , 0 , 119 , 42 , 31 , 93 ,
    Data 93 , 65 , 65 , 121 , 119 , 124 , 119 , 54 , 0 , 58 , 46 , 91 ,
    Data 46 , 54 , 55 , 54 , 54 , 73 , 73 , 93 , 107 , 93 , 58 , 48 ,
    Data 59 , 54 , 62 , 62 , 54 , 55 , 54 , 119 , 0 , 62 , 107 , 126 ,
    Data 103 , 119 , 62 , 55 , 58 , 51 , 54 , 0 , 126 , 126 , 113 ,
    Data 119 , 120 , 54 , 62 , 96 , 62 , 63 , 126 , 95 , 106 , 110 ,
    Data 110 , 110 , 106 , 55 , 90 , 111 , 32 , 110 , 117 , 0 , 115 ,
    Data 111 , 110 , 107 , 107 , 111 , 106 , 110 , 126 , 126 , 121 ,
    Data 123 , 122 , 106 , 73 , 0 , 73 , 85 , 85

    Kol4:                                                       'tablica kodów Kol4 dla czwartej
           'kolumny wyświetlacza
           '- kolejność kodów odpowiada
           'numerom ASCII
    Data 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 ,
    Data 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 ,
    Data 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 ,
    Data 127 , 127 , 127 , 127 , 15 , 0 , 85 , 108 , 93 , 127 , 62 ,
    Data 99 , 119 , 119 , 127 , 119 , 127 , 111 , 46 , 126 , 54 , 22 ,
    Data 0 , 46 , 54 , 47 , 54 , 53 , 127 , 127 , 62 , 107 , 107 , 55 ,
    Data 62 , 59 , 54 , 62 , 93 , 54 , 55 , 54 , 119 , 62 , 1 , 93 ,
    Data 126 , 95 , 123 , 62 , 55 , 61 , 53 , 54 , 63 , 126 , 125 , 126 ,
    Data 107 , 119 , 46 , 62 , 75 , 0 , 95 , 126 , 111 , 106 , 110 ,
    Data 110 , 118 , 106 , 63 , 90 , 111 , 126 , 33 , 110 , 126 , 111 ,
    Data 111 , 110 , 107 , 115 , 111 , 106 , 126 , 125 , 125 , 126 ,
    Data 117 , 122 , 102 , 62 , 127 , 119 , 99 , 119

    Kol5:                                                       'tablica kodów Kol5 dla piątej
           'kolumny wyświetlacza
           '- kolejność kodów odpowiada
           'numerom ASCII
    Data 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 ,
    Data 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 ,
    Data 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 ,
    Data 127 , 127 , 127 , 127 , 127 , 107 , 91 , 92 , 122 , 127 , 127 ,
    Data 127 , 107 , 119 , 127 , 119 , 127 , 95 , 65 , 127 , 78 , 57 ,
    Data 123 , 49 , 121 , 31 , 73 , 67 , 127 , 127 , 127 , 107 , 119 ,
    Data 79 , 65 , 64 , 73 , 93 , 99 , 62 , 63 , 80 , 0 , 127 , 63 , 62 ,
    Data 126 , 0 , 0 , 65 , 79 , 66 , 78 , 57 , 63 , 1 , 3 , 1 , 28 , 15 ,
    Data 30 , 127 , 43 , 127 , 111 , 126 , 127 , 112 , 113 , 125 , 0 ,
    Data 115 , 95 , 65 , 112 , 127 , 127 , 127 , 127 , 112 , 112 , 113 ,
    Data 119 , 96 , 119 , 125 , 125 , 96 , 99 , 97 , 110 , 97 , 110 ,
    Data 127 , 127 , 127 , 119 , 119

    0 21
  • #2 03 Lis 2009 22:29
    Wojtek75
    Poziom 23  

    Mam nadzieję, że doczytałeś że jeden kod działa z wykorzystaniem rejestru przesuwnego a w tym powyżej matryca sterowana jest bezpośrednio z portów uC (schemat str. 189)

    0
  • #3 03 Lis 2009 22:40
    misiaa26
    Poziom 9  

    Dokładnie układ wykonany w/g schematu 8.16 ze str 189 bez rejestrów przesuwnych.Ledy podłączone bezpośrednio do nóżek Atmegi

    0
  • #4 13 Lis 2009 14:52
    Espablo
    Poziom 13  

    Też miałem z tym problemy i znalazłem rozwiązanie w tej linijce:

    Code:
    Sub Tablica_sw(byval Tekst As String , Byval Szybkosc As Byte)

    Zadeklaruj zmienne z tego "suba" na początku programu (tekst, szybkosc, D1) zrób odwołanie jak do normalnego podprogramu. U mnie podziałało.

    0
  • #5 13 Lis 2009 23:20
    misiaa26
    Poziom 9  

    Witam
    Mam prośbę do kolegi Espablo czy mógłbyś mi wkleić gotowy fragment kodu który musiałbym dopisać ponieważ jestem bardzo początkującym programistą i na podstawie takich właśnie układów i modyfikacji ich najszybciej się uczę.
    Z góry dziękuję i pozdrawiam

    0
  • #6 14 Lis 2009 20:29
    Espablo
    Poziom 13  

    Zaczynam tak:

    Code:

    Declare Sub Tablica_sw
    Dim Tekst As String
    Dim Szybkosc As Byte        'procedura tablicy świetlnej
    Dim Dl As Byte
    szybkosc = 100               'tutaj regulujesz preśdkość przesuwania napisu

    W Pętli głównej piszesz
    Code:
    Do
    
    Tekst = "Tutaj wpisujesz jakis tekst"
    Call Tablica_sw
    Loop

    Code:

    Sub Tablica_sw
    For I = 1 To 5                                             'pętla wykonywana 5 razy
      Kol(i) = 255                                              'wpisanie do wszystkich
           'elementów tablicy Kol wartości
           '255 powodującej wygaszenie
           'kolumn
     Next I                                                     'zwiększenie o 1 zmiennej I
     Dl = Len(tekst)                                            'odczyt ilości znaków w tekście
     For J = 1 To Dl                                            'zewnętrzna pętla wykonywana od
           'wartości J = 1 do liczby znaków
           'w tekście
      Znak = Mid(tekst , J , 1)                                 'przypisanie zmiennej Znak
           'znaku odczytanego z pozycji
           'określonej przez J z parametru
           'Tekst


    itd...


    Na koniec jeszcze pytanko sterujesz tym bezpośrednio z portu czy za pomocą rejestru przesuwnego 74LS164

    0
  • #7 14 Lis 2009 22:42
    misiaa26
    Poziom 9  

    Dzięki
    Bezpośrednio z portu steruje.
    Pozdrawiam

    0
  • #9 15 Lis 2009 13:56
    misiaa26
    Poziom 9  

    Nic nie pomogło.
    Po zmianach tych zmiennych wyskoczyło mi tyle błędów że nie mogę tego skompilować.
    Bez pełnego kodu to jestem bez silny.
    Pozdrawiam

    0
  • Pomocny post
    #10 15 Lis 2009 16:15
    Espablo
    Poziom 13  

    a może jeszcze to:

    Code:
    Dim Tekst As String*40

    zakłada, że twój tekst niema więcej liter niż 40 (ztąd ta liczba)

    Dodano po 13 [minuty]:

    zmienne które miałeś zadeklarowane w programie miały pozostać bez zmian a te odemniem tylko dopisane

    0
  • #11 15 Lis 2009 16:24
    misiaa26
    Poziom 9  

    No teraz wszystko działa
    Serdeczne dzięki
    Pozdrawiam

    0
  • #12 18 Kwi 2010 16:50
    milxxxx
    Poziom 9  

    U mnie nie działa jak nalezy diody wariują co może być tego przyczyną ??!?!

    0
  • #14 18 Kwi 2010 21:13
    milxxxx
    Poziom 9  

    No jakoś to po robiłem całkowicie się zamieszałem teraz widać jak leci literka ale w troche dziwnie ponieważ wszystkie diody się palą a literka leci z wygasnietymi diodami kurcze why !?!!?

    Proszę poprawić pisownię! Nic nie wiadomo z tego napływu wyrazów!
    Robak

    0
  • #16 19 Kwi 2010 14:12
    milxxxx
    Poziom 9  

    Ja użyłem do tego płytki testowej cos jak
    Sterowania multipleksowe wyświetlaczem matrycowym 7x5 LED

    I cały kod z książki Marcina Wiązania

    0
  • #17 19 Kwi 2010 15:19
    Espablo
    Poziom 13  

    Tak, tylko że ja nadal nie widzę schematu. Widok płytki mi nic nie mówi. Pokaż schemat. Coś mi się wydaje, że wyświetlacz masz inny niż ten co powinien być podaj jeszcze symbol schematu (ma wspólną anodę, cz katodę?)

    0
  • #19 19 Kwi 2010 22:37
    milxxxx
    Poziom 9  

    Moze mozesz mi powiedziec jak według w/w kod i schematu który podałem mam podłączyć do portów najlepiej to jesli mozesz to tak łopatologicznie :D ...

    jak podłączę na odwrót to działa tak

    cała matryca się swieci a tekst płynie jako diody wygaszone

    Jak podłącze "niby" dobrze (ja tak sądze) to tekst leci jak zapalone (i tak powinno być ) ale to nie teks bo wszystko się sypie kurde .....:(

    0
  • #20 20 Kwi 2010 23:25
    Espablo
    Poziom 13  

    Miałem też taki efekt. Posprawdzaj połączenia przy diodach bo rozumiem, że wyświetlacz sam robiłeś. Ja miałem zwarte 2 ścieżki i dostawało się na kolumny jakieś "lewe" napięcie.

    0
  • #21 21 Kwi 2010 06:10
    milxxxx
    Poziom 9  

    a jak to najlepiej sprawdzic ??

    0
  • #22 22 Kwi 2010 09:29
    Espablo
    Poziom 13  

    Sam musisz znaleźć jakiś złoty środek na ten problem. Metoda prób i błędów jest chyba najlepsza. Ja bym zaczął od podania +5V na jedną kolumnę i minus kolejno na wiersze, ale jeśli to jest zwarcie to trzeba będzie "zaświecić" 2 sąsiednie kolumny lub 2 sąsiednie wiersze. Najpierw sprawdź każdy wiersz i kolumnę pojedyńczo to upewnisz się, że diody masz dobrze wlutowane (polaryzacja) potem 2 wiersz i 2 kolumny itd.

    0