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

Jak usprawnić kalendarz na ATmega 8 z LCD 2x16 w Bascomie?

bishop 22 Mar 2006 22:50 3864 8
REKLAMA
  • #1 2446150
    bishop
    Poziom 16  
    Posty: 232
    Pomógł: 17
    Ocena: 27
    Wrzucam tutaj program który napisalem dla kolegi w bascomie. Kalendarz rozpoznaje dzien tygodnia wdg daty, uwzglednia lata przestepne. Jest to mój pierwszy tak rozbudowany program i możecie znaleźć w nim jakies niepotrzebne linie, za co przepraszam. Program na początku był prościutkim zegarkiem, ale pod naciskami znajomego rozbudowal sie.
    Na początku ustawiamy zegar za pomocą 2 przycisków (np microswitch) zwierając Pind.7 i Pinb.0 do masy (oczywiście do tychrze pinów musi być podciągniete logiczne 1 czyli 5 V przez jakis oporniczek. Za słowa krytyki się nie obrażę, a za dobre rady i sugestie będę wdzięczny :D. Pozdrawiam

    Dodano po 1 [minuty]:

    Zapomniałem o załączniku :D

    Dodano po 3 [minuty]:

    aaa... bo nie może być *.bas
    Załączniki:
    • zegar2.rar (1.53 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #2 2542193
    skartabel
    Poziom 12  
    Posty: 66
    Pomógł: 1
    Ocena: 45
    szkoda ze nie w C bo wlasnie to samo musze napisac w C
    chociaz raczje skorzystam z RTC
  • #3 2542444
    psooya
    Poziom 38  
    Posty: 5341
    Pomógł: 376
    Ocena: 572
    Witam
    Przeglądnąlem program jest bardzo czytenie napisany i ogólnie mi się bardzo podoba aczkolwiek jeszcze nie programowałem pocka ale spróbuje i od dawna chciałem to zrobić tylko też z wykożystaniem RTC. Błędów nie znalałem
    Pozdrawiam

    Dodano po 4 [minuty]:

    dodam że do
    If G < 10 Then
    Lcd "0"
    End If
    Lcd G

    Lcd ":"
    If M < 10 Then
    Lcd "0"
    End If
    Lcd M
    Lcd ":"
    If S < 10 Then
    Lcd "0"
    End If
    można napisac funkcje która to obliczy w zaleznosci od zmienenj podstawianej do funkcji myślę że zajmie troche mniej romu ale nie koniecznie a miało by być to tak np:
    declare sub Oblicz(liczba as byte)

    oblicz(liczba as byte)
    If liczba < 10 Then
    Lcd "0"
    End If
    Lcd liczba
    end sub

    a wywolanie
    np oblicz(s)
    pozdrawiam ponownie :)
  • REKLAMA
  • #4 2545120
    bishop
    Poziom 16  
    Posty: 232
    Pomógł: 17
    Ocena: 27
    A jednak wkradł się bug. Okazuje się że na koniec miecha zamiast miesiąca wzrasta minuta :). Wszystko przez literówkę gdzie zamiast miennej MI jest M. Przepraszam za ten błąd i wrzucam poprawioną wersję.
    Pozdrawiam

    PS. Jak ktoś chce to mogę dać program do odczytu temperatury z LM335.
    Załączniki:
    • zegar2.rar (1.53 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #5 2583113
    tomba
    Poziom 17  
    Posty: 275
    Pomógł: 11
    Ocena: 18
    Witam
    ja bym poprosił obsługę LM335
  • #6 2583148
    bishop
    Poziom 16  
    Posty: 232
    Pomógł: 17
    Ocena: 27
    LM335 z dokładnością do .5 stopnia
    Załączniki:
    • lm335.rar (939 Bajtów) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #7 2679912
    bishop
    Poziom 16  
    Posty: 232
    Pomógł: 17
    Ocena: 27
    Na "liczne" prośby dodaję schematy obu układów.
    Niestety padł mi eagle i zrobiłem je po partyzancku......
    Załączniki:
    • Jak usprawnić kalendarz na ATmega 8 z LCD 2x16 w Bascomie? termometr.jpg (69.19 KB) Musisz być zalogowany, aby pobrać ten załącznik.
    • Jak usprawnić kalendarz na ATmega 8 z LCD 2x16 w Bascomie? zegar.jpg (91.21 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #8 2707251
    hammett89
    Poziom 11  
    Posty: 10
    Witam
    Z racji tego że potrzebowałem coś do szkoły zrobiłem ten kalendarz, fajnie chodzi jednak dopatrzyłem sie błędu:
    - mimo iż zauważyłeś że zamiast miesięcy skaczą minuty to i tak poprawiłeś tylko w jednym miejscu tą zmienną, a były trzy takie miejsca
    A tak poza tym to wprowadziłem pare mod'ów:
    - wyłączony został kursor
    - zdefiniowałem wyświetlacz (mimo iż wg polskiego helpa jeżeli jest wyświetlacz 16*2 nie trzeba go definiować to mi bez tej definicji uważał go za 8*2)
    - podciągnięte zostały porty przycisków do logicznego "1", przez co nie trzeba dawać rezystorków
    - główne napisy zostały wyśrodkowane i ułożone w dwóch liniach
    - oraz zmieniłem lekko wygląd wyświetlacza, wygląda mniej więcej tak :
    " 17:01:25 "
    "Sro 7 Cze 2006"
    - zmieniłem jeszcze kolejność dni w kodzie bo jakoś mi to nie pasowało

    Zaobserwowałem jeszcze taka rzecz, że gdy ustawimy jakiś rok po roku przstępnym to źle określa dzień tygodnia ale przy normalnym chodzie będzie wszystko ok.

    A tak mam nadzieje że reszta jest ok !
    W załączniku jest poprawiona wersja z mod'ami
    Pozdrawiam
    Piotrek
    Załączniki:
    • zegar3.rar (1.56 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #9 2707266
    bishop
    Poziom 16  
    Posty: 232
    Pomógł: 17
    Ocena: 27
    Przyznaję się bez bicia że nie testowałem tego programu(tak dogłębnie). Natomiast bardzo pozytywne jest to iż teraz uczą takich rzeczy w szkole.
    Dzięki za wytknięcie tych błędów.

    Dodano po 1 [minuty]:

    Z tymi rezystoorami to u mnie jest różnie. Jedna atmega chula bez nich a jedna zaczyna wariować. Wolę je dać.

Podsumowanie tematu

✨ Dyskusja dotyczy programu kalendarza i zegara napisanego w Bascomie dla mikrokontrolera ATmega8 z wyświetlaczem LCD 2x16. Program uwzględnia dni tygodnia, lata przestępne oraz umożliwia ustawianie czasu za pomocą dwóch przycisków podłączonych do portów Pind.7 i Pinb.0 z podciąganiem do 5 V. Wskazano błąd literówki powodujący nieprawidłowe zwiększanie minut zamiast miesięcy, który został poprawiony. Zaproponowano optymalizację wyświetlania czasu poprzez funkcję obsługującą dodawanie zer wiodących. Wprowadzono modyfikacje takie jak wyłączenie kursora, definicja wyświetlacza LCD, podciągnięcie portów przycisków do logicznego "1" bez konieczności stosowania rezystorów oraz poprawę estetyki wyświetlacza. Zauważono problem z określaniem dnia tygodnia po roku przestępnym. W dyskusji pojawiła się propozycja wykorzystania modułu RTC zamiast programowego liczenia czasu oraz omówienie pomiaru temperatury za pomocą czujnika LM335 z dokładnością do 0,5°C wraz z udostępnieniem schematów układów. Poruszono kwestię stabilności działania przycisków z rezystorami podciągającymi, które w niektórych przypadkach są konieczne.
Wygenerowane przez model językowy.
REKLAMA