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

Atmega16, lcd hd44780 2x16 - zachowuje się jak 4x20

broda997 10 Maj 2010 16:12 2381 7
REKLAMA
  • #1 8058858
    broda997
    Poziom 12  
    Mam zestaw w postaci Atmega16 i LCD HD44780, do tego podłączyłem klawiaturę zrobioną z przycisków.
    Nie wiem dlaczego, ale mój wyświetlacz zachowuję się jakby był 4x20 (i miał poprzestawiane linie 1,3,2,4), a jest 2x16. Dzieje się coś takiego:
    wyświetla pierwszych 16 znaków w pierwszej linii
    kolejne 24 znaki giną
    wyświetla 16 znaków w drugiej linii
    kolejne 24 giną
    --------i cykl zaczyna się od początku ------------
    wyświetla 16 znaków w pierwszej linii
    itd.
    Tak wygląda moja konfiguracja:
    zapisz_rozkaz(0x38); /*function set: 8-bity, 2-linie, znak 5x7*/
    zapisz_rozkaz(0x08); /*display: wylacz->LCD,kursor,miganie,*/
    zapisz_rozkaz(0x01); /*clear LCD*/
    zapisz_rozkaz(0x06); /*Display cursor shift: przesuany kursor, prawo*/
    zapisz_rozkaz(0x0C); /*display: wlacz->LCD, wylacz->kursor,miganie,*/

    Ma ktoś pomysł co może być nie tak?

    Proszę używać znacznika code.
    Robak
  • REKLAMA
  • Pomocny post
    #2 8058940
    zdebel
    Poziom 15  
    Z tego co pamiętam, sam kontroler zakłada stałą mapę adresową i każdy jest jakby przystosowany do x40, dlatego chcąc pisać w drugiej lini musisz po prostu komendą gotoxy tam sobie przejść :)
  • REKLAMA
  • #3 8059219
    omicronNs
    Poziom 21  
    Druga linia zaczyna się od adresu 0x40, nie wiem czy kolega wyżej właśnie o tym pisał :D
  • REKLAMA
  • #4 8059240
    Dexter77
    Poziom 28  
    To jest normalne i kazdy wyswietlacz na HD44780 bedzie sie tak zachowywal. Poczytaj dokumentacje.
  • REKLAMA
  • #5 8059313
    broda997
    Poziom 12  
    No właśnie ratowałem się przenosząc znacznik do drugiej linii komendą, ale gdzieś wyczytałem, że wyświetlacz powinien automatycznie przenosić kursor do nowej linii kiedy zapełni aktualną - widocznie ktoś napisał bzdury.
    Dziękuję za rozwianie wątpliwości :)
  • #6 8059733
    zdebel
    Poziom 15  
    Owszem przenosi, tylko on "myśli", że jest szeroki na 40 pól, nie ma w sobie opcji ustawiania szerokości lini.
  • Pomocny post
    #7 8060201
    omicronNs
    Poziom 21  
    zdebel 0x40 to 64 ;). Ale nie myśl broda że znaki wpisane ponad 16-ste pole a przed 64-tym są jakoś tracone, po wpisaniu w te komórki jakiejś zawartości, możesz przesunąć tekst tak ażeby ujrzeć go na wyświetlaczu. Komenda bodajże 00011X** gwiazdki to bity nieistotne, a X-1 przesuwanie w prawo, X-0 przesuwanie w lewo. Ale ja osobiście nie używam tej opcji.

    Pozdrawiam
  • #8 8061012
    broda997
    Poziom 12  
    Teraz już dokładnie rozumiem :) Dzięki :)

    Myślę, że temat można uważać za zamknięty.
REKLAMA