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] Obsługa wyświetlacza LCD [c]

Mathew26 11 Kwi 2011 11:02 4129 4
REKLAMA
  • #1 9386472
    Mathew26
    Poziom 10  
    Witam.

    Chciałem napisać program wyświetlający napis 'Hi' na wyświetlaczu LCD JHD 162A. Sterownikiem jest HD44780. uC : ATmega8A, zegar wew. 4MHz.
    Pomimo przeczytania wielu tutoriali nie mogę zmusić go do pracy 8 bitowej. Wzorowałem się na na kursie z EDW z 2005 r.

    Nie wiem czy dobrze jest przeprowadzona inicjalizacja wyświetlacza. Testowałem różne czasy, niestety bez efektu. Wyświetlacz jest sprawny, wgrałem 'gotowca' z trybem 4-bitowym i działało.

    Próbowałem przeprowadzić inicjalizacje wg. tej strony: Link
    Również bez rezultatu. Funkcje są proste, chyba nie ma w nich błędów. Będę wdzięczny za każdą pomoc.
    kod:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #2 9386529
    tadzik85
    Poziom 38  
    Bibliotekę radzia testowałeś?
  • REKLAMA
  • REKLAMA
  • Pomocny post
    #4 9386551
    chudybyk
    Poziom 31  
    Witam!
    Wykorzystujesz jeden z bitów w porcie danych na sygnał sterujący RS i stąd Twoje kłopoty.
    W funkcji lcd_data() ustawiasz bit LCD_RS a potem wywołujesz LCD_send(), w której wysyłasz daną instrukcją LCD_DPORT = data; - przy okazji kasując sobie bit LCD_RS zanim wykonasz instrukcję wyświetlacza przez lcd_pulse().
    Pozdrawiam!
  • #5 9386606
    Mathew26
    Poziom 10  
    chudybyk- oczywiście masz rację. Nie wiem jak mogłem tego nie zauważyć!
    Poprawiłem te dwie funkcje. Niestety dalej nic się nie dzieje.
    funkcje wyglądają teraz tak:


    Kod: C / C++
    Zaloguj się, aby zobaczyć kod




    EDIT:
    Ciekawa sprawa. Biblioteka ze strony Radzia: Link oparta na wyświetlaniu w trybie 8-bitowym bez sprawdzania flagi zajętości u mnie nie działa. Natomiast biblioteka ze sprawdzaniem flagi zajętości działa. Problem więc leży pewnie w wymaganych opóźnieniach.
REKLAMA