Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

sterowanie 3 cyfrowym led (7 segmentowym) przez 89s52

30 Sep 2007 18:45 3158 21
  • Level 10  
    witam

    wiem ze temat o sterowaniu 7 segmentowymi wyswietlaczami led byl walkowany juz wiele razy ale nie znalazlem satysfakcjonujacej mnie do konca odpowiedzi...

    otoz wykonuje uklad ktory ma byc gitarowym sterownikiem midi...
    ma on obslugiwac 12 przyciskow noznych i 10 diod led (przy 10 przyciskach..) na co bede potrzebowal 22 piny procesora...
    przypuszczalnie bede musial dorzucic jeszcze jakas dodatkowa diodke...

    zostanie mi jakies 9-10 wolnych pinow... powiedzmy ze jeden caly port i jeszcze jakies 1-2 wolne piny gdzie indziej...

    do obsluzenia pozostaje mi jeszcze 3 cyfrowy 7 segmentowy wyswietlacz led.. (czy w ogole mozna kupic 3 cyfrowe? czy tylko 2 lub 4?)

    pytanie... czy jest uklad ktory dostajac 8 bitowa liczbe od procesora potrafi wyswietlic ja na 3 cyfrowym 7 segmentowym ledzie...??

    do tej pory znalazlem 74ls247... ale on jest 4 bitowy i obsluguje jedna cyfre... musialbym miec 3 takie co oznacza 12 pinow...

    czy warto w ogole ograniczac sie w tej sytuacji do 1 procesora? czy moze lepiej od razu nastawic sie na 2 procki i przekazywac liczbe z jednego do drugiego rownolegle i bezposrednio z tego drugiego sterowac wystwietlaczem led nie bawiac sie w zadne dodatkowe uklady scalone?
  • Level 21  
    A co powiesz na ekspandery IO? Np. PCF8574? Zajrzyj do noty - warto...
  • Level 42  
    Quote:
    "...do tej pory znalazlem 74ls247... ale on jest 4 bitowy i obsluguje jedna cyfre... musialbym miec 3 takie co oznacza 12 pinow..."

    skąd takie pomysły?

    a słyszał kiedy kolega o sterowaniu multipleksowym??? jeśli nie to może warto zaczytać?

    (aby wysterować w trybie multipleksowania 3 pojedyńcze proste wyświetlacze LED wystarczą ze 4 linie na sterowanie segmentów przez jakiś 4bitowy driver, albo 8 linii bez drivera (co najwyżej dla twojego procka ULN2803) oraz 3 linie na sterowanie każdego wyświetlacza z osobna - ot wszystko
  • Level 10  
    ok, przeczytalem o multipleksowaniu... i ogarnalem o co chodzi...
    tylko zastanawiam sie czy nie bedzie to swiecilo zbyt slabo... lub migalo...

    ten procesor w miedzy czasie ma obslugiwac tez transmiisje szeregowa danych... wiec nie wiem czy to wszystko bedzie tak dobrze ze soba wspolpracowalo...

    a czy ewentualnie z dwoma prockami moga byc jakies problemy? jak bedzie komunikacja rownolegla?
  • Helpful post
    Level 42  
    zrobienie multiplexowego wyświetlania dla tylko trzech wyświetlaczy to naprawdę pestka dla obciążenia procesora. Robisz to w jednym przerwaniu od któregoś timera i po zawodach. A żeby nie migotało wystarczy tylko odbrać czas odświeżania np większy niż 50Hz. Aby segmenty za słabo nie świeciły dajesz nieco niższe wartości rezystorów aby nadrobić mniejszy współczynnik wypełnienia przy ich sterowaniu. Ale naprawdę aż ciężko tu prowadzić rozważania czy przy tych 3 wyświetlaczach mogą być jakieś tego typu problemy o jakie pytasz. Wyobraź sobie ludzi, którzy robią takie wterowanie multipleksowane dla np 20 wyświetlaczy albo więcej i też daje się to zrobić i dopiero wtedy ew opłaca się robić to na oddzielnym procku z którym główny układ kontaktuje się po np I2C albo RS232/RS485 itp wszystko zależy od potrzeb.

    ja w swoim projekcie zegarka:

    https://www.elektroda.pl/rtvforum/topic678948.html

    jak zobaczysz w linku steruję z jednego procka 4 wyświetlaczami plus dwukropek, mam transmisję szerwgową przez USART- RS232 z PC, obsługę pilota przez IR, obsługę I2C dla klawiaturki i głośniczka itp itp i wszystko działa wyśmienicie

    pozdrawiam
  • Helpful post
    Level 23  
    Cześć !

    Jeśli możesz się ograniczyć do wyświetlania tylko cyfr i masz ochotę na rozbudowę bloku wyświetlacza to polecam dekoder
    BCD - wyświetlacz 7-segmentowy np CD4511.

    Każdy z tych dekoderów ma zatrzask i można ostatni wynik zapamiętać w LATCH. Sterowanie wyświetlacza jest statyczne wspólna katoda :) więc świeci aż miło :), 100% wypełnienia i niezależnie od ilości włączonych segmentów

    W jednej sekcji masz dekoder DIL 14. sterujesz /ABCD + 1 LATCH więc przy trzech cyfrach masz 7 pinów. Procedura obsługi jest banalna wystawiasz pierwszą cyfrę w BCD i zwalniasz i zatrzaskujesz potem druga i trzecia i koniec, procek może sie zająć czymkolwiek zechcesz :).

    Wynik jest trzymany w pamięci LATCH do kolejnej zmiany stanów :)

    Ograniczenie to oczywiście liczby 0-9, a i mały drobiazg 6 wygląda jak małe b.
  • Level 10  
    mirekk36...ok, przekonales mnie tym :)
    tylko... powiedzmy ze potrzebuje 7 linii na sterowanie 7 segmentami (bez kropki) wyswietlacza (wpolnie sterowana katoda) + 3 na sterowanie anodami.. tak??
    czyli nadal 10 linii...

    z driverem 74ls247 byloby 4 na driver i 3 na adnody... co byloby juz satysfakcjonujace dla mnie.. czy dobrze rozumuje? :)

    Jdsoul - Twoje rozwiazanie jest nawet lepsze i tez sie nad tym zastanowie :)
    tylko nie rozumiem jednego... jak bez multipleksowania utrzymywana jest liczba na wyswietlaczu skoro katoda jest wspolna? a anoda do czego jest dolaczona?
  • Level 23  
    Każdy scalaczek 4511 ma swój segment :) 7-segmentowy i wewnętrzą pamięć 1 bajtową :) na przerzutnikach :)

    Dodano po 8 [minuty]:

    Po za tym jest to dość złożone rozwiązanie pod względem programowym bo wynik wysyłasz w BCD :)

    U mnie taki wyświetlacz działa nawet z 8 znakami jako wyświetlacz czestościomierza CMOS i dzięki funkcji LATCH mogę zrealizować funkcję HOLD zapamiętaj natychmiast wynik :)
  • Level 10  
    czyli bede potrzebowal po jednym scalaczku do kazdej cyfry? jesli tak to moglby byc zrozumiale... 4 piny z procesora do wszystkich scalaczkow na wejscia... i oddzielnie 3 piny do kazdego LE.. tak?
  • Level 23  
    Ot coś w ten deseń :)

    Masz wspólną magistralę ABCD i trzy piny ChipSELECT :) zabawne ale działa i to całkiem nieźle :) postaram się pokazać zdjątka wkrótce jak będę w domku :)

    Tylko pamiętaj o tej śmiesznej szóstce :) :) :) :) można ją dorobić ale to kosztuje jeszcze kilka brameczek :)[/url]

    Dodano po 3 [minuty]:

    A i jeszcze jedno :( na wyjściach 4511 masz 5V więc wypadałoby by dać rezystorki 560 -1 k na każdą anodę :(

    Troche smutne , ja stosowałem dwie diody w kierunku przewodzeniana wspólnej katodzie wyświetlacza , ale czasem widać różnicę przy wzroście prądu :( jeśli nie będzie to istotne to dwie diody dadzą ci około 1,2V spadku czyli na LED zostanie około 3 z kawałkiem

    Polecam stosowanie diod w kolorze Zółtyn, zielonym, a nawet niebieskim, raczej nie czerwonych :(
  • Level 10  
    troche duzo tych ukladow sie teraz robi... sprobuje moze jednak z multipleksowaniem... bo zamiast 3 takich scalakow to wole juz dac drugi procesor...
  • Level 42  
    ja osobiście, nie żebym miał coś przeciwko rozwiązaniu kolegi Jdsoul, ale wolę ograniczać do minimum poboczne układy scalone mając do dyspozycji procek. Bo o ile to rozwiązanie jest bardzo oszczędne co do linii procesora to jednak nie chciałoby mi się dawać tyle dodatkowych TTLi i to jeszcze mając ograniczenia w jakości wyświetlanych cyfr itp ;)

    dla 3 wyświetlaczy - poświęcenie 8 linii na segmenty (przez driver ULN2803 dla procka o jakim piszesz bo dla AVRa można byłoby i jego się pozbyć) oraz 3 tranzystorki do sterowania poszczególnych wyświetlaczy - to naprawdę bardzo oszczędna konfiguracja i łatwa do realizacji programowej.

    No chyba że w twoim przypadku strata 8+3 linii w procku w tym celu to za dużo to wtedy rozwiązanie o którym w spomniał Jdsoul

    pozdrawiam
  • Level 10  
    ale zamiast uln2803 nie moge dac tego 74ls247???
    to mi ograniczy uzycie lini do 7...
  • Helpful post
    Level 42  
    tak tak - możesz użyć dowolnego pasującego ci drivera aby wysterować wyświetlacze
  • Level 10  
    dobra.. chbya juz teraz wiem wszystko, wielkie dzieki za pomoc!
  • Level 39  
    Verges wrote:
    ale zamiast uln2803 nie moge dac tego 74ls247???
    to mi ograniczy uzycie lini do 7...

    Daj 74164 , a wystarczy 5 linii ;)

    Piotrek
  • Level 35  
    czemu chcecie dawać dodatkowe drivery do zasilania wyświetlacza?

    Osobiście zrobiłem projkekt na takim wyświetlaczu- w zasadzie cztery segmenty, bo dodchodzi jeszcze linijka z diod led.
    Trzy cyfrowe wyświetlacze są np w TME (wpisz w wyszukiwarke BA56). Szeregwe oporniki to 270R-LEDy świecą bardzo mocno. Dodam że nad wyświetlaczem mam jeszcze dwa przerwania o wyższym priorytecie i nic sie nie pinkoli.
  • Level 23  
    O ile pamiętam to CD4511 były CMOS :) ale to prawie TTL :)

    A jeśli problemem jest ilość układów lub ilość dostępnych pinów to mamy szczególnie cenne rozwiązanie w postaci ..... ....
    czary mary Philips'a :)

    http://www.grifo.com/PRESS/DOC/Philips/SAA1064.pdf



    http://elektroniksc.com.pl/?sGrupa=UK%A3ADY&p=main&str=27

    No ale będzie troszkę drożej :) około 15-19 zł, no ale tylko 2 piny i to na wspólnej magistrali i2c :)

    Można też bawić się w multipleksowanie za pomocą 4511, bez użycia latcha tzn podawać do wyświetlania cyfrę w BCD i sterować każdą wpólną katodą kolejno nadal 7 pinów , ale już troszkę procka trzeba zająć i do tego dochodzi wszystko co charakterystyczne dla procków :)

    Pozwólmy peryferiom żyć własnym życiem :) manifesto :)

    Dodano po 14 [minuty]:

    A swoją drogą zauważam, że jest tendencja odwrotu od stosowania czegokolwiek na zewnątrz :) poza prockiem :).

    Może wkrótce producenci załadują kwarc do środka i pozwolą układ zasilić wprost z 230V, kto wie może porty będą w stanie wchłonąć 16A i właściwie stworzy się pełna - czarna skrzynka -

    Już kiedyś probowano zalewać te wszystkie sprawy w układach hybrydowych grubowarstwowych i .... zaprzestano stosowania układów grubowarstwowych ze względu na szaloną awaryjność i problemy serwisowe :)
  • Level 10  
    planuje to zrobic multipleksujac przez jakis driver ten ba56-12... on nie ma oddzielnych pinow na katodach dla poszczegolnych cyfr co wymusza multipleksowanie... a innego 3 cyfrowego nigdzie nie ma :)
  • Level 23  
    No przecież podałem SAA1064 Philpsa :) 4 cyfrowy, ale kto Ci każe czwartą cyfrę montować :)

    Myk jest fajny bo multipleksacja jest parami tzn. na jednej kostce SAA1064 możesz zrobić albo dwie cyfry statyczne albo cztery multipleksowane :).

    No i ten I2C :) o nic się nie martwisz 2 piny SDA SCL i chulasz :)
  • Level 10  
    jeszcze jedno

    robie mniej wiecej cos takiego tylko dla 3 cyfr i 74ls247
    http://www.mikrokontrolery.net/img_8051/03.gif

    jaka wartosc powinny miec rezystory miedzy uC a baza tranzystorow sterujacych anodami?

    czy miedzy 74ls247 a wyswietlaczem powinny byc rezystory?

    czy moze raczej miedzy tranzystorami a anodami?
  • Level 42  
    rezystory powinny być pomiędzy prockiem a wyświetlaczami na każdy segment jeden rezystor czyli 7szt chyba że kropka też to 8szt, natomiast do baz tranzystorów możesz dać sobie no rezystorki 2,2K
pcbway logo