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

Zegarek atmega 8 i LCD 4x20

ugh123 02 Sty 2010 23:25 7435 11
  • #1 7475430
    ugh123
    Poziom 13  
    Witam wszystkich :D
    Chciałbym wam przedstawić mój nowo zbudowany zegarek na uP Atmega 8 i jako wyświetlacz użyłem LCD 4x20 . Całość zmontowałem na uniwersalnej płytce . Atmega pracuje na wewnętrznym oscylatorze ustawionym na 8 Mhz , do procka podlączyłem kwarc zegarkowy Program przy pomocy kolegi Stefana pisałem w Bascom zdjecia zalącze jutro rano ponieważ muszę zrobić dzisiaj zamieszczam kod programu
    $regfile = "m8def.dat"
    $crystal = 8000000
    Config Lcd = 20 * 4
    Config Lcdpin = Pin , Db4 = Portd.2 , Db5 = Portd.3 , Db6 = Portd.4 , Db7 = Portd.5 , E = Portd.1 , Rs = Portd.0
    Config Clock = Soft
    Config Date = Dmy , Separator = /
    Time$ = "00:00:00"
    Date$ = "01/01/10"
    Config Pinb.0 = Input : Set Portb.0 : S1 Alias Pinb.0
    Config Pind.7 = Input : Set Portd.7 : S2 Alias Pind.7
    Config Pind.6 = Input : Set Portd.6 : S3 Alias Pind.6
    Config Pinc.4 = Input : Set Portc.4 : S4 Alias Pinc.4
    Config Pinc.3 = Input : Set Portc.3 : S5 Alias Pinc.3
    Config Pinc.2 = Input : Set Portc.2 : S6 Alias Pinc.2
    Buzzer Alias Portb.2
    Config Rc5 = Pinb.1
    Deflcdchar 0 , 31 , 31 , 31 , 31 , 31 , 31 , 31 , 31        ' replace ? with number (0-7)
    Deflcdchar 1 , 32 , 27 , 27 , 32 , 4 , 17 , 17 , 14         ' replace ? with number (0-7)
    Deflcdchar 3 , 31 , 31 , 31 , 31 , 31 , 31 , 31 , 31        ' replace ? with number (0-7)
    Cursor Off
    Cls
    Lcd " Zegarek by Bartek"
    Lowerline
    Lcd "      Ver 1.0"
    Thirdline
    Lcd " Bascom AVR"
    Dim A As Byte
    Fourthline
    For A = 0 To 19
    Waitms 250
    Lcd Chr(3)
    Next
    Waitms 200
    Sound Buzzer , 500 , 250
    Wait 1
    Gosub Ustawianie
    Ustawianie:
    Disable Interrupts
    Cls
    Lcd "Ustawianie czasu"
    
    Do
    Lowerline
    Lcd ; Spc(5) ; Time$
    If S3 = 0 Then Gosub Godz
    If S2 = 0 Then Gosub Minuty
    If S1 = 0 Then Gosub Sekundy
    If S4 = 0 Then Exit Do
    If _hour = 24 Then _hour = 00
    If _min = 60 Then _min = 00
    If _sec = 60 Then _sec = 00
    Loop
    
    Cls
    Sound Buzzer , 500 , 250
    Waitms 850
    Enable Interrupts
    Wroc:
    Lcd " Godzina"
    Do
    Lowerline
    Lcd ; Spc(4) ; Time$ ; Spc(8)
    If Time$ = "22:40:00" Then Gosub Dzwiek
    If S5 = 0 Then Gosub Dzwiek
    If S6 = 0 Then Gosub Ustawianie
    Loop
    
    Godz:
    Incr _hour
    Waitms 100
    Return
    Minuty:
    Incr _min
    Waitms 100
    Return
    Sekundy:
    Incr _sec
    Waitms 100
    Return
    Dzien:
    Incr _day
    Waitms 100
    Return
    Mies:
    Incr _month
    Waitms 100
    Return
    Rok:
    Incr _year
    Waitms 100
    Return
    
    Dzwiek:
    Cls
    Lcd "Alarm Budzik"
    Sound Buzzer , 1000 , 150
    Waitms 100
    Sound Buzzer , 800 , 250
    Waitms 100
    Sound Buzzer , 1300 , 400
    Waitms 100
    Sound Buzzer , 400 , 100
    Waitms 100
    Sound Buzzer , 600 , 600
    Waitms 100
    Sound Buzzer , 1000 , 500
    Waitms 100
    Reset Buzzer
    Cls
    Gosub Wroc
    
    End
    
    

    Wszelkie komentarze oraz sugestie mile widziane.
    Pozdrawiam serdecznie . Bartek
  • #2 7475599
    Mamut
    Poziom 18  
    Po co podłączasz rezonator kwarcowy, skoro działasz na wewnętrznym RC?
  • #3 7475888
    zumek
    Poziom 39  
    Mamut napisał:
    Po co podłączasz rezonator kwarcowy, skoro działasz na wewnętrznym RC?

    Proszę skojarzyć z Real Time Counter with Separate Oscillator
  • #4 7476780
    Mamut
    Poziom 18  
    Kojarzyć to ja kojarzę, ale nie myslalem ze ATMega8 też to posiada. :-)
  • #5 7476815
    veronic22
    Poziom 9  
    zumek napisał:
    Mamut napisał:
    Po co podłączasz rezonator kwarcowy, skoro działasz na wewnętrznym RC?

    Proszę skojarzyć z Real Time Counter with Separate Oscillator


    A ja nie kojarzę dlatego tym bardziej poproszę o schemat :) Kod już jest więc się przekonam jak to działa. Pozdrawiam
  • #6 7479873
    ugh123
    Poziom 13  
    Witam
    Co do tego kwarcu zegarkowego to opierałem się o fragment pliku pomocy "Ten przykład pokazuje jak używać specjalnych zmiennych TIME$ i DATE$

    'Użycie procesora AT90s8535 (i licznika TIMER2) oraz Mega103 (licznika TIMER0)

    'pozwala na łatwe zaimplementowanie zegara czasu rzeczywistego,

    'dołączając zewnętrzny rezonator 32.768KHz do licznika.

    'Potrzebny będzie także pewien fragment kodu.

    (c) Zbigniew Gibek, 2002-2003 (c) MCS Electronics, 1999-2003
    ".

    Niżej zamieszczam "schemat" rysowalem go w paint ponieważ nie umiem tego robić w eagle

    Zegarek atmega 8 i LCD 4x20
  • #7 7480232
    ElektroTME
    Poziom 14  
    Witam,
    jak z dokładnością Twojego zegara?
    prawdę mówiąc ostatnio próbowałem zrobić zegar na atmedze8 wykorzystując kwarc zegarkowy. Efekt był taki, że zegar śpieszył się 3s na minutę.
    Czego to mogło być skutkiem?
    Kwarc zegarkowy na 100% dobry, na płytce starter kitu z megą16 działa równiutko.
    Czy to może być brak cewki i kondensatora przy napięciu referencyjnym AVcc?
  • #8 7481075
    ugh123
    Poziom 13  
    Do kolegi ElektroTME , nie wiem dlaczego tak się działo w twoim przypadku , ja miałem podobny problem tez zegarek nie działał jak trzeba ale była to wina uszkodzonego kwarcu zegarkowego , wracając do dokładności to nie narzekam jak narazie nie zauważyłem żeby się spieszył bądź puźnił chodzi całkiem przyzwoicie ja nie uzyłem cewki na zasilaniu i jest wpożądku
  • #9 7481116
    ElektroTME
    Poziom 14  
    Więc zostają 2 możliwości, albo program coś mieszał w odliczaniu czasu(może przerywałem timer0 timerem1 ale to powinno powodować opóźnienia!)albo atmega zła :P
    Mniejsza, teraz zrobiłem go na pcfie, wystarczy program dopieścić :P
  • #10 7481201
    Vatras
    Poziom 12  
    Witam, pamiętajcie również, że sam kwarc jest podatny na zmiany temperatury. Teoretycznie kryształ jest zamknięty w puszcze która powinna zapewnić mu stałą temperaturę pracy to i tak czasem potrafi "pływać".
    Pozdrawiam.
  • #11 7519790
    elektron1956
    Poziom 14  
    Jesli chodzi o dokladnosc to ja robie na DCF77 i chodzi co do joty.Nie trzeba ustawiac
    czasu , synchronizuje sie po 2 minutach.
  • #12 7520345
    Szucio
    Poziom 14  
    Porównaj koszt twojego DCF77 z kosztem kwarcu zegarkowego (~40 gr).
REKLAMA