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

Jak podłączyć wyświetlacz siedmiosegmentowy do mikroprocesora?

*zaba* 20 Gru 2008 18:25 3792 22
REKLAMA
  • #1 5882158
    *zaba*
    Poziom 13  
    Posty: 139
    Ocena: 5
    Witam ma kilka pytań odnośnie wyświetlaczy siedmiosegmentowy
    gdy podłączyłem go do mikroprocesora to zajeło mi to cały port D
    1) czy można go podłączyć jakoś w inny sposób??

    a jak mam wyświetlacz taki co można dużo liczb pokazać to są tam kanały ale jak np wyświetli na 1 wyświetlaczu "dwójkę " i podłączy sie drugi kanał to na 2 wyświetlaczu też będzie "dwójka" jak to podłączyć aby wyświetlacze pokazywały np. liczbe 12??

    Jak podłączyć wyświetlacz siedmiosegmentowy do mikroprocesora?
    Jak podłączyć wyświetlacz siedmiosegmentowy do mikroprocesora?

    Jak to podłaczyc
    Jak podłączyć wyświetlacz siedmiosegmentowy do mikroprocesora?
    Jak podłączyć wyświetlacz siedmiosegmentowy do mikroprocesora?

    jeszcze jedno pytanko czy ktoś wie jak podłączyć ten wyświetlacz ??
    Jak podłączyć wyświetlacz siedmiosegmentowy do mikroprocesora?
  • REKLAMA
  • #2 5882184
    Lutek49
    Poziom 36  
    Posty: 2100
    Pomógł: 440
    Ocena: 407
    Poczytaj o wyświetlaczach sekwencyjnych.
  • REKLAMA
  • #3 5882344
    klops_mops
    Poziom 17  
    Posty: 304
    Pomógł: 8
    Ocena: 60
    Poczytaj o multipleksowaniu.
  • #5 5883399
    dawid512
    Poziom 32  
    Posty: 1439
    Pomógł: 229
    Ocena: 6
    Jeden port zostaje zajęty przez segmenty zaś żeby wykorzystać multipleksowanie to musisz zastosować klucze tranzystorowe żeby zapalać/gasić dany wyświetlacz w danej chwili.
  • #6 5883748
    Seba319
    Poziom 24  
    Posty: 504
    Pomógł: 79
    Ocena: 53
    Jeśli chcesz wyświetlać dużo znaków i użyć mało wyprowadzeń uC, to możesz wykorzystać rejestry przesuwne itp. Jednak program wtedy będzie bardziej skomplikowany. Jako że jesteś początkujący potraktuj to na razie jako jedną z odpowiedzi na pytanie
    Cytat:
    ...czy można go podłączyć jakoś w inny sposób?

    Tak jak koledzy pisali musisz poczytać o multipleksowaniu. Działa to mniej więcej tak że nie wyświetlasz dwóch znaków jednocześnie tylko na przemian raz jeden a raz drugi. Zmienia się to tak szybko że nasze oko nie jest w stanie tego zauważyć i wydaje się nam że oba są wyświetlane jednocześnie. Realizuje sie to poprzez podawanie zasilania (poprzez tranzystor kluczujący) tylko na jedno pole w danej chwili, a wyprowadzenia wszystkich segmentów łączy się z sobą i podpina do jednego portu. Porady praktyczne jakich mogę Ci udzielić to abyś gasił całe pole przed przełączeniem zasilania na inne, wtedy unikniesz efektu cienia poprzednio wyświetlanej cyfry na kolejnym polu.
  • REKLAMA
  • #7 5884050
    _StinG_
    Poziom 14  
    Posty: 112
    Pomógł: 9
    Ocena: 5
    Poszukaj jeszcze informacji o transkoderach, które zamieniają kod BCD na kod wyświetlacza 7 segmentowego. w rezultacie zamiast używać Całego portu ograniczasz się do 4 pinów kosztem dorzucenia 1 układu scalonego, do tego jeszcze multipleksacja i jest miodzio :) (choć nie próbowałem jeszcze transkoderem multipleksować...) powinno się dać zrobić.

    P.S. Poprawcie mnie jak źle mówię.
  • #8 5884142
    ZbeeGin
    Poziom 39  
    Posty: 4315
    Pomógł: 602
    Ocena: 452
    Jest jeszcze jedna możliwość: Rejestr przesuwający! Wtedy do sterowania użyjesz 3 może 4 linii. Np. kaskada kilku - w zależności ile bitów potrzebujesz - układów CD4094.
  • #9 5884460
    Seba319
    Poziom 24  
    Posty: 504
    Pomógł: 79
    Ocena: 53
    ZbeeGin napisał:
    Jest jeszcze jedna możliwość: Rejestr przesuwający!


    Pisałem juz o tej możliwości, jednak bez głębszego rozwinięcia. Więc kolego nic nowego nie dopisałeś, pytanie czy dobrze przeczytałeś cały temat zanim napisałeś odpowiedź? Wracając do sedna sprawy to, ogólnie można wykorzystać kombinacje różnych układów cyfrowych np. rejestr przesuwny + dekoder + multiplekser. Możesz samemu coś wymyślić jeśli potrzebujesz. Pobierz sobie katalog układów CMOS. poczytaj trochę i pomyśl.
  • #11 5884522
    Seba319
    Poziom 24  
    Posty: 504
    Pomógł: 79
    Ocena: 53
    Balu napisał:
    Dokładanie czegokolwiek dla 14 segmentów to nieporozumienie ;)


    Zgadzam się z tobą co do 14 segmentów zwłaszcza jeśli projekt jest prostu ;) Jednak na trzecim zdjęciu jest 8 pól odczytowych więc robią sie juz schodki i trochę to zajmuje. Jedna z najistotniejszych umiejętności to potrafić wybrać odpowiednio proste rozwiązanie do poziomu projektu jaki się wykonuje.
  • #13 5884564
    Seba319
    Poziom 24  
    Posty: 504
    Pomógł: 79
    Ocena: 53
    Jeśli układ ma 4 porty, a do innych celów potrzebne są nam 3 to już trochę kiepsko się robi. Jednak tak jak pisałem, pytanie jakie trzeba sobie zadać to jak bardzo skomplikowany jest projekt i ile wyprowadzeń nam jeszcze potrzeba. Jeśli mamy 2 wolne porty to bez sensu jest dokupywanie układów i komplikowanie sobie sprawy. Jednak gdy jest to konieczne to trzeba wtedy korzystać z alternatywnych rozwiązań. Kolega *zaba* pytał jak jeszcze można to podłączyć więc otrzymał w odpowiedzi wiele możliwości.
  • #14 5897345
    *zaba*
    Poziom 13  
    Posty: 139
    Ocena: 5
    Dzięki wam i tym forum wiele się uczę napisałem juz program do multipleksowania ale co teraz zrobić jeśli chciałbym aby liczba w moim przypadku 12 świeciła się przez sekundę i zmieniła się na 11 ?

             $crystal = 1000000                                 'definiujemy z jakim taktowaniem będzie pracował
    
    Config Portb = Output                                       'port b  jako wejścia
           Portb = &B00000000                                   'wszędzie stan spoczynkowy-0
    Config Portd = Output                                       'pprt d jako wyjścia
           Portd = &B11111111
    
    
    
      Do
      Portb.2 = 0
      Portd.5 = 1
      Portd.2 = 1
    
    Portb.1 = 1
    Portd.0 = 0
    Portd.5 = 0
    Portd.3 = 0
    Portd.1 = 0
    Portd.4 = 0
    
    Waitus 1000
    Portb.1 = 0
    Portd.0 = 1
    Portd.5 = 1
    Portd.3 = 1
    Portd.1 = 1
    Portd.4 = 1
    
    Portb.2 = 1
    Portd.5 = 0
    Portd.2 = 0
    
    Waitus 1000
    
      Loop
          End

    Wielkie dzięki
  • Pomocny post
    #15 5897364
    dawid512
    Poziom 32  
    Posty: 1439
    Pomógł: 229
    Ocena: 6
    Zrób sobie tablice w której będziesz miał kod dla każdej cyfry a potem tylko wybieraj odpowiednie wpisując do portu.
  • REKLAMA
  • #16 5897412
    *zaba*
    Poziom 13  
    Posty: 139
    Ocena: 5
    okey dzięki spróbuje mam nadzieje że wyjdzie.
  • #17 5897423
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    *zaba* napisał:
    ...napisałem juz program do multipleksowania

    to co napisałeś ciężko nazwać programem do multipleksowania.

    poczytaj sobie tu i tam:

    http://wkretak.pl/readarticle.php?article_id=13

    w necie ale także używając SZUKAJ na elektrodzie znajdziesz setki linków n/t obsługi wyświetlaczy w takim trybie

    albo książkę Marcina Wiązani o Bascomie i dokładnie postaraj się najpierw zaznajomić z multipleksowaniem wyświetlaczy - bo to są takie podstawy podstaw - jak chcesz coś więcej robić niż tylko migać jedną diodą LED
  • #18 5897985
    *zaba*
    Poziom 13  
    Posty: 139
    Ocena: 5
    To to ja juz czytałem

    Dodano po 30 [minuty]:

    jak mogą wyglądać takie tablice bo ja znalazłem w helpie bascom'u taki wzór


    Dim a(10) As Byte 'definiujemy tablicę a z dziesięcioma elementami
    Dim c As Integer

    For C = 1 To 10
    a(c) = c 'przypisanie wartość
    Print a(c) 'drukujemy
    Next
    a(c + 1) = a

    (c) Zbigniew Gibek, 2002-2005 (c) MCS Electronics, 1999-2005
  • #19 5898384
    Balu
    Poziom 38  
    Posty: 4397
    Pomógł: 323
    Ocena: 48
    No jeśli czytałeś i nic nie wyniosłeś to chyba niestety do szkoły na czytanie ze zrozumieniem. Sorry dude!

    Generalnie masz przerwanie od timera, w nim co przerwanie gasisz WSZYSTKIE (lub poprzedni) wyświetlacz, wystawiasz dane na segmenty i zapalasz NASTĘPNY segment.

    Segment zapalasz na podstawie zmiennej NR_segmentu (wskazującej na konkretny wyświetlacz) i na podstawie zmiennej tablica_danych która ma 4 komórki

    No i go:
    idx=tablica_danych(nr_segmentu)
    segmenty = Lookup(idx ,gdzie_sa_zakodowane_segm)

    gdzie_sa_zakodowane_segmenty:
    Data 0x02, 0x08....itd 10 cyfr zakodowanych.

    I jak to się mawia... that's all folks!

    Łukasz.

    P.S. Na prawdę prościej się nie da już.
  • #20 5898759
    dawid512
    Poziom 32  
    Posty: 1439
    Pomógł: 229
    Ocena: 6
    Tylko mnie zastanawia czy jest sens stosować standardowe rozwiązanie czyli klucze tranzystorowe + przerwanie od timera dla dwóch wyświetlaczy? Owszem jeżeli masz większą ilość to tylko takie rozwiązanie jest dobre ale przy mniejszej?
  • #21 5900627
    asembler
    Poziom 32  
    Posty: 2099
    Pomógł: 123
    Ocena: 11
    Mnie się wydaje że ma sens. Po pierwsze łatwa możliwość sterowania jasnoscią oraz przyszłościowa rozbudowa sysytemu o kolejne wyswietlacze
  • #22 5900951
    Balu
    Poziom 38  
    Posty: 4397
    Pomógł: 323
    Ocena: 48
    Taaaa przyszłościowa rozbudowa... jak się robi PCB zawsze się zostawia przyszłościowe miejsce na więcej elementów (patrz producenci płyt głównych) Jakby ktoś chciał zawsze może jeszcze jedno ide albo pci dolutować i usprawnić swoją płytę... LOL!
  • #23 5933776
    asembler
    Poziom 32  
    Posty: 2099
    Pomógł: 123
    Ocena: 11
    Istenieje w elekronice też pozycja na pająka.

Podsumowanie tematu

✨ Dyskusja dotyczy podłączenia wyświetlaczy siedmiosegmentowych do mikroprocesora, zwłaszcza problemu zajmowania całego portu przez segmenty oraz wyświetlania wielocyfrowych liczb na wielu wyświetlaczach. Zasugerowano stosowanie multipleksowania, czyli sekwencyjnego włączania poszczególnych wyświetlaczy za pomocą kluczy tranzystorowych, co pozwala na użycie jednego portu do segmentów i osobnych linii do sterowania poszczególnych wyświetlaczy. Wskazano również na możliwość użycia rejestrów przesuwnych (np. CD4094) oraz transkoderów BCD na kod siedmiosegmentowy, co zmniejsza liczbę potrzebnych linii sterujących kosztem dodatkowych układów scalonych i bardziej złożonego oprogramowania. Podkreślono, że multipleksowanie wymaga odpowiedniego oprogramowania, najlepiej opartego na przerwaniach od timera, które na przemian wyświetlają cyfry na kolejnych wyświetlaczach, tworząc wrażenie jednoczesnego wyświetlania. Zaproponowano tworzenie tablic kodów segmentów dla cyfr, co ułatwia sterowanie. Poruszono też kwestię sensowności stosowania multipleksowania i kluczy tranzystorowych przy małej liczbie wyświetlaczy, wskazując na korzyści w sterowaniu jasnością i rozbudowie systemu. Jeden z wyświetlaczy pokazanych na zdjęciach to wyświetlacz VFD. Wskazano na potrzebę zapoznania się z literaturą i materiałami online dotyczącymi multipleksowania wyświetlaczy siedmiosegmentowych.
Wygenerowane przez model językowy.
REKLAMA