logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Atmega8 sterowanie wyświetlaczem 7-seg. multipleksowanym

Stigu 28 Sty 2010 10:22 1658 4
REKLAMA
  • #1 7604502
    Stigu
    Poziom 10  
    Witam, posiadam atmege8 i wyświetlacz jak miewam multiplexowany ponieważ posiada dwa zestawy segmentów Datasheet i teraz nie wiem za bardzo jak go podłączyć i jak przeskakiwać między wyświetlaczami, prosiłbym o pomoc ponieważ jestem początkujący.

    Pozdrawiam
    Stigu
  • REKLAMA
  • #2 7604513
    _Robak_
    Poziom 33  
    To jest wyswietlacz ze wspolna anoda, wiec za pomoca tranzystorow np. BC807 musisz doprowadzic zasilanie do pinow 10 lub 5. Potem musisz wlaczacz masy odpowiednich pinow ktore sie maja zaswiecic np za pomoca darlingtonow uln2008.
  • REKLAMA
  • #3 7604784
    OlekM
    Poziom 17  
    A jeśli chodzi o podejście od strony programowej, to można by to rozwiązać następująco (w pseudokodzie):

    
    zmiana_cyfry {
      wyłącz_obie_anody;
      prawa = not prawa; // z każdym wywołaniem tej funkcji negujemy pewną zmienną
      jeżeli(prawa) {
        zapal_segmenty_dla_prawej_cyfry;
        włącz_prawą_anodę;
      } w przeciwnym przypadku {
        zapal_segmenty_dla_lewej_cyfry;
        włącz_lewą_anodę;
      }
    }
    


    Procedurę zrealizowaną według takiego schematu należy wywoływać stosunkowo często (osobiście preferuję setki kHz, wówczas odbiór jest "komfortowy"), i regularnie. Regularność jest dość istotna, ponieważ jej brak sprawi, że jedna z cyfr może palić się nieco dłużej - sprawiając wrażenie jaśniejszej.

    Z wymienionych powyżej powodów, warto wywoływać ją jako procedurę obsługi przerwania jednego z timerów. Przy takim podejściu, proszę pamiętać by zmienne globalne - którymi będzie następowała komunikacja programu głównego z procedurą obsługi przerwania - były zdeklarowane ze słowem kluczowym volatile.

    Istotne jest by w takiej procedurze najpierw wygasić wyświetlacz a dopiero następnie zmieniać stany segmentów - dzięki temu na wyświetlaczu nie będzie "przesłuchów" między cyframi.
  • REKLAMA
  • #4 7604847
    Stigu
    Poziom 10  
    Dziękuję za odpowiedź, czyli aby móc wybrać cyfrę to ustawiam logiczne 1 dla którejś z anod?

    anody są na pinie 10 i 5

    czyli jeśli ustawie stan logicznej 1 dla pinu 10 i 0 dla pinu 5 będzie mi się świeci jedna cyfra, a jeżeli logiczne 0 dla pinu 10 i 1 dla pinu 6 będzie się świecić druga cyfra?

    czy dobrze zrozumiałem?

    Pozdrawiam
    Stigu
  • #5 7604950
    OlekM
    Poziom 17  
    Może ujmę to następująco:
    Jeśli podasz na jedną z anod dodatnie napięcie zasilające, to związana z nią pozycja wyświetlacza będzie mogła się zapalić. Zatem wybierając to, którą z anod zasilimy - wybieramy która połowa wyświetlacza będzie w danym momencie działać.

    Jeśli zastosujesz zasugerowany wcześniej tranzystor (PNP, zatem emiter do plusa zasilania, kolektor na wybraną anodę, a baza przez rezystor do mikrokontrolera), to włączenie anody będzie polegało na zapisaniu "0" logicznego na nóżkę mikrokontrolera podłączoną do tranzystora.

    Co do sterowania katod, sugerowałbym zastosować np. ULN2803 (podobny do sugerowanego przez użytkownika _Robak_), który posiada 8 kanałów - dzięki czemu możliwe będzie także sterowanie kropką.

    Aby zapalić wybrany segment, należy związaną z nim katodę ściągnąć do masy. W przypadku zastosowania wspomnianych wyżej układów - będzie to oznaczało wystawienie "1" logicznej na nóżkę mikrokontrolera podłączoną do wejścia tego układu.
REKLAMA