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

Krzaki na wyświetlaczu LCD w zegarku Bascom na ATmega8535 - jak naprawić?

pycia 27 Wrz 2007 16:49 1634 2
REKLAMA
  • #1 4325189
    pycia
    Poziom 11  
    Posty: 63
    Ocena: 1
    Witam!
    napisalem w bascomie programik ktory ma dzialac jako zegarek, kod wyglada jak poniżej. I pojawił się problem: ciagle pojawiające się krzaczki na wyświetlaczu;/. Dzieje się to w przypadkowych momentach wykonywania ponizszego programu. Czasami uda sie nastawic i date i czas, a przewaznie krzaczki sie pojawiaja zaraz po ustawieniu daty ;/. Miał ktoś podobny problem? moze ktos mi z tym pomoc?? thx
    
    $regfile = "m8535.dat"
    $crystal = 8000000
    
    
    Config Porta = &B00001111                                   'wyprowadzenia PA4=up i PA5=down i PA7=ok to wejścia, reszta portu to wyjścia
    Porta = &B11111111
    Config Portb = &B11111111                                   'cały port jako wyjścia a  wyjscia
    Portb = &B11111111
    
    Config Lcd = 16 * 2                                         'inicjalizacja wyswietlacza
    Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5
    
    Cursor Off
    Cls
    
    Config Clock = Soft
    Config Date = Dmy , Separator = /
    
    Disable Interrupts
    
    Gosub Ustaw_date
    Gosub Ustaw_czas
    Enable Interrupts
    Cls
    
    
    Do
       Home Upper
       Lcd Time$
       Home Lower
       Lcd Date$
    
    Loop
    '=======PODPROGRAMY======
    Ustaw_date:
     Home Upper
     Lcd "Wprowadz date"
     _year = 0
     _month = 0
     _day = 0
    
    Do
     If Pina.4 = 0 Then                                         'dzien up
        Waitms 50
         Do
         Loop Until Pina.4 = 1
         Incr _day
         Gosub Wysw_date
     End If
    
     If Pina.5 = 0 Then                                         'dzien down
        Waitms 50
         Do
         Loop Until Pina.5 = 1
         Decr _day
         Gosub Wysw_date
     End If
    Loop Until Pina.7 = 0                                       'OK
    Wait 2
    Do
     If Pina.4 = 0 Then                                         'miesiac up
        Waitms 50
         Do
         Loop Until Pina.4 = 1
         Incr _month
         Gosub Wysw_date
     End If
    
     If Pina.5 = 0 Then                                         'miesiac down
        Waitms 50
         Do
         Loop Until Pina.5 = 1
         Decr _month
         Gosub Wysw_date
     End If
    Loop Until Pina.7 = 0
    Wait 2
    Do
     If Pina.4 = 0 Then                                         'rok up
        Waitms 50
         Do
         Loop Until Pina.4 = 1
         Incr _year
         Gosub Wysw_date
     End If
    
     If Pina.5 = 0 Then                                         'rok down
        Waitms 50
         Do
         Loop Until Pina.5 = 1
         Decr _year
         Gosub Wysw_date
     End If
    Loop Until Pina.7 = 0                                       'ok
    Wait 2
    Return
    
    Ustaw_czas:
     Cls
     Cls
     Home Upper
     Lcd "Wprowadz czas"
     _hour = 0
     _min = 0
    
    Do
     If Pina.4 = 0 Then                                         'godziny up
        Waitms 50
         Do
         Loop Until Pina.4 = 1
         Incr _hour
         Gosub Wysw_czas
     End If
    
     If Pina.5 = 0 Then                                         'godziny down
        Waitms 50
         Do
         Loop Until Pina.5 = 1
         Decr _hour
         Gosub Wysw_czas
     End If
    Loop Until Pina.7 = 0                                       'OK
    Wait 2
    Do
     If Pina.4 = 0 Then                                         'minuty up
        Waitms 50
         Do
         Loop Until Pina.4 = 1
         Incr _min
         Gosub Wysw_czas
     End If
    
     If Pina.5 = 0 Then                                         'minuty down
        Waitms 50
         Do
         Loop Until Pina.5 = 1
         Decr _min
         Gosub Wysw_czas
     End If
    Loop Until Pina.7 = 0                                       'ok
    Return
    
    Wysw_czas:
     Cls
     Waitms 10
     Home Upper
     Lcd "gg:mm:ss"
     Home Lower
     Lcd Time$
    Return
    
    Wysw_date:
     Cls
     Waitms 10
     Home Upper
     Lcd "dd/mm/yy"
     Home Lower
     Lcd Date$
    Return
    
    End
    
  • REKLAMA
  • #2 4328303
    pycia
    Poziom 11  
    Posty: 63
    Ocena: 1
    hmm zostawiłem układ załączony na noc i w zasadzie ciagle liczy czas.. Dane się tracą potem znowu sie pojawiają itd. I oprocz rzeczy ktore ma wyswietlac pojawiaja sie dalej jakies bzdety;/ Czy może ma to jakis związek z przepełnianiem jakiegos bufora wyświetlacza??
  • #3 4344626
    pycia
    Poziom 11  
    Posty: 63
    Ocena: 1
    Dzieki za brak pomocy, przez to musialem sam pokombinowac. A wystarczyło petle główną zrobić pustą i obsługe wyświetlania wrzucic do podprogramu sectic wywoływanego co 1sek. Moze sie komus przyda, pozdro
    Cytat:


    Config Lcd = 16 * 2 'inicjalizacja wyswietlacza
    Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5

    Cursor Off
    Cls

    Config Clock = Soft , gosub = sectic
    Config Date = Dmy , Separator = /

    Disable Interrupts

    Gosub Ustaw_date
    Gosub Ustaw_czas
    Enable Interrupts
    Cls


    Do


    Loop

    sectic:
    Home Upper
    Lcd Time$
    Home Lower
    Lcd Date$
    return

REKLAMA