logo elektroda
logo elektroda
X
logo elektroda
ADVERTISEMENT
ADVERTISEMENT
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

zaprojektować układ z 8051 umożliwiający wyświetlanie

andmich 01 Apr 2004 08:08 3671 11
ADVERTISEMENT
  • #1 574361
    andmich
    Level 2  
    Posts: 4
    Rate: 1
    witam
    mam pytanko
    musze zrobic projekrt na zaliczenia przedmiotu
    a oto temat
    zaprojektować układ z 8051 umożliwiający wyświetlanie
    informacji na 8-io cyfrowym wyświetlaczu.
    czy moge liczyc na pomoc


    pozdrawiam
    andrzej michalewski
    gg 2330698[/b]
  • ADVERTISEMENT
  • #2 575033
    lechoo
    Level 39  
    Posts: 5161
    Help: 377
    Rate: 546
    Jakim wyświetlaczem chcesz sterować (LCD, LED, VFD) i jakie informacje będą na nim wyświetlane? Projekt obejmuje tylko stronę sprzętową (projekt układu) czy również musisz napisać program do tego '51?
  • #3 575276
    McRancor
    VIP Meritorious for electroda.pl
    Posts: 5326
    Help: 479
    Rate: 124
    Zapewne chodzi o sterowanie wyświetlaczem LED, polecam multipleksowanie 2*4, jeden cały port idzie na załączanie segmentów (parami 1-5, 2-6, 3-7, 4-8) A dwa porty wykorzystujesz w całości na sterowanie aktualnie załączanymi segmentami, Program będzie prosty, dzięki wykorzystaniu pełnych portów, najlepiej napisać go w bascomie, sprzętowo będzie nieco trudniej, dwa drivery ULN2803 zwierające "do masy" i jeden driver zwierający "do plusa" np. TD62786, dzięki zastosowaniu scalonych driverów, układ będzie "ładny" oczywiście zależy to też czy sterujesz anodą czy katodą wyświetlaczy
  • ADVERTISEMENT
  • #4 575714
    lechoo
    Level 39  
    Posts: 5161
    Help: 377
    Rate: 546
    Załączam fragment większego schematu, w którym sekwencyjnie sterowany jest wyświetlacz LED ze wspólną katodą. Katody sterowane są poprzez układ ULN2803, zaś anody przez tranzystory PNP. Układ ten współpracował z portem 8255, ale można podpiąć go również bezpośrednio pod '51 (trzeba wtedy dodatkowo podciągnąć port sterujący układem ULN2803 do +5V przez rezystory 2k2) lub AVR. Aby nie było widać migotania zaleca się żeby częstotliwość wybierania wynosiła min. 75Hz na jedną cyfrę, czyli trzeba użyć przerwań z częstotliwością min. 600Hz.
    Attachments:
    • zaprojektować układ z 8051 umożliwiający wyświetlanie led8multiplex.gif (21.99 KB) You must be logged in to download this attachment.
  • ADVERTISEMENT
  • #5 575867
    yego666
    Level 33  
    Posts: 2175
    Help: 239
    Rate: 564
    lechoo wrote:
    Aby nie było widać migotania zaleca się żeby częstotliwość wybierania wynosiła min. 75Hz na jedną cyfrę, czyli trzeba użyć przerwań z częstotliwością min. 600Hz.
    Tak to lechoo napisales jakby byl to dogmat. Tymczasem pobranie kolejnej cyfry z bufora, jej konwersja na kod 7-segmentowy, przelaczenie katody i wyswietlenie cyfry to jakies 15 us. Jesli zrobisz to na przerwaniu, to bedziesz musial zainicjalizowac licznik, uaktywnic przerwania i je obsluzyc.
    Do czasu samej obslugi wyswietlacza dodasz jeszcze raz tyle na wejscie i wyjscie z przerwania. Czasem te pare mikrosekund ma znaczenie, i wtedy mozna kolejne iteracje obslugi displaya wplesc w obieg petli glownej by uniknac dodatkowego haraczu czasowego. jesli petla jest ciasna, co zwykle daje sie bez problemu zrobic, to mozna znacznie czesciej przelaczac wyswietlacz. Zaleta takiej konstrukcji jest wieksza czestosc obslugi wyswietlacza, oraz bardziej efektywne wykorzystanie czasu procesora. Potencjalne niebezpieczenstwo takze istnieje i polega na tym, ze jesli procek zajmie sie mocno jakims fragmentem programu to wyswietlacz moze nam mrugac. Ale w obsludze zdarzen w czasie rzeczywistym czasem lepiej jest nie wyswietlac przez chwile niz pogubic sie w sledzeniu rzeczywistosci. W ukladach bardziej wymagajacych stosuje sie specjalizowane uklady do obslugi wyswietlaczy, by odciazyc procesor. Wybor konkretnej metody obslugi zalezy od wymogow konkretnej aplikacji.
    Powyzsza dywagacja nie jest bynajmniej negacja wywodow szanownego przedpiscy. chce jedynie zaznaczyc, ze prawie zawsze istnieje wiecej niz jedno "sluszne" rozwiazanie problemu i warto przygladnac sie wszystkim opcjom, by wlasciwie ustawic kompromis miedzy wymogami a nakladem sil i srodkow.
    Pozdrawiam, Y E G O
  • ADVERTISEMENT
  • #6 576553
    yego666
    Level 33  
    Posts: 2175
    Help: 239
    Rate: 564
    Moze schemat konkretnego ukladu dynamicznego wyswietlania LED rozjasni sprawe.

    Program w Tse jest fragmentaryczny, bo wycialem z niego caly niepotrzebny program lapania i obslugi sygnalow DCF77, a pozostawilem procedure wyswietlania bufora na 3-pozycyjnym wyswietlaczu 7-segmentowym.
    Wszystkie zmienne sa podeklarowane, i funkcje dodatkowe tez sa.
    W zasadzie moznaby nawet skompilowac i uruchomic ten programik i powinien dzialac, ale zalaczam go tylko dla celow demonstracji tego w jaki sposob mozna wplesc obsluge wyswietlacza w program glowny bez uciekania sie do cyklicznego przerwania.

    Funkcja main() bedzie sie krecic w kolko trafiajac co jakis czas na obsluge wyswietlacza. Jesli obieg petli bedzie krotszy niz 3ms, to na kazdy wyswietlacz przypadnie po okolo 100 cykli ON/Off w ciagu kazdej sekundy i nie bedzie mrugania.

    pozdrawiam, Y E G O
    Attachments:
    • zaprojektować układ z 8051 umożliwiający wyświetlanie display.jpg (81.88 KB) You must be logged in to download this attachment.
    • bills.c (2.47 KB) You must be logged in to download this attachment.
  • #7 576631
    fantom
    Level 31  
    Posts: 1649
    Help: 108
    Rate: 41
    Szczerze mowiac jestem zwolennikiem wieszania takich rzeczy na przerwaniu.BTW:czy te porty P3.3,2,1 sa w stanie utrzymac prad rzedu 100mA ktory poplynie po wysterowaniu wszystkich ledow w danym segmencie ?
  • #8 576666
    yego666
    Level 33  
    Posts: 2175
    Help: 239
    Rate: 564
    Mozna przez wszystkie porty razem puscic sumaryczny prad 80mA, o ile sie nie myle. A na pojedyncza noge chyba przypada po 20 mA.
    Zawsze mozna dac bufory pradowe. kiedys Cemi robila takie pod nazwa UL1121. Cztery sztuki tranzystorow NPN z oporami w bazach. Ic <=60mA,
    albo ULN 2003, albo jeszcze cos innego. Wybor jest spory.
    W ukladzie, ktory podalem powyzej za przyklad, display jest tyci tyci i prad katody wynosi okolo 40 mA w porywach. HP robil dosc wydajne wyswietlacze. Szkoda ze w czasie przeszlym :cry: .
    Pozdrawiam, Y E G O
  • #9 576672
    fantom
    Level 31  
    Posts: 1649
    Help: 108
    Rate: 41
    No wlasnie tak mi sie zdawalo (choc nie znam dokladnie tego proca) dlatego musza byc tranzystory zewnetrzne bo sie porty spala.
  • #10 577703
    lechoo
    Level 39  
    Posts: 5161
    Help: 377
    Rate: 546
    Heh, przecież ja tam nigdzie nie napisałem, że jest to jedyne słuszne rozwiązanie :-) Dałem ten schemat jako przykład bo miałem go pod ręką, a moje uwagi odnośnie sterowania sekwencyjnego są w sumie słuszne. Wplatanie obsługi multipleksowania w główną pętlę jest rozwiązaniem nieeleganckim i wymaga dużo więcej przemyśleń niż prosta obsługa przerwania od timera. A pomimimo naszych wysiłków może się okazać, że i tak wyświetlacz świeci nierówno, albo np. przygasa podczas naciskania klawiszy :-)
    Jeśli nie chcemy multipleksowania, to jednym z prostych rozwiązań jest użucie szeregowo-równoległych rejestrów przesuwnych, np. 74164, które będą bezpośrednio przez oporniki sterowały katodami wyświetlaczy. Rejestry można szybko załadować używając UART-a w trybie synchronicznym.
  • #11 577867
    yego666
    Level 33  
    Posts: 2175
    Help: 239
    Rate: 564
    Nigdzie lechoo nie napisalem, ze sie mylisz.
    Masz racje i z tym nikt nie polemizuje.
    Jedyne co chcialem powiedziec, to tyle, ze zawsze jest wiecej niz jedno rozwiazanie do rozwazenia, zaleznie od konkretnego ukladu.
    Sam czasem robie tak jak pokazalem, a czasem na przerwaniach. Jest mi to obojetne, ktore rozwiazanie uzywam, o ile pasuje do projektu i dziala zgodnie z zalozeniami.
    Pozdrawiam, Y E G O
  • #12 684223
    mcy
    Level 15  
    Posts: 154
    Help: 7
    Rate: 18
    można zastosować serię układów 74LS246,247,248 które są dekoderami, driverami BCD na wyświetlacze 7 seg. Dokładne informacje uzyskacie z not katalogowych. Zyskuje się na portach potrzebne 4 lub 5 (do kropki). Cena - 1.30 PLN. Sterowanie wyświetlaczy ze wspólną anodą, katodą prąd OC 24mA Umax OC do 30V co pozwala na sterowanie Dużymi wyświetlaczmi. Zastosowałem - polecam

Topic summary

✨ Dyskusja dotyczy projektu układu opartego na mikrokontrolerze 8051 umożliwiającego wyświetlanie informacji na 8-cyfrowym wyświetlaczu cyfrowym, najczęściej LED. Proponowane rozwiązania obejmują sterowanie wyświetlaczem LED ze wspólną katodą lub anodą, wykorzystujące multipleksowanie segmentów w konfiguracji 2x4. Sterowanie segmentami realizowane jest za pomocą pełnych portów mikrokontrolera, a do obsługi prądowej zaleca się stosowanie driverów prądowych takich jak ULN2803 (zwierających do masy) oraz TD62786 (zwierających do plusa) lub alternatywnie tranzystorów zewnętrznych, aby nie przeciążać portów mikrokontrolera. Częstotliwość multipleksowania powinna wynosić minimum 75 Hz na cyfrę, co wymaga przerwań o częstotliwości około 600 Hz, choć możliwe jest także implementowanie obsługi wyświetlacza w głównej pętli programu bez przerwań, co pozwala na efektywniejsze wykorzystanie czasu procesora, ale może powodować migotanie przy dużym obciążeniu CPU. Alternatywnie można zastosować rejestry przesuwne (np. 74164) do sterowania segmentami, co upraszcza układ i zmniejsza liczbę potrzebnych linii portów. W dyskusji poruszono także kwestie prądowe portów mikrokontrolera 8051, które zwykle mogą dostarczyć do 20 mA na pin, a sumarycznie do około 80 mA, co wymaga stosowania buforów prądowych. Wspomniano również o układach 74LS246, 247, 248 jako dekoderach i driverach BCD do wyświetlaczy 7-segmentowych, które pozwalają na sterowanie wyświetlaczami ze wspólną anodą lub katodą przy prądzie do 24 mA i napięciu do 30 V, co umożliwia obsługę większych wyświetlaczy. Programowanie może być realizowane w Bascomie lub asemblerze, a implementacja powinna uwzględniać odpowiednią synchronizację i częstotliwość odświeżania, aby uniknąć migotania i zapewnić stabilne wyświetlanie danych.
Generated by the language model.
ADVERTISEMENT