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

Wyświetlanie cyfr na 7-segmentowym wyświetlaczu LED

logineczke 09 Dec 2009 20:46 4948 4
  • #1
    logineczke
    Level 9  
    Witam. Chcę wyświetlać więcej jak jedną cyfrę na wyświetlaczu LEDowym. Z tego co w necie wyczytałem, można go obsługiwać tylko multipleksowo, a więc nie jest możliwe wyswietlenie kilku cyfr dokładnie w tym samym czasie. Czyli domyślam się, że trzeba wyświetlać cyfry na zmianę i wtedy uzyskujemy złudzenie optyczne, że wszystkie cyfry się świecą... tak?



    Czy ten program: http://www.edsim51.com/examples/sevenSegDisplays.asm uruchomiony na fizycznym sprzęcie z prawdziwym wyświetlaczem, wyświetlałby liczbę 1234? Bo po uruchomieniu w edsim51 widać tylko jakieś miganie :/ Da się tak zrobić, żeby ten cały edsim odświeżał stan wyświetlacza znacznie szybciej niż jakieś 2 razy/sekundę? Mam do napisania program właśnie w tym emulatorze, w którym liczba (zawsze 4-cyfrowa) ma się wyświetlać na wyświetlaczu 7-segment, w dodatku ma się z pewną szybkością zmieniać. Ale przy takim syfie nawet nie jestem w stanie sprawdzić, czy mój program na pewno działa tak jak trzeba :|

    Bardzo proszę o pomoc, z góry dzięki za każdą odpowiedź ;]
  • #2
    megao
    Level 24  
    Quote:
    Czyli domyślam się, że trzeba wyświetlać cyfry na zmianę i wtedy uzyskujemy złudzenie optyczne, że wszystkie cyfry się świecą... tak?

    Tak. W danej chwili wyświetlana jest tylko jedna pozycja wyświetlacza.

    Quote:
    Da się tak zrobić, żeby ten cały edsim odświeżał stan wyświetlacza znacznie szybciej niż jakieś 2 razy/sekundę?

    Oczywiście, że się da. Żeby uzyskać dobry wynik (migotanie nie było widoczne), częstotliwość odświeżania wyświetlacza powinna być większa niż 50Hz.
    Wszystko to zależy od szybkości wysyłania danych na port. To co potrzebne żeby rozwiązać problem, to podstawowa znajomość mikrokonktrolera i matematyki ;)
  • #3
    krzysztofh
    Level 29  
    logineczke wrote:
    Witam. Chcę wyświetlać więcej jak jedną cyfrę na wyświetlaczu LEDowym. Z tego co w necie wyczytałem, można go obsługiwać tylko multipleksowo, a więc nie jest możliwe wyswietlenie kilku cyfr dokładnie w tym samym czasie. Czyli domyślam się, że trzeba wyświetlać cyfry na zmianę i wtedy uzyskujemy złudzenie optyczne, że wszystkie cyfry się świecą... tak?

    Czy ten program: http://www.edsim51.com/examples/sevenSegDisplays.asm uruchomiony na fizycznym sprzęcie z prawdziwym wyświetlaczem, wyświetlałby liczbę 1234? Bo po uruchomieniu w edsim51 widać tylko jakieś miganie :/ Da się tak zrobić, żeby ten cały edsim odświeżał stan wyświetlacza znacznie szybciej niż jakieś 2 razy/sekundę? Mam do napisania program właśnie w tym emulatorze, w którym liczba (zawsze 4-cyfrowa) ma się wyświetlać na wyświetlaczu 7-segment, w dodatku ma się z pewną szybkością zmieniać. Ale przy takim syfie nawet nie jestem w stanie sprawdzić, czy mój program na pewno działa tak jak trzeba :|

    Bardzo proszę o pomoc, z góry dzięki za każdą odpowiedź ;]


    Poczytaj sobie tutaj:
    http://wkretak.pl/readarticle.php?article_id=13
  • #4
    logineczke
    Level 9  
    megao wrote:
    Żeby uzyskać dobry wynik (migotanie nie było widoczne), częstotliwość odświeżania wyświetlacza powinna być większa niż 50Hz.
    Wszystko to zależy od szybkości wysyłania danych na port. To co potrzebne żeby rozwiązać problem, to podstawowa znajomość mikrokonktrolera i matematyki ;)

    Co do częstotliwości odświeżania samego wyświetlacza, to akurat wiem o co chodzi. Problem polega na tym, że nawet w tym przykładowym programie (link w poprzednim poście), który odświeża wyświetlacz na pewno częściej jak 50Hz, nic na wyświetlaczu nie widać, bo to emulator odświeża widok bardzo wolno. Znaczy, chodzi mi o to, że na wyświetlaczu być może i wszystko jest w porządku, ale w edsim51 zmiany są widoczne dopiero po wykonaniu konkretnej liczby instrukcji: 1, 100, 1000, 10000 albo 50000. A więc jeśli po wykonaniu tych powiedzmy 100 intrukcji, na wyświetlaczu nic się nie wyświetlało, podczas wykonywania następnych 100 intrukcji dalej będzie on pusty. OK, pewnie powiecie, ustaw liczbę instrukcji na 1 i będzie ok, po wykonaniu każdej instrukcji będzie widać faktyczny stan wyświetlacza. No, rzeczywiście, tylko że wtedy wykonują się zaledwie 3-4 instrukcje w ciągu sekundy i wyświetlenie nawet pojedynczej cyfry trwa kilka sekund... W razie wątpliwości możecie sobie ściągnąć ten program: www.edsim51.com i przetestować w nim ten przykładowy kod.

    Co do działania w praktyce, może kiedyś zainwestuję w odpowiedni sprzęcik i się trochę pobawię, bo nawet mi się to podoba, ale teraz niestety muszę zamknąć ten program tylko i wyłącznie w realiach emulatora.
  • #5
    fitman
    Level 11  
    Nie jest tak jak mówisz, na górze masz podany czas nie w sekundach tylko w us, wszystko działa tak jak należy, na rzeczywistym sprzęcie to by zadziałało poprawnie (miganie cyfr nie byłoby widoczne). Nie wiem czy da się przyspieszyć symulację w tym programie, ale jak znajdę to dam znać.