Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[Atmega16][BASCOM][LCD 4x20] Wyświetla bzdury

ariello87 15 Gru 2010 21:53 2192 6
  • #1 15 Gru 2010 21:53
    ariello87
    Poziom 10  

    Witam.
    Walcze z tematem drugi dzień, starałem się znaleźć odpowiedź na pytanie, jednak nigdzie nie znalazłem zbliżonego problemu.

    Atmega16, LCD 4x20 YM-2004a (wg sprzedawcy zgodny z hd44780), programator (i zasilanie całego układu ) USB, kwarc wsadzony w programator ma napis u góry 8.000 - domyślam się że jest to 8MHz.
    LCD podłączony pod port D, z portu B biorę zasilanie.
    Po pierwsze, lcd nie przechodzi w tryb cztero-liniowy (raz jedyny udało mi się uzyskać 4 linie widoczne po kręceniu kontrastem, jednak wtedy miałem źle podłączony lcd, próbowałem wrócić do tego podłączenia - jednak nieskutecznie). Więc wyświetlacz działa w dwóch liniach, jednak znaki są wyświetlane pod koniec pierwszej linii, i są przekłamane. Np zamiast "z" mam strzałka w lewo i jakiś dziwny znaczek, zamiast "a" pokazuje "o" i spacje, zamiast "b" jest "o/".

    kod programu

    Code:
    $regfile = "m16def.dat"
    
    $crystal = 8000000

    Config Portb = Output
    Portb = &B01010101

    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

    Wait 1
    Cls
            Lcd "b"
    Wait 1
       Shiftlcd Left
    Do
            Loop

    End                                                         'end program


    Przepinałem linie, sprawdzałem poprawność połączeń, z tego punktu widzenia wszystko wydaje się ok. Instrukcja Shiftlcd left przesuwa znaczki w prawo o jedną pozycje.

    Piszę w bascom-avr. Czy w oknie konfiguracji wyświetlacza, w polach lcd-address i rs-address powinienem coś zmieniać?

    Prosiłbym o jakieś rady jak ogarnąć sprawę.

    -1 6
  • Pomocny post
    #2 15 Gru 2010 23:15
    Duch__
    Poziom 31  

    ariello87 napisał:
    LCD podłączony pod port D, z portu B biorę zasilanie.


    Eeeee mam nadzieję że to z tym B to błąd...... port ma wydajność 20mA a ty ciągniesz z niego całe zasilanie? Może jeszcze dopowiesz że podświetlanie wyświetlacz też ma?

    0
  • #3 15 Gru 2010 23:49
    ariello87
    Poziom 10  

    fakt, zasilałem z portu, zwiodło mnie to że wyświetlacz świecił i coś pokazywał.

    Po zmianie zasilania na zewnętrzne widać obsługę czterech linii, jednak teraz nie wyświetla się żaden tekst.

    0
  • #4 16 Gru 2010 00:14
    LordBlick
    VIP Zasłużony dla elektroda

    Kiedyś wyświetlacz mi wariował, jak miałem ze sobą zwarte dwie linie danych...

    0
  • #5 16 Gru 2010 10:47
    ariello87
    Poziom 10  

    też o tym myślałem, jednak sprawdziłem to podając kolejno na port 10101010 a później 01010101 i mierząc woltomierzem napięcia. Różnice potencjałów wynosiły odpowiednio ok 5V i ok 0,2V.

    0
  • #6 16 Gru 2010 19:13
    ariello87
    Poziom 10  

    Problem usunięty. Źle zrozumiałem Wasze podpowiedzi, i zasilałem tylko LCD z 7805. Po przełączeniu zasilania mikrokontrolera i LCD na zasilanie zewnętrzne wszystko gra.

    Dziękuję za pomoc.

    0