logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Sterowanie wyświetlaczem 7-segmentowym, 3-cyfrowym

wayne1996 21 Lut 2019 08:40 705 12
  • #1 17793609
    wayne1996
    Poziom 5  
    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 / C++
    Zaloguj się, aby zobaczyć kod
  • Pomocny post
    #2 17793679
    excray
    Poziom 41  
    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
    #3 17793830
    BlueDraco
    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.
  • #4 17793837
    wayne1996
    Poziom 5  
    @BlueDraco a z twojego doświadczenia wynika, że lepiej użyć gotowego scalaka, czy sterować bezpośrednio z MCU?

    Pozdrawiam
  • #5 17793881
    kaczakat
    Poziom 34  
    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.
    Pomogłem? Kup mi kawę.
  • #6 17793994
    ex-or
    Poziom 28  
    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)
  • #7 17794081
    excray
    Poziom 41  
    Przy SCT nie robisz multipleksowania. Masz jeden scalak na 2 wyświetlacze.
  • #8 17794117
    ex-or
    Poziom 28  
    No tak, w ten sposób to pełna zgoda. Ja się jakoś zafiksowałem na wyświetlaczu kilkucyfrowym gdzie wyjście katod jest wspólne :D .
  • #9 17794885
    BlueDraco
    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.
  • #10 17795011
    excray
    Poziom 41  
    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ł.
  • #11 17795123
    BlueDraco
    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.
  • #12 17795148
    excray
    Poziom 41  
    Sam program Ci nic nie wyświetli. Potrzebujesz jeszcze elektroniki do tego, a to samo się nie zrobi.
  • #13 17799419
    tmf
    VIP Zasłużony dla elektroda
    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.
REKLAMA