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

LCD+Atmega8 - wyświetla kwadraciki. Co z wejściami D1-D3?

kotek205 12 Gru 2009 16:28 3168 22
  • #1 7378811
    kotek205
    Poziom 13  
    witam
    Mam taki problem. Chcę podłączyć wyświetlacz LCD 2x16 pod atmeg8. Problem polega na tym, że wyświetlacz zamiast wyświetlać napisu wyświetla kwadraciki. Podłączenie Lcd do atmega8 sprawdziłem kilka razy w wygląda, że wszystko ok. Tylko nie wiem co zrobić z wejściami D1-D3, zostawiłem je wolne.
    Podaje przykładowy program jaki wgrywałem do atmegi
    $crystal = 1000000
    Wait 2
    Lcd "tekst"
    wait 2
    Czy to jest poprawne, a jak nie to czego brakuje?
    Pozdrawiam
  • #2 7378896
    sp3ots
    Poziom 38  
    Witam !
    Nie można tu nic zaradzić bo:
    1. brak schematu
    2. brak konfiguracji LCD w Twoim programie.
    Pozdrawiam. Stefan gg6293398
  • #3 7378897
    mirekk36
    Poziom 42  
    A powiedz czy to takie ciężkie zajrzeć do helpa ? przecież tam masz gotowe i ładne przykłady jak to napisać żeby było dobrze.

    zajrzyj w helpie do Config LCD

    i obejrzyj przykład - zobaczysz w nim, że w kodzie programu wpisana jest linijka:

    Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Portc.7 , Rs = Portc.6

    jak myślisz do czego ona służy???? I nie słuchaj tych, którzy ci ew podpowiadają że ta linijka jest niepotrzebna

    Potem jeszcze raz sprawdź połączenia i wszystko ci ruszy
  • #4 7379142
    kotek205
    Poziom 13  
    skopiowałem gotowy program z helpa
    '--------------------------------------------------------------
    ' (c) 2000 MCS Electronics
    '--------------------------------------------------------------
    ' plik: LCD.BAS
    ' demo: LCD, CLS, LOWERLINE, SHIFTLCD, SHIFTCURSOR, HOME
    ' CURSOR, DISPLAY
    '--------------------------------------------------------------

    'Uwaga : Testowano z wyświetlaczem podłączonym za pomocą 4-bitów

    Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portd.0 , Db7 = Portd.1 , E = Portb.3 , Rs = Portb.2

    Rem Używając tej instrukcji można zmienić domyślne ustawienia w opcjach kompilatora

    Config Lcd = 16 * 2 'ustawiamy typ wyświetlacza
    'inne wartości: 16 * 4 , 20 * 4, 20 * 2 , 16 * 1a
    'Nie umieszczenie tej instrukcji spowoduje że wybrany będzie wyświetlacz 16 * 2
    '16 * 1a to wyświetlacz 2 linie po 8 znaków z liniowym odwzorowaniem pamięci

    '$LCD = address uaktywnia tryb komunikacji z wyświetlaczem za pomocą

    ' szyny danych dostępnej w systemach z pamięcią zewnętrzną.
    Dim A As Byte

    Cls 'kasujemy LCD
    Lcd "Witaj swiecie" 'wydrukujemy tekst w górnej linii
    Wait 1
    Lowerline 'wybieramy drugą linię
    Wait 1
    Lcd " Przesuwamy " 'wydrukujemy to w drugiej linii

    Wait 1

    For A = 1 To 10
    Shiftlcd Right 'przesuniemy tekst w prawo
    Wait 1 'czekamy aż wykona
    Next

    For A = 1 To 10
    Shiftlcd Left 'przesuniemy tekst w lewo
    Wait 1 'czekamy aż wykona
    Next

    Locate 2 , 1 'ustawiamy pozycje kursora

    Lcd "*" 'wydrukujemy to
    Wait 1 'czekamy aż wykona


    Shiftcursor Right 'przesuniemy kursor w prawo
    Lcd "@" 'drukujemy to
    Wait 1 'czekamy aż wykona

    Home Upper 'wybieramy 1 linię i wracamy na początek

    Lcd "Zastapiono" 'zastępujemy tekst
    Wait 1 'czekamy

    Cursor Off Noblink 'chowamy kursor
    Wait 1 'czekamy
    Cursor On Blink 'pokazujemy kursor

    Wait 1 'czekamy
    Display Off 'wyłączamy wyświetlacz

    Wait 1 'czekamy
    Display On 'i włączamy z powrotem

    '----------NOWOŚĆ! Obsługa czteroliniowych wyświetlaczy------
    Thirdline
    Lcd "Linia 3"
    Fourthline
    Lcd "Linia 4"
    Home Third 'wracamy na początek trzeciej linii
    Home Fourth
    Home F 'skróty też działają

    Locate 4 , 1 : Lcd "Linia 4"
    Wait 1

    'Teraz zdefiniujemy znak użytkownika
    'pierwszy bajt to kod znaku (0-7)
    'reszta to postać znaku
    'Użyj narzędzia LCD Designer

    Deflcdchar 1 , 225 , 227 , 226 , 226 , 226 , 242 , 234 , 228
    Deflcdchar 0 , 240 , 224 , 224 , 255 , 254 , 252 , 248 , 240

    Cls 'wybieramy Data RAM
    Rem Jest szczególnie ważne by po zdefiniowaniu znaków wykonać instrukcję
    Rem CLS, ponieważ przełączy to kontroler wyświetlacza na Data RAM

    Lcd Chr(0) ; Chr(1) 'drukujemy zdefiniowane znaki

    '---------- Teraz użyjemy wewnętrznej procedury ------------
    _temp1 = 1 'dana do rejestru ACC

    Rcall _write_lcd 'wyświetlamy

    End

    wgrałem go, teraz na wyświetlaczy migają kwadraty prostokąty i kreski czym to może być spowodowane?
    Sprawdziłem jeszcze raz podłączenie wydaje się ok,
    zostały tylko te wejścia do wyświetlacza D1-D3, co z nimi zrobić?
  • #5 7379171
    sp3ots
    Poziom 38  
    U mnie zawsze Db0,1,2,3 wiszą w powietrzu i działa.
  • #6 7379198
    mirekk36
    Poziom 42  
    kotek205 napisał:

    Sprawdziłem jeszcze raz podłączenie wydaje się ok,...

    No właśnie może ci się tylko wydaje - tzn nie chcę być absolutnie złośliwy pisząc to - ale skoro robisz coś takiego pierwszy raz - to zwykle tak bywa że wydaje się że wszystko jest dobrze


    kotek205 napisał:

    zostały tylko te wejścia do wyświetlacza D1-D3, co z nimi zrobić?

    tak jak pisał ktoś wyżej - one mają "wisieć w powietrzu" czyli do niczego nie mają być podłączone.


    Dlaczego nadal masz problem ??? - ja nadal obstawiam w takim razie połączenia - weź może zrób nawet komórką czy czymś lepszym fotkę i pokaż jak wygląda na żywo ten twój układ testowy to po pierwsze

    a po drugie pokaż schemat jak ty w ogóle dokonałeś tych połączeń to będzie można coś pomóc

    Bo co jak co - ale taki prosty test w Bascomie - zawsze działa ale to zawsze - pozostają tylko jak zwykle problemy z połączeniami u początkujących więc nie martw się
  • #7 7379380
    kotek205
    Poziom 13  
    zdjęcia już mam schemat zaraz dorzucę
    LCD+Atmega8 - wyświetla kwadraciki. Co z wejściami D1-D3? LCD+Atmega8 - wyświetla kwadraciki. Co z wejściami D1-D3? LCD+Atmega8 - wyświetla kwadraciki. Co z wejściami D1-D3?
  • #8 7379455
    sp3ots
    Poziom 38  
    Na początek odlutuj przewody które dochodzą do LCD
    Db0,1,2,3
  • #9 7379541
    mirekk36
    Poziom 42  
    Dokładnie - odlutuj te przewody od DB3..0 bo one u ciebie teraz to działają jak dobre anteny, dzieki którym wyświetlacz odbiera wszystkie zakłócenia z powietrza jak dobry telewizor ;)

    To że mają wisieć w powietrzu oznacza tylko to że do tych padów ma nie być nic dolutowane

    Poza tym jeszcze raz sprawdź pozostałe połączenia - szczególnie DB7..4 oraz RS i E - czy się na 10000% zgadzają z tym co masz zdeklarowane w tej linijce Config LCD .... bo jednak na zdjęciach strasznie słabo to widać - taka troszkę masakryczna plątanina kabelków ;)
  • #10 7384059
    kotek205
    Poziom 13  
    Odlutowałem przewody DB3,,0 sprawdziłem jeszcze raz połączenie od podstaw i nic, cały czas to samo;( Dodaje schemat jak to podłączyłem, sorry za jakość ale nie miałem w czym go zrobić.
    LCD+Atmega8 - wyświetla kwadraciki. Co z wejściami D1-D3?
  • #11 7385396
    sp3ots
    Poziom 38  
    Witam ponownie !
    Dałeś schemat ale popatrz na niego, brak nr pinów procesora, chodzi o te które biegną do LCD np.
    LCD--------M8
    4----------- X
    6----------- Y
    11---------
    12---------
    13---------
    14---------
    Jak to dopiszesz na schemacie lub w poście to można będzie można porównać z kodem i Tobie pomóc.
    Pozdrawiam. Stefan GG6293398
  • #12 7385524
    kotek205
    Poziom 13  
    A więc tak
    PD0-Rs
    PD1-E
    PD2-D4
    PD3-D5
    PD4-D6
    PD5-D7
    i jeszcze jedno czy ten problem może być tym spowodowany, że piszę i kompiluje program w bascomie a program wgrywam przez AVR Burn-O-Mat?
  • #13 7385691
    lotnick
    Poziom 15  
    r/w do masy
    db0 -db3 do masy.
    Zawsze tak podłączam i działa
  • #14 7385704
    sp3ots
    Poziom 38  
    To jest program do Twojego schematu, sprawdziłem działa.
    $regfile = "m8def.dat"
    $crystal = 1000000
    Config Lcdpin = Pin , Db7 = Pd.5 , Db6 = Pd.4 , Db5 = Pd.3 , Db4 = Pd.2 , E = Pd.1 , Rs = Pd.0
    Config Lcd = 16 * 2
    Cls
    Do
    Locate 1 , 1
    Lcd " test test "
    Loop
    End
    Do układu dodaj jeszcze:
    rezystor 4,7k pomiędzy pin nr 1 ATmegi8 a +5V
    kondensator 100nF bezpośrednio pin 7 i 8 atmegi8
    Nie ma znaczenia jakim programem programujesz.
    Pozdrawiam. Stefan

    Dodano po 2 [minuty]:

    db0,1,2,3 LCD zawsze pozostawiam nie podłączone i też działa.
  • #15 7385719
    mirekk36
    Poziom 42  
    Po pierwsze to po co programujesz czymś tam - zamiast samym bascomem ;) ale spoko - to na pewno nie powód tych twoich problemów.

    Jednak jak się spojrzy na jedyny kod jaki pokazałeś z tego helpa

    Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portd.0 , Db7 = Portd.1 , E = Portb.3 , Rs = Portb.2 


    to ma się to NIJAK do tego opisu połączeń jaki podałes powyżej?

    poza tym czy zasilanie do procka dałeś na wszystkie potrzebne nogi ???

    czy sobie odpuściłeś jak większość początkujących AVCC i AGND ?
  • #16 7385867
    kotek205
    Poziom 13  
    Dodałem ten kondensator i rezystor wydaje mi się, że obraz jest wyraźniejszy. Ale na dal nie działa wyświetla tylko kwadraciki;( Dodaje foto.
    LCD+Atmega8 - wyświetla kwadraciki. Co z wejściami D1-D3?
    Dzisiaj zmieniłem podłączenie atmegi dlatego są inne niż w helpie. Dałem zasilanie na AVCC i AGND. Procesor jest raczej dobrze podłączony bo działa dobrze sprawdziłem na diodach led.
  • #17 7385976
    sp3ots
    Poziom 38  
    Przy wyłączonym zasilaniu posprawdzaj czy nie ma zwarć pomiędzy poszczególnymi pinami LCD 1z2, 2z3 .... 12z13, 13z14, wszystkie po kolei.
    To co widać na LCD to nietypowe działanie, nie chcę "krakać' ale LCD może już być uszkodzony, ale najpierw musisz wykluczyć zwarcia pinów.
    Pozdrawiam. Stefan
  • #18 7386012
    mirekk36
    Poziom 42  
    Jakiś czas temu - niedawno - już ktoś tu walczył - teraz mi się przypomniało jak zobaczyłem ten efekt u ciebie - z takim samym - identycznym wyświetlaczem. I okazało się, że szanowny kolega go usmażył bądź kupił już taki uszkodzony
  • #19 7386041
    kotek205
    Poziom 13  
    no to spoko;(( nie wiem czy to ma znaczenie ale napiszę. Jak wgram jakiś inny program to kwadraciki są w innych miejscach, mrugają i tym podobne.
  • #20 7392482
    sp3ots
    Poziom 38  
    Witam !
    Czy oprócz takich zaczernionych prostokątów bywają jakieś znaki litery, nietypowe ? Daj foto i posprawdzaj połączenie, czy nie ma zwarć pomiędzy wyprowadzeniami LCD i ATmega8.
    Pozdrawiam. Stefan
  • #22 7397687
    kotek205
    Poziom 13  
    Kręciłem potencjometrem w obie strony, nic to nie daje.
    oprócz Kwadratów pojawiają się również kreski, a tak to nic po za tym.
    Jeszcze mam jeden pomysł. Czy jest to możliwe żeby bascom źle kompilował program. Mógł by ktoś wrzucić jakiś gotowy program już w hex. Był bym bardzo wdzięczny.
  • #23 7397742
    Milas69
    Poziom 11  
    Ja miałem właśnie niedawno taki sam problem, że polowa wyświetlacza działała a połowa to same kwadraciki..i powiem tyle ze już nie zadziałał prawidłowo dlatego kupiłem nowy wyświetlacz.. a chyba nawet miałem taki sam jak Ty...

    to mój wątek:
    Link
REKLAMA