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

[ATmega8][BASCOM] Problem z wyświetlaczem LCD [Sterownik CO]

niebieski326 18 Cze 2009 11:59 5663 24
REKLAMA
  • #1 6671544
    niebieski326
    Poziom 18  
    Witam!
    Mam problem z wyświetlaczem LCD w moim sterowniku C.O. poniżej zamieszczam schemat:
    [ATmega8][BASCOM] Problem z wyświetlaczem LCD [Sterownik CO]
    Problem jest taki, że na wyświetlaczu mam prostokąty zamiast tekstu. Połączenia są dobre na 100%, mikrokontroler też się programuje ponieważ diody działają.

    
    $regfile = "m8def.dat"
    $crystal = 1000000
    Config Lcd = 16 * 1a
    Config Lcdpin = Pin , Db4 = Portb.3 , Db5 = Portb.2 , Db6 = Portb.1 , Db7 = Portb.0 , E = Portb.4 , Rs = Portb.5
    Config Portd = &B11111111
    Portd = &B1111111
    Initlcd
    Do
    Cls
    Locate 1 , 1
    Lcd "Test sterownika"
    Toggle Portd.2
    Wait 5
    Toggle Portd.3
    Cls
    Loop
    End
    
  • REKLAMA
  • #2 6671973
    Ture11
    Poziom 39  
    Witam.
    Ile prostokątów masz na wyświetlaczu? Połowę długości czy cały?
    Jak masz ustawiony kontrast? - bywa, że za duży uniemożliwia odczytywanie.
    Po co jest komenda initlcd? Nigdy jej nie stosowałem i wszystko działało.
    Czy na pewno podłączyłeś 5 pin lcd do masy?
  • #3 6672040
    niebieski326
    Poziom 18  
    Prostokątów mam 16 czyli całą pierwszą linię, ustawianie kontrastu nic nie daje, o komendzie initlcd wyczytałem na forum ale bez niej też nie działa. 5 pin LCD jest połączony z masą na 100%. A może jeśli podłączyłem LCD do lini programowania to trzeba je jakoś wyłączyć aby działały tylko z LCD??
    PS: Z ustawieniami 16*1, 16*1a, 16*2 też próbowałem.
  • #4 6672068
    Ture11
    Poziom 39  
    No ale wyświetlacz to jest jak na schemacie 16x2 czy jak w programie 16x1?
    Wnioskuje, że 16x2, więc kwadraty na długości całej linii oznaczają "self test " wyświetlacza, czyli do lcd nie dochodzą któreś sygnały, najprawdopodobniej ENABLE.
    Jeżeli masz oscyloskop, sprawdź, czy na wszystkich kanałach jest jakiś sygnał.
  • #5 6672078
    niebieski326
    Poziom 18  
    Wyświetlacz to 16x2.
    Oscyloskopu nie mam, jest jakiś inny sposób aby to sprawdzić?
  • REKLAMA
  • #6 6672116
    Darek966
    Poziom 2  
    Odłącz kabel od programowania wyłącz i włącz zasilanie
  • #7 6672128
    niebieski326
    Poziom 18  
    Bez kabla uruchamiam i nie działa.
  • #8 6674193
    Konto nie istnieje
    Poziom 1  
  • #9 6675302
    niebieski326
    Poziom 18  
    Bez initlcd też nie działa, konfigurowałem inny wyświetlacz niż 16*2 by zobaczyć czy też nie działa na innych. Kontrast jest dobrze, tak jak na schemacie, mogę go regulować, prostokąty znikają a jak wezmę kontrast na maks. to mam 2 linie prostokątów.
    50 punktów dla osoby dzięki, której uda się wyświetlić napis "Test" bez zmiany pinów, do których podłączony jest LCD ponieważ płytka jest już zrobiona
  • REKLAMA
  • #10 6675648
    Robewit
    Poziom 26  
    Program wygląda dobrze, choć ja usunąłbym "Initlcd" bo jest niepotrzebne, ale to nie jest przyczyna złego działania. Jeśli masz możliwość to podmień LCD, lub przed tym profilaktycznie dołącz bezpośrednio na jego zasilanie dodatkowy kondensator 10uF. Czy diody migają co 5 sekund? Na schemacie nie ma rezonatora kwarcowego, czy tak jest w układzie?
  • #11 6675852
    wicy
    Poziom 22  
    Miałem podobny problem. Wyświetlacz i prostokąty. Okazało się, że połączenie było dobre, prostokąty znikały ale.... po bardzo długim czasie. Bardzo długo trwał reset i uP chodził kolkakrotnie wolniej niż zakładałem.
    Zajrzyj w fuse bytes, czy nie masz ustawionego wewnętrznego oscylatora. Jak na mój gust rozjeżdza się wartość wew. oscylatora i $crystal w programie.
  • #12 6676079
    niebieski326
    Poziom 18  
    Wyświetlacze podmieniałem i nic. Co do oscylatora to zaraz poszukam jak ustawić fuse na zewnętrzny i wrzucę 12MHz tylko czy kondensatory mogą być 39pF?
  • REKLAMA
  • #13 6678114
    janbernat
    Poziom 38  
    Nie widać na schemacie kwarcu i kondensatorów-uważaj co robisz.
    Wyrzuć wszystko co niepotrzebne w pętli.
    Zostaw:
    Do
    Cls
    Lcd "Test sterownika"
    Wait 1
    Loop :end
  • #14 6678341
    niebieski326
    Poziom 18  
    Ok, zastosuje się do wszystkich wskazówek a o wynikach napiszę najwcześniej w środę ponieważ teraz mnie nie będzie przez chwile i czekam na nowy programator na USB.
  • #15 6679149
    zby

    Poziom 15  
    Pojedyńcza linia zaciemniona na wyswietlaczu oznacza że lcd nie dostał sekwencji inicjującej do pracy w 2 liniach. Może wystarczy przed Initlcd dać krótką pauze aby najpierw uruchomił się wyświetlacz a potem procesor przesłam mu to co potrzeba. Masz małą pojemność na resecie i całkiem możliwe że procesor wysyła sekwencje Initlcd w próżnie zanim lcd jest w stanie to odebrać.
  • #16 6680895
    wicy
    Poziom 22  
    To ciekawe co piszesz. Właśnie klecę układ na ATMega16 i identycznej aplikacji jeśli idzie o podłączenie LCD. Procesor nie ma żadnych pojemności na resecie, wyłącznie 10k do VCC. Fuse ustawione na zewnętrzny kwarc 8MHz i najszybszy reset. LCD inicjuje się przed procesorem bez żadnych dopisków w Bascom (wyłącznie config lcd) a cały układ wstaje bez problemów za każdym razem.
  • #17 6682073
    anelrob
    Poziom 11  
    Problem jest taki, że na wyświetlaczu mam prostokąty zamiast tekstu. Połączenia są dobre na 100%, mikrokontroler też się programuje ponieważ diody działają.

    Dołącz DB0,DB1,DB,DB3 również do masy.
  • #18 6682271
    zby

    Poziom 15  
    A spawdziłeś w dokumentacji wyświetlacza jak ma być zasilany, bo ja już się raz spotkałem z taką zmyłką Link, czy GND i VCC odwrotnie. Na schemacie masz jak dla klasycznego GND na 1 i VCC na 2.
    U mnie wtedy wyświetlacz był gorący ale się nie uszkodził.
  • #19 6686591
    nouki
    Poziom 25  
    Zdaje mi się że kiedyś to przerabiałem - wyświetlacz 16x1a.



    zobacz to
    
    
    $regfile = "m8def.dat" 
    $crystal = 1000000 
    Config Lcd = 16 * 1a 
    Config Lcdpin = Pin , Db4 = Pb.3 , Db5 = Pb.2 , Db6 = Pb.1 , Db7 = Pb.0 , E = Pb.4 , Rs = Pb.5 
    
    
    Do 
    Upperline
    Lcd "  W I T A J "
    Toggle Portd.2 
    Wait 5 
    Toggle Portd.3 
    Cls 
    Loop 
    End 
    
    


    z locate nie działało mi na 16x1a:)

    do 16x2- działa bo sprawdzałem
    
    $regfile = "m8def.dat" 
    $crystal = 1000000 
    Config Lcdbus = 4
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Pb.3 , Db5 = Pb.2 , Db6 = Pb.1 , Db7 = Pb.0 , E = Pb.4 , Rs = Pb.5
    Cursor Off
    
    do
    locate 1,1
    Lcd "  W I T A J "
    Toggle Portd.2 
    Wait 5 
    Toggle Portd.3 
    Cls 
    Loop 
    End 
    
    
  • #20 6690515
    Mariusz_N
    Poziom 18  
    A ja bym na Twoim miejscu dołożył linijkę

    Config Portb = &B11111111

    bo chyba zapomniałeś
  • #21 6690957
    stas_m
    Poziom 12  
    Spróbuj w ten sposób:
    
    $regfile = "m8def.dat"
    $crystal = 1000000
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portb.3 , Db5 = Portb.2 , Db6 = Portb.1 , Db7 = Portb.0 , E = Portb.4 , Rs = Portb.5
    
    Do
    Cls
    Locate 1 , 1
    Lcd "Test sterownika"
    Toggle Portd.2
    Wait 5
    Toggle Portd.3
    Cls
    Loop
    End


    Ważne abyś w ustawieniach programu ustawił te same porty
    i odłącz programator jak zaprogramujesz.
    Options>Compiler>LCD

    Dodałem znaczniki [code]
    [zumek]
  • #22 6692631
    Misiek_19
    Poziom 14  
    a przypadkiem pozostałych wolnych wyprowadzeń wyświetlacza nie powinno się podłączyć do masy?
  • #23 6698138
    depechdepech
    Poziom 11  
    Powinno się podpiąć pozostałe do masy.
    Do masy daję R/W, D0,D1,D2,D3.
  • #24 6698259
    RAFAŁ.M
    Poziom 19  
    Miałem podobny problem z wyświetlaczem BARTON BT21605ss
    też nie chciał współpracować (sprawdzałem 2 sztuki) .Wstawiłem wyświetlacz innej firmy i od razu ruszył.
  • #25 6702370
    niebieski326
    Poziom 18  
    Mam już nowy programator - jest to AVR-USB zgodny z STK500 V2 i razem z nim mam kolejny problem - wszystko podłączone jak trzeba i przy próbie wgrania flashu jest błąd:
    [ATmega8][BASCOM] Problem z wyświetlaczem LCD [Sterownik CO]
    Ustawienie zworki obniżającej częstotliwość w programatorze nic nie daje.

    ----
    Widzę, że nikt nie ma pomysłu co z tym zrobić, tak więc po nieudanej próbie z 8 ATmegą wpadłem na pomysł by kupić kilka nowych i uruchomić układ na płytce stykowej, zacznę od samego uC i LCD, potem będę dokładał inne elementy rozbudowując program i zobaczę w, którym miejscu przestanie działać. Tylko problem z programatorami bo w AVR-ISP jest błąd j.w. a STK200 nie może zidentyfikować żadnej ATmegi natomiast Sample Programmer (zrobiony na kilku rezystorach) czasami programuje.
REKLAMA