Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Sterowanie wyświetlaczem 7-segmentowym, 3-cyfrowym

21 Lut 2019 08:40 453 12
  • Poziom 3  
    Witam,

    Chcę na wyświetlaczu odmierzać czas od 999 sekund do 0. Jaka jest ogólna idea sterowania takimi wyświetlaczami za pomocą ATmega16?
    Poniżej zamieszczam napisany przeze mnie fragment kodu, liczby wyświetlają się prawidłowo, natomiast przez dłuższy czas wyświetlana jest tylko i wyłącznie jedna cyfra (przez delay'e).
    Czy do tej czynności wykorzystuje się timer? Proszę o pomoc.

    Kod: c
    Zaloguj się, aby zobaczyć kod
  • Pomocny post
    Poziom 39  
    Ogólna idea jest taka, aby ułatwiać sobie życie i użyć gotowego scalaka takiego jak sct2026, max7219, czy jeszcze innego jednego z wielu.
  • Pomocny post
    Specjalista - Mikrokontrolery
    Idea sterowania wyświetlaczem multipleksowanym nie zależy od typu użytego mikrokontrolera. Zawsze robi się to w przerwaniu timera, wyświetlając w nim jedną cyfrę (a w następnym - następną). Obejrzyj pierwsze 20 z setek tysięcy przekładów, jakie znajdziesz w sieci, to zapewne zrozumiesz.
  • Poziom 3  
    @BlueDraco a z twojego doświadczenia wynika, że lepiej użyć gotowego scalaka, czy sterować bezpośrednio z MCU?

    Pozdrawiam
  • Poziom 31  
    Dla celów edukacyjnych możesz zrobić sobie to zarówno na scalaku jak i na samej Atmega. Atmega 16 ma pełne 4 porty, część może być zajęta ale i tak zostaje spokojnie 8 pinów na poszczególne led (z kropką) i 3 piny na poszczególne cyfry. Rezystory ograniczające dajesz przy każdym led. Do tego jeszcze 20 pinów na pozostałe potrzeby. Możesz mieć i 8 cyfr, pinów wystarczy. Teraz są bardziej popularne inne rozwiązania - oledy, lcd z I2C, tanie drivery LED dlatego i Atmaga16 znika ze sklepów. Wpisz w google "avr multipleksowanie led", jest tyle przykładów, że szkoda pisać kolejny tutorial - definiujesz znaki, odpalasz timer by uzyskać 50Hz dla jednej cyfry, dla trzech to około 150Hz, podmieniasz po kolei wyświetlane cyfry w kółko w przerwaniu, a w kodzie głównym zawartość poszczególnych cyfr.
  • Poziom 20  
    excray napisał:
    Ogólna idea jest taka, aby ułatwiać sobie życie i użyć gotowego scalaka takiego jak sct2026, max7219, czy jeszcze innego jednego z wielu.

    No nie wiem czy takie wielkie ułatwienie. Może w przypadku 7219, ale ten jest dla wyświetlaczy common cathode, które, mam wrażenie, są mniej popularne od CA.
    W przypadku SCT2026 i tak trzeba zaprogramować multipleksowanie tyle że trochę inaczej. Ułatwienie jest takie, że na wyjściach są źródła prądowe a driver na SPI może działać w pełni sprzętowo (w większości sprzętowo w przypadku atmega16)
  • Poziom 39  
    Przy SCT nie robisz multipleksowania. Masz jeden scalak na 2 wyświetlacze.
  • Specjalista - Mikrokontrolery
    kaczakat napisał:
    odpalasz timer by uzyskać 50Hz dla jednej cyfry


    I w ten sposób masz za darmo efekt specjalny - animację pt. "skaczące cyferki", strasznie drażniący użytkownika (widać w bylejakich wagach sklepowych).

    Ja bym proponował raczej 400 Hz, ostatecznie 200. Typowe gotowe sterowniki odświeżają z częstotliwościami 300..1600 Hz

    Autor: Masz dużo wolnych nóg - zrób sterowanie za darmo na ATMega. Nóżek brakuje - dopłać do zewnętrznego sterownika.
  • Poziom 39  
    MAX7219, gotowy moduł z 8 segmentami led kosztuje u chińczyka 4zł z wysyłką w cenie. Ja nie wiem, jak kto ceni swój czas, ale ja za te pieniądze to bym się nawet nie zastanawiał.
  • Specjalista - Mikrokontrolery
    excray: Czy w odróżnieniu od multipleksowania "ręcznego", oprogramowanie do współpracy ze sterownikiem za 4zł napisze się samo?
    Ja nie widzę tu specjalnej różnicy pomiędzy tymi dwoma rozwiązaniami, poza liczbą użytych nóg uC.
  • Poziom 39  
    Sam program Ci nic nie wyświetli. Potrzebujesz jeszcze elektroniki do tego, a to samo się nie zrobi.
  • Moderator Mikrokontrolery Projektowanie
    wayne1996 napisał:
    @BlueDraco a z twojego doświadczenia wynika, że lepiej użyć gotowego scalaka, czy sterować bezpośrednio z MCU?

    Jeśli masz wystarczającą liczbę wolnych pinów IO (czyli 10, zakładając, że nie robisz jakiś cudów) to oczywiście użycie MCU jest prostsze i lepsze niż specjalizowanego scalaka + MCU. Chociażby dlatego, że lepiej mieć jeden scalak niż dwa. A jeśli brakuje ci pinów to bierzesz taki procesor, który ma wystarczającą liczbę pinów i wystarczające zasoby, aby zrealizować zadanie. Idea typu bierzemy MCU, a potem pakujemy pełno scalaków, realizujacych funkcje, które mogą być spokojnie realizowane przez MCU jest IMHO dziwna.