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

uC + 74HC595 + 7 segmentowe wyświetlacze

28 Gru 2014 22:41 1248 5
  • Poziom 7  
    Witam,

    Jestem w trakcie tworzenia projektu i doszedłem do etapu połączenia mikrokontrolera z czterema wyświetlaczami 7 segmentowymi LED posiadającymi 1 znak. Ze względu na małą ilość pozostałych wyjść µC postanowiłem zastosować multipleksowanie, wybór padł na użycie rejestru przesuwanego (konkretnie 74HC595) i o ile w miarę rozumiem logikę pojedynczego rejestru, to nie do końca wiem jak działa kilka rejestrów połączonych ze sobą. I tutaj moje pierwsze pytanie, czy bity "znajdujące się" w pamięci pierwszego rejestru są następnie przesuwane do drugiego, czy każdym z rejestrów steruje się osobno ?

    Widziałem kilka projektów dotyczących sytuacji takiej jak w temacie i w większości do każdego z wyświetlaczy podpięty był jeden rejestr przesuwany, połączony z sąsiadującym, jednak czy nie wystarczyłyby dwa ? Pierwszy standardowo podawałby napięcie do poszczególnych diod wyświetlacza, a drugi odpowiadałby za wybór jednego z 4 wyświetlaczy ? Wtedy rejestry musiałby działać niezależnie (jednocześnie pierwszy podawałby wysokie napięcia i drugi), co odnosi się do mojego pierwszego pytania.

    Ewentualnie czy jest jakiś inny sposób na rozwiązania zagadnienia połączenia wspomnianych 4 wyświetlaczy ? Np. jakiś układ, który posiadałby jedynie wejście zegarowe i danych (pomijam tutaj kwestie zasilania) oraz 4 wyjścia podając napięcie na określony wyświetlacz? Brzmi jak 4-bitowy rejestr przesuwany, jednak wtedy wracam do początkowych pytań :wink:

    Będę bardzo wdzięczy za pomoc :wink:
  • PCBway
  • PCBway
  • Moderator Mikrokontrolery Projektowanie
    dasej napisał:
    Zrezygnuj z tego daj MAX7219 jeden załatwi za Ciebie wszystko.

    ... za ponad 15-30zł vs 0.60zł za jeden 74HC595D + groszowe dodatkowe elementy i nieco większe PCB.

    Session napisał:
    I tutaj moje pierwsze pytanie, czy bity "znajdujące się" w pamięci pierwszego rejestru są następnie przesuwane do drugiego, czy każdym z rejestrów steruje się osobno ?

    To zależy jak je podłączysz do mikrokontrolera.
    Możesz je łączyć szeregowo np. 3 sztuki. Wtedy najpierw wysyłasz szeregowo wszystkie 24 bity (3x8 bitów), a następnie na każdy układ 595 podajesz jednocześnie sygnał do przepisania wszystkich bitów na raz na wszystkie 24 wyjścia. Proste?

    Przykładowe rozwiązania LED z rejestrami przesuwnymi:
    http://mikrokontrolery.blogspot.com/2011/03/DIY-Devastator-Bombowy-zegarek-ATmega8.html
    http://mikrokontrolery.blogspot.com/2011/03/D...nikow-rakietowych-ATmega8-by-Templarious.html

    a tutaj 595 z LCD:
    http://mikrokontrolery.blogspot.com/2011/03/lcd-hd44780-na-3-pinach-74hc595.html
    http://mikrokontrolery.blogspot.com/2011/03/D...ezpieczenie-komputera-PC-ATmega8-Arduino.html

    a to efekt pierwszego linku:


    Link
  • Poziom 7  
    Ok dondu dzięki za odpowiedź, czyli łącząc wyjście pierwszego rejestru Q7' (QH') z wejściem w drugim rejestrze DS (SER), i przesyłając sekwencję 00000001 11111100, zakładając odpowiednie połączenie wyprowadzeń z wyświetlaczami będę mógł zaświecić cyfrę 0 na jednym z wyświetlaczy ? Super czyli dwa 595 spokojnie wystarczą.

    Teraz pojawiła się następna trudność z wyświetlaczami. Ze względu na ograniczenie prądu w µC (40mA) chciałbym zasilić wyświetlacze przez tranzystor bezpośrednio ze źródła (5V), które też zasila µC. Pierwsze pytanie czy jeśli zdecyduję się na wyświetlacze ze wspólną anodą to wystarczy mi jeden rezystor (0,5W) połączony z zasilaniem, zamiast 8 (po 1 do każdej diody wyświetlacza, potrzebowałbym wtedy 32 rezystory do samych diod ? 8-O ) ?

    W przypadku wspomnianego wyświetlacza ze wspólną anodą, żeby zrobić przełącznik z tranzystora sterowany przez µC (a konkretniej jeden z pinów wyjściowych rejestru), powinienem wybrać tranzystor PNP ? Dla lepszego zobrazowania zrobiłem schemat:
    uC + 74HC595 + 7 segmentowe wyświetlacze

    Czy będzie to działało prawidłowo ? Podłączyłem 8 diod (3.1V 20mA) równolegle, łącząc ich anody razem z zasilaniem, a katody każdej z diod połączyłem z pinem µC, podając na określonym pinie stan niski, diody świeciły całkiem normalnie. Podałem stan niski na wszystkie wyjścia jednocześnie i układ działał całkiem dobrze. Niestety jedyne tranzystory jakie posiadam to NPN. Podłączyłem jego bazę przez rezystor do VCC, kolektor do anod diod, emiter raz podłączałem do VCC, a raz do GND, układ działał zgodnie z założeniem, jednak po kilku sekundach przy połączeniu emitera do GND (diody nie świeciły) tranzystor zagrzał się bardzo mocno, na szczęście zdążyłem wszystko rozpiąć :P .

    Uproszczając całość, jak połączyć wyświetlacze, tak aby wykorzystać jak najmniej elementów, a żeby wszystko działało zgodnie z założeniem ? Czy lepiej wybrać wyświetlacze ze wspólną katodą ? :wink:

    EDIT:
    Analizując projekt PCB z tego projektu, który podałeś widzę, że zastosowane jest właśnie rozwiązanie z tranzystorem PNP BC557, ja myślałem o 2N3906, które są trochę droższe jednak mają Ic (prąd kolektora) większy od BC557, i tutaj moje pytanie czy lepiej, żebym kupił 2N3906, czy ten na schemacie spokojnie wystarcza ? Jego Ic = 100mA, czy to trochę nie za mało jeśli miałyby świecić się wszystkie 8 diod ? Jednak na projekcie użyte są 3 wyświetlacze dwu znakowe i podłączonych jest do nich 6 tranzystorów, nie wiem jaki dokładnie jest to typ wyświetlaczy, ale z tego co rozumiem, 1 tranzystor do 1 znaku ?
  • Poziom 15  
    Mimo wszystko powinno być 32 rezystory.
    Po jednym na cyfrę też da radę, ale efekt będzie taki, że "8" będzie świeciła blado w porównaniu z "1". Bo w pierwszym przypadku rezystor zasila 7 segmentów a w drugim już tylko 2. Jeśli nie będzie to dla Ciebie problemem to możesz tak zrobić.

    BC557 mógłby wytrzymać ale ja i tak bym zastosował kosztujący tyle samo, mający ten sam pinout i 500mA Ic BC327