Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 18 kwi 2024, o 04:29


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 17 ] 
Autor Wiadomość
PostNapisane: 28 maja 2017, o 10:13 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 maja 2017
Posty: 143
Pomógł: 0

Pytanie początkującego,

Multipleksowanie stosuje się gdy chcemy by na kilku wyświetlaczach pokazywała się liczba
od cyfry 10 wzwyż ,bo 10 wymaga zastosowania dwóch bliźniaczych wyświetlaczy 7 segmentowych, i wymaga wyłączania na przemian bardzo szybko jednego i załączania drugiego , dzięki temu nasze oko widzi 1 i 0 w jednej chwili czyli złudzenie cyfry 10.

Obrazek


natomiast kluczowe moje pytanie to gdy będę chciał zastosować tylko jeden wyświetlacz i pokazać na nim cyfrę 1-9 to nie trzeba wtedy stosować multipleksowania , i zamiast tranzystora kluczującego po prostu podłączyć katodą do masy , anodę do plusa i tyle i sterować zmianą poprze porty procka nie sterując żadnymi anodami, katodami wyświetlacz poprzez tranzystor?


Obrazek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 maja 2017, o 10:41 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 cze 2014
Posty: 820
Lokalizacja: Tam gdzie PYRY są
Pomógł: 64

Wszystko zależy ile chcesz poświęcić na to pinow. Potrzebujesz zawsze tyle pinow ile segmentów plus jeden dla wspólnej anody lub katody. Czyli 7 +1 plus ewentualnie dot.
Tranzystory zależnie od poboru prądu i wydajnosci pradowej portu procka.

Ogólnie przy jednej cyfrze się nie robi multipleksu. W najlepszym wypadku oszczedzisz 2 piny


Autor postu otrzymał pochwałę

_________________
IntegraMETEO
WordCLOCK
IntegraTOUCH



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 maja 2017, o 10:51 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 maja 2017
Posty: 143
Pomógł: 0

Czemu 2 a nie 1 pin na tranzystor i wyświetlacz ?
skalarro napisał(a):

Ogólnie przy jednej cyfrze się nie robi multipleksu. W najlepszym wypadku oszczędzisz 2 piny




tak jak przypuszczałem bo i poco jeden wyświetlacz miałby migać ale fajnie gdyby więcej osób mnie utwierdziło w tym .



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 maja 2017, o 11:55 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

Ja bym podłączył 7 seg. + 1 PWM. :)
Żeby można było rozjaśniać lub ściemniać cyfrę programowo a nie peerkiem. :)
Pozdrawiam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 maja 2017, o 12:01 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 maja 2017
Posty: 143
Pomógł: 0

Daro69 napisał(a):
Ja bym podłączył 7 seg. + 1 PWM. :)
Żeby można było rozjaśniać lub ściemniać cyfrę programowo a nie peerkiem. :)
Pozdrawiam.

Już nie wybiegajmy tak dalego do przodu zależało mi na uzyskaniu odpowiedzi na pytanie początkującego podstawy .

Czy trzeba stosować przełączanie(multipleks) przy jednym wyświetlaczem 7-seg ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 maja 2017, o 12:58 
Offline
Moderator zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 18 lip 2012
Posty: 3187
Lokalizacja: Kraków - obok FAB5 ATMEL'a
Pomógł: 89

Juz ci odpowiedziano, nie trzeba.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 maja 2017, o 13:04 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2014
Posty: 1020
Lokalizacja: Trójmiasto
Pomógł: 188

Słowo "trzeba" jest tu raczej nie na miejscu. Przecież jak masz kilka wyświetlaczy nikt nie każe stosować multipleksowania. Możesz, jak dysponujesz wystarczającą ilością pinów, podłączyć każdy wyświetlacz do osobnego portu (oczywiście przez rezystory ograniczające prąd segmentu), a wspólną anodę (lub katodę) podłączyć bezpośrednio do zasilania (bądź masy).
Wszystko zależy od indywidualnej sytuacji. Możesz zmultipleksować pojedynczy wyświetlacz 7 segmentowy ale jedyną korzyść jaką tu widzę to, obniżenie poboru prądu przez wyświetlacz (bo w danym momencie świeci zawsze max tylko jeden segment) no i oszczędność miejsca i elementów, bo takie rozwiązanie pozwala użyć tylko jednego rezystora ograniczającego prąd poszczególnych segmentów umieszczonego na wspólnym wyprowadzeniu. Oszczędności w pinach nie uzyskasz żadnej ponieważ masz tylko jedną nogę wspólna (dla ścisłości masz 2 nogi ale połączone galwanicznie) na cały wyświetlacz więc nie da się pogrupować segmentów.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 maja 2017, o 13:18 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 maja 2017
Posty: 143
Pomógł: 0

xentis napisał(a):
Możesz zmultipleksować pojedynczy wyświetlacz 7 segmentowy ale jedyną korzyść jaką tu widzę to, obniżenie poboru prądu przez wyświetlacz (bo w danym momencie świeci zawsze tylko jeden segment) no i oszczędność miejsca bo takie rozwiązanie pozwala użyć tylko jednego rezystora ograniczającego prąd poszczególnych segmentów umieszczonego na wspólnym wyprowadzeniu


nie za bardzo rozumiem takiego sformułowania możesz kolego to bardziej rozwinąć przepraszam ale jestem początkujący.
Czy mógłby mi kolega wytłumaczyć?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 maja 2017, o 13:30 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2014
Posty: 1020
Lokalizacja: Trójmiasto
Pomógł: 188

Normalnie multipleksujesz wyświetlacze czyli przełączasz sekwencyjnie 4 wyświetlacze: pierwszy zapalony reszta zgaszona, potem drugi zapalony reszta zgaszona itd aż do czwartego i od początku.
Przy multipleksowaniu jednego wyświetlacza możesz sekwencyjnie przełączać załączanie poszczególnych segmentów (czyli dla 7 segmentów i kropki masz 8 kroków) W każdym kroku możliwe jest zasilenie jednego z segmentów, oczywiście jeśli na danym segmencie ma coś się wyświetlić to segment jest zapalny jak nie to segment pozostaje zgaszony. Przy takim podejściu w danym momencie może świecić jeden segment bądź żaden więc można rezystor ograniczający dać na wspólnym wyprowadzeniu.
Wadą tego rozwiązania jest duże zapotrzebowanie na moc obliczeniową uC, bo aby oszukać ludzkie oko całe multipleksowanie musi odbywać się na prawdę szybko ( tak jak dla 4 wyświetlaczy 7segm. miałeś 200Hz czyli 4 wyświetlacze po 50Hz, tak tu musisz mieć 8 x 50Hz czyli 400Hz)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 wrz 2017, o 16:10 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 maja 2017
Posty: 143
Pomógł: 0

nie za bardzo rozumiem w pliku źródłowym kodu zamieszczanego do książki 03_multi_led jest niezrozumiały, a przynajmniej ciężki do analizy dla mnie fragment kodu w pętli głównej while w main.c , czy mógłby mi ktoś wyjaśnić jego działanie , te działania matematyczne ciężko rozłożyć jak dla mnie początkującego na proste do pojęcia etapy, nie rozumiem dlaczego zmienna licznik przed while jest zainicjowana 6000 ? ogólnie tych działań matematycznych z while.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 wrz 2017, o 21:51 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2014
Posty: 1020
Lokalizacja: Trójmiasto
Pomógł: 188

procek87 napisał(a):
dlaczego zmienna licznik przed while jest zainicjowana 6000 ?
Tak po prostu taki przykład Mirek dał. Wynikiem tego jest cyklicznie zliczający licznik właśnie od 6000 w dół do zera i gdy osiągnie zero znów wskakuje 6000 za co jest odpowiedzialna linijka na końcu:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

co do reszty to:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
licznik jest zmniejszany co każdy obieg pętli o 1.

kolejny kawałek, matematyczny służy tylko rozbiciu liczby z licznika na poszczególne cyfry, bo przecież biblioteka nie przewiduje wyświetlania liczb wielocyfrowych tylko można wyświetlić 4 pojedyncze cyfry więc licznik dzielimy przez 1000 i jeśli wynik jest różny od zera znaczy że w liczniku jest liczba czterocyfrowa a na wyświetlacz lewy wysyłamy cyfrę tysięcy, jeśli wynik dzielenia przez 1000 jest równy zero to wyświetlacz jest wygaszany.

Analogicznie dla pozostałych cyfr, czyli dla setek najpierw trzeba pozbyć się tysięcy jeśli w liczniku siedzi liczba 4-cyfrowa, następnie dzielimy przez 100 (dzielenie odbywa się na liczbach całkowitych stąd po dzieleniu przez 100 wszystko co nie jest pełną setką jest pomijane bez zaokrągleń) i uzyskujemy cyfrę setek. I tu oprócz warunku if który sprawdza czy cyfra setek jest większa od zera jest jeszcze jeden warunek "?" wartość zero może oznaczać albo że w liczniku jest liczba mniejsza od 100 wtedy wyświetlacz setek jest wygaszany (wysłanie NIC) albo też może oznaczać cyfrę większą od 999 gdzie akurat cyfra setek jest równa 0 i wtedy na wyświetlacz setek wysyłane jest zero.

Wyłuskiwanie cyfr dziesiątek i jedności odbywa się na podobnej zasadzie.

Oczywiście tę całą procedurę można ubrać w funkcję i zaszyć ją w bibliotece wyświetlacza multipleksowanego i wtedy w pętli głównej będzie tylko wywołanie tej funkcji z argumentem w postaci wartości licznika, funkcja rozbije liczbę na cyfry i wyśle na wyświetlacze 8-)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 wrz 2017, o 16:29 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 maja 2017
Posty: 143
Pomógł: 0

xentis wszystko fajnie tylko następna rzecz dlaczego na wyświetlacz cy1 , który może wyświetlać cyfry od 0-9 przesyłane jest 10 ?
Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 wrz 2017, o 20:09 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

z tego co pamiętam to pod dziesiątką jest wygaszenie wszystkich diodek. :)
czyli ma nic nie wyświetlać w danym momencie . ;)

------------------------ [ Dodano po: 2 minutach ]

dodam:
cyx=0; // wyświetli 0
...
cyx=9; // wyswietli 9
cyx=10; // zgasi wszystkie diody w segmencie. :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 wrz 2017, o 21:06 
Offline
Użytkownik

Dołączył(a): 22 kwi 2017
Posty: 99
Lokalizacja: Piła
Pomógł: 4

procek87 napisał(a):
xentis wszystko fajnie tylko następna rzecz dlaczego na wyświetlacz cy1 , który może wyświetlać cyfry od 0-9 przesyłane jest 10 ?
Pozdrawiam


------------------------ [ Dodano po: 2 minutach ]

Jeśli mógłbym podpowiedzieć... przesyłając "10" przesyłasz dziesiąty znak z tablicy "cyfry" umiejscowionym w d_led.c, może to być różny znak. W przykładzie z BB jeśli dobrze odczytałem to jest cyfra "9".



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 wrz 2017, o 21:24 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

np:
tablica_cyfry[cy1] ...... dla cy1=0 (pierwszy element tablicy)......wyswietli zerową cyfry[0] ... czyli definicję bitową cyfry 0.
dla cy1 = 1 .......>..... 1
...
dla cy1 = 9........>..... 9 (dziesiąty element tablicy)
dla cy1 = 10.......> .... . // 0xFF -- jedenasty element tablicy cyfry[10]; NIC.

------------------------ [ Dodano po: 1 minucie ]

liczymy od 0. ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 wrz 2017, o 04:53 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 maja 2017
Posty: 143
Pomógł: 0

Aha już widzę zapatrzyłem się na plik nagłówkowy .h , Dziękuję ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 wrz 2017, o 05:05 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

Możesz sobie pokombinować i wyświetlać wymyślone wzory z 7miu segmentow i kropki które umieścisz pod dalszymi pozycjami w tablicy .
Będziesz się mogł do nich odwoływać
np: cyx = 11; ...12....13...
Czyli Cyfry[ cyx] . :)

Wysłane z mojego Lenovo K33a42 przy użyciu Tapatalka



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 17 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO