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.

atmega8, LCD - wysyłanie znaków do modułu LCD

adi1525 07 Sie 2014 14:13 1023 4
  • #1 07 Sie 2014 14:13
    adi1525
    Poziom 14  

    Witam, napisałem własny program do obsługi wyświetlacza LCD, inicjacja przebiega poprawnie, ponieważ kursor miga. Nie udaje mi się natomiast wysłać jakiegokolwiek znaku, chodzi mi o wpisanie np litery A na pierwsze miejsce bez żadnych przesunięć.
    Oto kod:

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    Próbowałem przed funkcją while wpisać:
    wyslij(0b01000001,1);//0b01000001 oznacza literę 'A',1 oznacza rs = 1 czyli zapis
    _delay_ms(100);
    i tylko kursor przesuwa się o kilka miejsc w prawo i miga.

    0 4
  • #2 07 Sie 2014 18:50
    el2010tmp
    Poziom 25  

    Najpierw proponuje zdefiniować używane sygnały oraz operacje na nich:

    Kod: c
    Zaloguj się, aby zobaczyć kod

    Sprzydały by się również definicje komend:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    To tak na dobry początek :D

    Wypadało by również wspomnieć jaki wyświetlacz chcesz uruchomić. Można się domyślać że chodzi o HD44780 lub podobny, ale pewności nie ma :D

    0
  • #3 08 Sie 2014 01:24
    adi1525
    Poziom 14  

    No wiem, że definiowanie pomaga później, ale przy nauce wole mieć wszystko rozpisane.
    Tak sterownik to HD44780, więc jak wgrać jakiś tekst?
    Mogę po prostu podać adres danej litery na szynie danych i zatwierdzić to tak samo jak przy wgrywaniu instrukcji ??

    0
  • #4 08 Sie 2014 11:43
    excray
    Poziom 39  

    Inicjujesz wyświetlacz jako 5x10???

    0
  • #5 08 Sie 2014 13:22
    adi1525
    Poziom 14  

    Tak, ale to nie przez to ponieważ mam funkcje wysyłania tekstu z jakiegoś innego projektu z internetu i z nim działa.


    Zauważyłem teraz, że nie działa mi tylko funkcja wyslij gdy mam np.
    wyslij(0b01000001,1);

    nie wykrywa mi tego jako dana.

    Oki, już działa. Pomyliłem się tylko przy operacjach bitowych, powinno być:

    Zamiast: "PORTB =_BV(PB0); //rs=1" powinno być: "PORTB |=_BV(PB0); //rs=1" i
    zamiast: "PORTB =_BV(PB2); // E =1" powinno być: "PORTB |=_BV(PB2); // E =1".

    0