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

[attiny2313][bascom]problem z LCD

thralll 11 Paź 2008 23:04 2420 15
REKLAMA
  • #1 5622603
    thralll
    Poziom 13  
    Od niedawna zajmuje się programowaniem mikrokontrolerów, przyszedł czas, aby pobawić się wyświetlaczem LCD i zaczęły się schody.

    Wyświetlacz który podłączyłem to TC1602A (nota katalogowa http://www.abcd8.com/MANNUL/YC162A.pdf )
    Całość podłączona do attiny na płytce prototypowej za pośrednictwem goldpinów z przylutowaną doń odpowiednio taśmą.

    Na 99% całość jest odpowiednio podłączona (zadeklarowałem odpowiednio podłączenie LCD w bascomie),
    kod wygląda następująco:
    
    $crystal = 4000000
    initlcd
    
     Cls
     Lcd "Hello! "
     Wait 1
     Lowerline                                                  'wybieramy drugą linię
     Wait 1
     Lcd "World!"
    
    
    End
    
    


    Problem polega na tym, że wyświetlacz "świruje" tzn kolejno wyświetla różne dziwne znaki zamiast upragnionego tekstu.
    Wydaje mi się, że winny jest tu program, który tym steruje i za bardzo nie wiem jak sobie z tym poradzić.
    pozdrawiam
    thralll
  • REKLAMA
  • REKLAMA
  • #3 5622740
    thralll
    Poziom 13  
    Fusy raczej dobrze ustawione.
    Deklaracja w sofcie nic nie zmieniła.
  • REKLAMA
  • #4 5622750
    Balu
    Poziom 38  
    Myślę, że warto ją pokazać...
    Bo ja zgadywać nie będę:>
    Inne z głowy -> db4...7 napewno dobrze podpięte,
    db0...3 na masie / wiszą?
    RW na masie?
    RS i E dobrze podpięte?
    Fusy raczej dobrze? czy dobrze?
  • #5 5622771
    dawid512
    Poziom 32  
    Na pewno nie musisz robić initlcd bo to zawiera się w cls. Jeżeli wyświetlacz pokazuje głupoty to znaczy że na pewno masz coś nie tak z podłączeniem go. Fuse bity raczej nie mają na to wpływu ale i tak lepiej je sprawdź. Nie wiem dlaczego Balu tego nie zauważył ale brakuje ci najważniejszego: zadeklarowania jakiego µc używasz.
  • Pomocny post
    #7 5622777
    karlos79
    Poziom 33  
    Witam
    Wkleję Ci przykładowy kod, reszta należy do Ciebie.

    
    $crystal = 4000000
    $regfile = "m8def.dat" ' np. ATMEGA8 :)
    Config Lcd = 16 * 2 ' definiuje jaki wyświetlacz ma być podlączony
    Config Lcdpin = Pin , Db4 = Portd.5 , Db5 = Portd.4 , Db6 = Portd.3 , Db7 = Portd.2 , E = Portd.6 , Rs = Portd.7 ' podlączenie wyświetlacza do kontrolera
    Cursor Off' wyłącza kursor
     init lcd
     do
     Cls
     Lcd "Hello! "
     Wait 1
     Lowerline                                                  'wybieramy drugą linię
     Wait 1
     Lcd "World!" 
    loop
    end
    
    ' można też tak
    cls
     locate 1,1 : lcd " jakis tekst"
    wait 1
    cls
    locate 2,1 : lcd "jakiś tekst"
    wait 1
    


    Pozdrawiam
  • #8 5622787
    dawid512
    Poziom 32  
    Można i w menu choć wolę w programie(pewniejsze rozwiązanie) :P
  • REKLAMA
  • #9 5622788
    Balu
    Poziom 38  
    Jak się tak już szczypiemy z "przykładowym kodem" który można wyjąc z sample'a to w kolegi kodzie brakuje informacji o oscylatorze i typie procesora;P
    A do loop nie jest konieczne.
    Łukasz.
  • #10 5622808
    karlos79
    Poziom 33  
    Witam
    Poprawiłem ten "przykładowy kod" :P
    Pozdrawiam
  • #11 5622825
    thralll
    Poziom 13  
    d0 d3 wiszą w powietrzu, ale po podłączeniu do masy nic się nie zmienia.
    moja deklaracja wygląda następująco
    
    Config Lcdpin = Pin , Db4 = Portb.2 , Db5 = Portb.1 , Db6 = Portb.0 , Db7 = Portd.6 , E = Portb.3 , Rs = Portb.4
    Config Lcd = 16 * 2
    

    używam innych wejść niż standardowo, żeby nie wykorzystywać tych samych którymi programuje

    fusebit kla987 ustawiony na opcji 011101, 3.0-8.0Mhz cksel=1101 sut=01
    napisałem raczej, bo nie jestem pewien czy jest dobrze
  • #13 5623420
    thralll
    Poziom 13  
    Zwarć nie ma. LCD kupiony był wczoraj nie podłączyłem odwrotnie zasilania i nic co mogło by go uszkodzić, więc z tym do kosza to bym jeszcze poczekał.
    Diabeł tkwi w szczegółach i jak zwykle ja się muszę o tym przekonać. Dlatego może teraz warto spróbować czegoś innego, mam pomysł aby do nowego mikrokontrolera wgrać nowy soft i tu mam prośbę, aby ktoś podrzucił mi jakiś skompilowany już soft do sterowania wyświetlaczem, wraz z opisem do których linii podłączyć wyświetlacz (najlepiej jak będą trochę inne niż te które używam żeby wykluczyć błąd podłączenia), jeżeli to nie pomorze to przynajmniej będzie wiadomo, że to winna lcd.
  • Pomocny post
    #14 5623452
    Balu
    Poziom 38  
    Fajnie świetnie...
    A sam nie możesz Sobie skompilować?:>
    podany soft masz powyżej.
    Porty sam pozmieniaj:>

    Co do LCD niby małe szanse, ale może być nieżywy fabrycznie.
    Chociaż IMHO to winny jesteś Ty;)
    Upewnij się jeszcze raz czy na pewno masz te 4MHz - to by wiele tłumaczyło;-)
    Wpisz w sofcie 16000000 będą opóźnienia źle działały - będą trwały dłużej niż powinny :> Więc może LCD zadziała - spróbować warto:)
  • Pomocny post
    #15 5623694
    mirley
    Poziom 17  
    Witam

    Sprawdź czy napewno pin 5 (R/W) wyświtlacza jest zwarty do masy, bo bez tego LCD nic nie przyjmie do siebie?

    Zamieszczam skompilowany kod testowy:


    
    $regfile = "attiny2313.dat"
    $crystal = 4000000
    Config Portb = &B11111111 : Portb = &B11111111
    Config Portd = &B11111111 : Portd = &B11111111
    
    
    Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.3 , Rs = Portb.2
    Config Lcd = 16 * 2
    Cls
    Cursor Off Noblink
    
    
    Lcd "tekst 0123"
    Lowerline
    Lcd "1234 tekst"
    
    Do
    
    Loop
    End
    
    


    Wyświetli on statyczny tekst, piny do których podłączony jest LCD zobaczysz w kodzie powyżej
  • #16 5623938
    thralll
    Poziom 13  
    Działa!
    Tak głupi błąd, że aż szkoda gadać.
    Podpięte było wszystko w porządku, po załadowaniu programu kolegi Mirley, wszystko migało i raz na jakiś czas pojawiło się "4ekst 01" to mi dało do myślenia najpierw zacząłem wymieniać kwarc na inny - nie pomogło, potem przyjrzałem się zasilaniu wyświetlaczy i tak odkryłem, że przypadkiem zasilam jeszcze znajdujący się na płytce inwerter napięcia na NE555 taki jak tutaj: http://www.reconnsworld.com/power_voltinvert.html on był powodem zakłóceń po wyjęciu nieużywanych elementów całość pięknie działa.
    Jeszcze raz dziękuję za pomoc i poświęcony mi czas.
REKLAMA