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.

ATxmega128 - wyswietlacz HD44780 4x40

JohnCTN 03 Maj 2015 00:15 519 0
  • #1 03 Maj 2015 00:15
    JohnCTN
    Poziom 17  

    Witam

    mam problem z inicjacją wyświetlacza (wszystko piszę w assemblerze)

    problem mam taki, ze inicjuje wyświetlacz wg opisu z jakiegoś pdf.

    wiec wygląda to mniej więcej tak:

    gdy wysyłam komendę to RS=0 i R/!W=0
    gdy wysyłam bajt do DDRAM lub CGRAM to RS=1 i R/!W=0

    nie odczytuje bitu zajętości, a czasy dopasowuję aby wyświetlacz miał czas z "zapasem"

    tak wiec procedura inicjacyjna wygląda tak:

    power ON
    czekam 20ms

    wysyłam komendę 1- 0x30
    czekam 5ms

    wysyłam komendę 2 - 0x30
    czekam 5ms

    wysyłam komendę 3 - 0x30
    czekam 5ms

    Wysyłam komendę 4 - 0x38 - Function SET
    czekam 5ms

    Wysyłam komendę 5 - 0x0e - Display ON/OFF (kursor widać)
    czekam 5ms

    Wysyłam komendę 6 - 0x01 - Clear Display
    czekam 5ms

    Wysyłam komendę 7 - 0x06 - Entry Mode
    czekam 5ms




    Następnie wysyłam znaki, ale znaki się nie pojawiają tylko się przesuwa kursor :-(

    macie jakieś sugestie ?

    Dodano po 1 [godziny] 13 [minuty]:

    znalzlem blad w budowie procedury, która ustawia sygnaly sterujące R/!W, RS i Enable1 i Enable2.

    ale mam inne pytanie.

    Wedlug PDFa pierwsza linia wyświetlacza zaczyna się od adresu 0x00 a druga linia od 0x40, w takim wypadku gdy się wysyła znaki do wyświetlacza jednym ciągiem to pod koniec pierwszej linii która kończy się na adresie 0x27, nastepuje zapis do niewidocznych komorek 0x28 :0x3F i dopiero gdy adres inkrementowany osiągnie adres 0x40 to znaki pokazuja się w drugiej linii.

    Nie wiem dlaczego u mnie w wyświetlaczu jak cos zmienie w inicjacji LCD (nie doszedłem kiedy to się dzieje :-( ) to adres drugiej linii zaczyna się od adresu 0x28.

    może mi ktoś wyjaśnić od czego to zależy ?

    Dodano po 4 [godziny] 47 [minuty]:

    oki poradziłem sobie ze wszystkim :-D

    0 0