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

[ATmeg32][C] Dodawanie i odejmowanie ZL10AVR licznik

Therotos 05 Cze 2011 20:30 1629 10
REKLAMA
  • #1 9580036
    Therotos
    Poziom 10  
    Witam,
    Moim zadaniem jest napisanie programu w c dla płytki ZL10AVR, który pokazujące na wskaźnikach LED stan licznika. Wartość licznika powinna być zwiększana za pomocą jednego klawisza, a zmniejszana za pomocą drugiego klawisza (maksymalna zliczana wartość 99), a za pomocą trzeciego klawisza wartość licznika resetowana. Oprócz tego ma się wydobywać jakiś dźwięk w czasie wciskania klawisza.

    Póki co udało się napisać coś takiego. Prosiłbym bym Was forumowiczów abyście sprawdzili czy ten kod jest poprawnie napisany oraz o pomoc przy wyświetlaniu stanu licznika. Może objąłem złą koncepcję. Stworzyłem tablicę znaków od 0 do 9 i nie mam pomysłu na to jak zrobić to dodawanie i odejmowanie za pomocą klawiszy, żeby odpowiednią wartość wyświetlało na wskaźnikach LED siedmiosegmentowych.

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
    [/code]
  • REKLAMA
  • #2 9580080
    GSM
    Poziom 25  
    Witam,

    kod najpiękniejszy nie jest (sposób pobierania wartości z tablicy), ale przynajmniej jest :roll:
    Pytanie brzmi: "Na czym polega twój problem?", bo jak na razie nam tego nie wyjawiłeś.

    Pozdrawiam,
    GSM
  • #3 9580110
    Therotos
    Poziom 10  
    Moim problemem jest zrobienie tego wyświetlania aktualnego stanu licznika. Stan początkowy wiadomo 0. Naciskam klawisz pierwszy i dodaje 1 do licznika itd. Nie wiem jak oprogramować wyświetlania gdy stan licznika będzie przyjmował 10 i wyższe wartości.
  • REKLAMA
  • #4 9580152
    GSM
    Poziom 25  
    Jak rozumiem to masz tam 2 wyświetlacze siedmiosegmentowe, tak?
    Poszukaj o czymś co nazywa się multipleksowanie.
    Podpowiem, że do obsługi wyświetlacza przyda się TIMER.

    Pozdrawiam,
    GSM
  • REKLAMA
  • #5 9580565
    Therotos
    Poziom 10  
    Ta płytka wygląda dokładnie tak:
    ZL10AVR
    Także nie wiem jak to interpretować :) także nie wiem czy to są 4 wyświetlacze LED czy jeden :P Noga jestem z tego :) no ale ja mam wykorzystać dwa takie, żeby móc wyświetlić liczby dwucyfrowe.]Link[/url]
  • #6 9580657
    GSM
    Poziom 25  
    Widzę, że kolega się do nauki nie bardzo przykłada :!:
    Proszę "pogooglować" o zagadnienie które wymieniłem.

    Nikt tu za ciebie nie będzie studiował.

    Pozdrawiam,
    GSM
  • #7 9581249
    Therotos
    Poziom 10  
    Ok, coś pokombinowałem. Teraz proszę o sprawdzenie czy to dobrze zrobiłem :)
    Kod trochę poprawiłem.
    [Edit] Jeśli chodzi o kod to na pewno jest on napisany bezbłędnie. Tylko teraz pytanie jest takie czy spełnia on założenia tego co miałem zrobić? Niestety nie posiadam płytki, żeby to przetestować, ale ktoś bardziej doświadczony ode mnie może będzie wiedział czy ten kod będzie wykonywał to co ma.
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #8 9589130
    GSM
    Poziom 25  
    Witam,

    nie zagłębiam się teraz zbytnio w ten kod ale 3 rzeczy mi się rzuciły w oczy:
    1. 1Hz to za mało, wyświetlacze muszą się tak szybko "podmieniać", ażeby oko tego nie zauważyło - o to właśnie w tym chodzi.
    2.
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Gubisz się w zeznaniach to preskaler chcesz mieć 64 czy 256?
    3. Nazywanie wielu zmiennych tą samą nazwą szczególnie gdy mamy jeszcze taką samą globalną nie jest dobrym pomysłem, program zadziała ale łatwo się jest pogubić, poza tym co robi volatile przez zmienną w funkcji Sound? - Bez sensu.

    Pozdrawiam,
    GSM
  • #10 9589305
    Therotos
    Poziom 10  
    No niestety :) przez praktyki zagraniczne nie mogłem uczęszczać na zajęcia z tego, a przedmiot trzeba jakoś zaliczyć.

    Wracając do tematu:
    to co warto wybrać: preskaler 64 czy 256?
    i ile Hz ustawić, żeby to "podmienianie" nie było widoczne dla ludzkiego oka?
    Niestety nie mam do tego płytki i nie mogę robić metodą prób i błędów. Liczę na Wasze doświadczenie w tej dziedzinie :)
  • REKLAMA
REKLAMA