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

Jak uruchomić wyświetlacz LCD DM157a z kontrolerem HD44780? Inicjalizacja i błędy

sedzia 11 Lut 2004 12:38 12833 17
REKLAMA
  • #1 500760
    sedzia
    Poziom 15  
    Posty: 117
    Pomógł: 13
    Ocena: 41
    Witam

    ostatnio kupilem na allegro wyswietlacz LCD DM157a, niestety za nic nie moge sobie poradzic z odpaleniem tego LCD. Niby sprawa jest prosta podlaczenie zasilania i kolejno wyjsc, ale u mnie nie chce ruszyc, zrowno probowalem przez port dukarki LPT jaki i przez uC PIC. Po podaniu zasilania wszystkie segmenty sie pala ale wykonanie jakiejkolwiek instrukcji jest niemozliwe, a co sie z tym wiaze, nie moge nic na LCD wyslac. Mialbym wiec kilka pytan.

    1) czy inicjalizacja musi nastepowac wedlug schematu

    - Załączenie zasilania
    - Czekaj minimum 15ms
    - RS=0 RW=0
    - wyslij 0b0011xxxx
    - czekaj minimum 4.1ms
    - wyslij 0b0011xxxx

    chodzi mi o czasy miedzy wysylka instrukcji inicjalizacji.

    2) czy za kazdym razem nalezy czekac na BUSY FLAG
    3) jesli wysylam instrukcje co 100ms to czy HD44780 bedzie je przyjmowal bez BUSY FLAG
    4) jaka jest kolejnosc ustawiania RS, E,RW. Jakie stany musza byc podczas wysylania instrukcji na tych pinach
    5) jak moge zmusic LCD do jakiejkolwiej reakcji

    czy posiada ktos kod zrodlowy pod jakiegos PIC-a na uruchowienie LCD DM157a i jest w stanie go udostepnic ??

    Za jakiekolwiek wskazowki bede wielce wdzieczny.
  • REKLAMA
  • #2 500781
    calinka
    Poziom 15  
    Posty: 120
    Ocena: 1
    Sterowanie wyświetlaczem LCD w standardzie 44780 jest następujące:

    -Po włączeniu zasilania należy odczekać jak podaje producent ileś czasu
    - każdy następny dostęp (zapisz/odczyt) do wyświetlacza jest możliwy po wycofaniu flagi BUSY (ja to zawsze robiłam przed następnym zapisem/odczytem)
    - kolejność wystawiania sygnałów jest istotna, dokładnie sterowanie E ma być jako ostatnie, czyli: należy wysterować szynę danych, wysterować sygnał RW, sygnał RS i wystawić syganł E na stan wysoki, odczekać chwilkę (wykonać kilka instrukcji NOP) wystawić sygnał E do stanu niskiego.
  • #3 500802
    ACULA
    Poziom 34  
    Posty: 3005
    Pomógł: 105
    Ocena: 112
    proponuję www.elektroda.pl ->pomoce->wyświetlacze lcd
    kilkanaście stron tekstu powinno wszystko wyjaśnić
  • #4 500846
    sedzia
    Poziom 15  
    Posty: 117
    Pomógł: 13
    Ocena: 41
    gdzie znajde www.elektroda.pl ->pomoce->wyświetlacze lcd to bo w pomocach nie ma tego.
  • REKLAMA
  • #5 500918
    ACULA
    Poziom 34  
    Posty: 3005
    Pomógł: 105
    Ocena: 112
    może trzeba kliknąć drugą stronę #2 oraz przeczytać 120-123 :)
    Alfanumeryczny wyświetlacze LCD - #1
    Alfanumeryczny wyświetlacze LCD - #2
    Alfanumeryczny wyświetlacze LCD - #3
    Alfanumeryczny wyświetlacze LCD - #4
  • REKLAMA
  • #6 501239
    morph13
    Poziom 25  
    Posty: 987
    Pomógł: 25
    Ocena: 32
    sedzia napisał:
    ostatnio kupilem na allegro wyswietlacz LCD DM157a, niestety za nic nie moge sobie poradzic z odpaleniem tego LCD. Niby sprawa jest prosta podlaczenie zasilania i kolejno wyjsc, ale u mnie nie chce ruszyc, .


    spoko, nie jest tak żle, mam trochę tych LCD-ków i żadnego problemu.
    Na taśmie wyprowadzenie Vcc i +5V razem i do zasilania, reszta to standard.

    czas restartu po podaniu zasilania zwiększ do 500ms (to na 100% wystarczy), ładujesz konfigurację 8b, czas oczekiwania 50ms, ładujesz np sterowanie 4b, i działa bez problemu. Pamiętaj że ten LCD-k ma wydłużony czas (sprawdzone organoleptycznie) "martwy" po wykonaniu czyszczenia wyswietlacza bezpieczna i pewna wartość to 10-15ms, dla szybszego załadowania podaj jako parametr pozycję 1 cyfry wtedy czas wyniecie tylko 2ms a nie 10-15ms.

    Mam sporo tych LCD-ków i 3x24 i 1x24 i wszystkie są OK.
    Powodzenia
  • #7 502202
    sedzia
    Poziom 15  
    Posty: 117
    Pomógł: 13
    Ocena: 41
    Morph 13 dzieki za Info.
    Swoje LCD sterujesz przez uC czy przez port LPT ??
    jesli przez uC to czy moge podeslac ci moj Kod zrodlowy, zerkniesz na to moze znajdziesz cos co robie steruje ??

    Jeszcze jedno pytanie mam jak powinien wygladac LCD po wyslaniu komendy Reset ( powinny wszystkie segmenty zgasnac ??)
  • #8 502814
    morph13
    Poziom 25  
    Posty: 987
    Pomógł: 25
    Ocena: 32
    sedzia napisał:
    Swoje LCD sterujesz przez uC czy przez port LPT ??

    Przez uC a soft jest w asemblerze, innego języka raczej nie używam.

    Cytat:
    jak powinien wygladac LCD po wyslaniu komendy Reset ( powinny wszystkie segmenty zgasnac ??)


    poprostu bedziesz miał czysty LCD-k, a barwa pola zależy od ustawionego napięcia na Vlcd czyli kontrastu. w tym wypadku po wysłaniu komendy musisz odczekać około 10-15ms na pewne wykonanie operacji.
    Ten LCD akceptuje wszystkie komendy HD44... więc nie powinieneś mieć problemu o ile nie masz mikropęknięcia scieżki powstałego podczas lutowania.
  • #9 519801
    sedzia
    Poziom 15  
    Posty: 117
    Pomógł: 13
    Ocena: 41
    Witam

    czy tos moglby zerknac na moj kod bo za choinke nie moge odpalic mojego LCD. Sygnal RW mam standartowo podlaczony do masy gdyz interesuje mnie tylko wysylanie znakow do LCD. PORTA i PORTC
    mam naturalnie skonfigurowane na OUT. Funkcja Delay(1) to okolo 1 ms.

    Co jest nie tak ze LCD nie przyjmuje zadnej instrukcji. Po wyslaniu instrukcji Clear LCD wyswietlacz pozostaje bez zmian tzn caly wyswietlacz jest zapalony.

    Wyswietlacz jaki odpalam to WC1602A


    PORTC = 0x30;
    PORTA.1 = 1; /* E */
    Delay(1);
    PORTA.1 = 0; /* E */
    Delay(1);


    PORTC = 0x00;


    Delay(200); /* c.a. 200ms */

    PORTA.0 = 0; /* RS */
    PORTA.1 = 0; /* E */
    Delay(1);
    PORTC = 0x30;
    PORTA.1 = 1; /* E */
    Delay(1);
    PORTA.1 = 0; /* E */
    Delay(1);
    PORTC = 0x00;


    Delay(200); /* c.a. 200ms */

    PORTA.0 = 0; /* RS */
    PORTA.1 = 0; /* E */
    Delay(1);
    PORTC = 0x30;
    PORTA.1 = 1; /* E */
    Delay(1);
    PORTA.1 = 0; /* E */
    Delay(1);
    PORTC = 0x00;

    Delay(200); /* c.a. 200ms */

    PORTA.0 = 0; /* RS */
    PORTA.1 = 0; /* E */
    Delay(1);
    PORTC = 0x30;
    PORTA.1 = 1; /* E */
    Delay(1);
    PORTA.1 = 0; /* E */
    Delay(1);
    PORTC = 0x00;


    Delay(200); /* c.a. 200ms */

    PORTA.0 = 0; /* RS */
    PORTA.1 = 0; /* E */
    Delay(1);
    PORTC = 0x0E;
    PORTA.1 = 1; /* E */
    Delay(1);
    PORTA.1 = 0; /* E */
    Delay(1);
    PORTC = 0x00;

    Delay(200); /* c.a. 200ms */

    PORTA.0 = 0; /* RS */
    PORTA.1 = 0; /* E */
    Delay(1);
    PORTC = 0x06;
    PORTA.1 = 1; /* E */
    Delay(1);
    PORTA.1 = 0; /* E */
    Delay(1);
    PORTC = 0x00;

    Delay(200); /* c.a. 200ms */

    PORTA.0 = 1; /* RS */
    PORTA.1 = 0; /* E */
    Delay(1);
    PORTC = 0x01;
    PORTA.1 = 1; /* E */
    Delay(1);
    PORTA.1 = 0; /* E */
    Delay(1);
    PORTA.0 = 0; /* RS */
    PORTC = 0x00;

    Delay(200); /* c.a. 200ms */

    PORTA.0 = 1; /* RS */
    PORTA.1 = 0; /* E */
    Delay(1);
    PORTC = 0x01;
    PORTA.1 = 1; /* E */
    Delay(1);
    PORTA.1 = 0; /* E */
    Delay(1);
    PORTA.0 = 0; /* RS */
  • REKLAMA
  • #10 547721
    noicoztego
    Poziom 12  
    Posty: 12
    Odnośnie Dm 157 to naprawdę ma wydłużone czasy reakcji niestety, co widziałem jak go podłączyłem do mojego układu który sterował wczesniej innym LCD ( po prostu świrował) jak potrzebujesz to mogę podesłać prosty kod który sam napisałem . Prosty dlatego bo uzywa czterech bitów do sterowania a znaki wpisujesz po prostu do tablicy i gotowe! wyświetla to co chcesz. odnośnie tego przypadku co się swiecą wszystkie segmeny- przypadkiem nie przesadziłeś z wysterowaniem V lcd? bo jak się przegnie to sterownik wyświetla ale tego nie widać bo się wszystkie segmenty świecą! :lol:
  • #11 548800
    sedzia
    Poziom 15  
    Posty: 117
    Pomógł: 13
    Ocena: 41
    Jesli mozesz to podeslij prosze twoj program, srobuje go odpalic i troszke potestowac.
    Jesli idzie o swiecenie wszystkich segmentow to faktycznie masz racje przesadzilem z V lcd ale teraz problem mam usuniety.
    Kolejna przeszkoda jaka powstala to brak Kursora. Sterownik LCD moge zresetowac ustawic tryb racy ale nie moge wyswietlic znaku oraz kursora.
    Moze masz jakis pomysl
  • #12 548825
    ACULA
    Poziom 34  
    Posty: 3005
    Pomógł: 105
    Ocena: 112
    przeciez kursor ustawiasz konfigurując pracę wyświetlacza , ściągnij sobie opis sterowania wyświetlacvzami i poczytaj
  • #13 548857
    noicoztego
    Poziom 12  
    Posty: 12
    jakby każdy miał wszystko sam znaleźdz i poczytać to po co komu byłaby Elektroda? daj znac czy chcesz hexa czy mcp może być z mplaba? możesz pisać noicoztego(_at_)interia.pl
    Ps. sam pamiętam jak się uczyłem sterować LCD to często kozystałem z porad kolegów z tego serwisu i to dopiero oni naprowadzali mnie na ciekawe teksty bo szczerze mówiąc ten opis który jest w pomocach elektrody jest mało czytelny ! ( ps jest do Super moderatora)
  • #14 548901
    ACULA
    Poziom 34  
    Posty: 3005
    Pomógł: 105
    Ocena: 112
    akurat problem kursora jest bardzo czytelnie opisany i polega na odpowiednim ustawieniu jednego bitu
    przecież co za różnica czy powiem mu który bit i zobaczy w opisie i jutro nie zapyta jak zrobić migający
    w linku który podałem wcześniej są ładnie rozpisane rozkazy, i wyraźnie opisany jest rozkaz dipsplay on/off bit c
  • #15 548925
    noicoztego
    Poziom 12  
    Posty: 12
    trochę racji w tym jest ale jak polecac to nie polecałbym akurat pomocy elektrody tylko datasheta HD 44780 bo tam jest fajna tabela z dokładnym opisem jak go męczyc coby robił to co chcemy ( nawet bez umiejętności jezyk angielskiego jest dobra) no i oczywiście tabela ze znakami. dołączę tego sheta. A program nic raczej nie wyswietla bo pod kodem jaki wpisujesz sedzio do wyswietlacza raczej jest duże NIC ( a w sumie jest tam znak CGRAM czyli tak jakby go na razie nie było :D )załączam inny opis LCD który znalazłem w sieci ( też nie jakieś halo) i postudiuj tego datasheta to napewno ci to pomoże , bo jest tam nawet przedstawiona procedura po kolei inicjacji a potem wyświetlania napisu HITACHI :D
    Załączniki:
    • lcd-inox.zip (59.83 KB) Musisz być zalogowany, aby pobrać ten załącznik.
    • hd44780.pdf (316.48 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #16 2001201
    Jarema
    Użytkownik obserwowany
    Posty: 1179
    Pomógł: 86
    Ocena: 32
    noicoztego napisał:
    Odnośnie Dm 157 to naprawdę ma wydłużone czasy reakcji niestety, co widziałem jak go podłączyłem do mojego układu który sterował wczesniej innym LCD ( po prostu świrował) jak potrzebujesz to mogę podesłać prosty kod który sam napisałem . Prosty dlatego bo uzywa czterech bitów do sterowania a znaki wpisujesz po prostu do tablicy i gotowe! wyświetla to co chcesz. odnośnie tego przypadku co się swiecą wszystkie segmeny- przypadkiem nie przesadziłeś z wysterowaniem V lcd? bo jak się przegnie to sterownik wyświetla ale tego nie widać bo się wszystkie segmenty świecą! :lol:


    Pierwszy raz słyszę o świecących LCD :D
    To jest forum techniczne i wypada używać takowego języka.
  • #17 3259490
    rsobczuk
    Poziom 11  
    Posty: 83
    Ocena: 4
    Cześć wszystkim,
    nie mam bardzo dużego doświadczenia w zabawie podobnymi urządzeniami do tego wyświetlacza, ale chcę się trochę tym pobawić...
    Mam problem... kupiłem taki wyświetlacz, ale nie mogę niestety go w żaden sposób podłączyć... ponieważ ta tasiemka nie pasuje do chyba żadnego złącza i nie można kupic nigdzie czegoś, co pozwoli podłączyć do niego jakieś kabelki :) Generalnie lutować umiem, ale przylutowanie 20 kabelków jest bardzo trudne...
    Czy ktoś ma jakiś pomysł co z tym problemem zrobić? Z góry dziękuję za wszystkie odpowiedzi.
    Pozdrawiam
    Rafał
  • #18 3259622
    M. S.
    Poziom 34  
    Posty: 2107
    Pomógł: 259
    Ocena: 680
    Przygotowuję pomocniczą płytkę z odpowiednią ilością pól lutowniczych i naklejam na płytkę lcd. Biorę odcinki drutu nawojowego 0.1mm, który lutuję od strony krawędzi płytki LCD do wyświetlacza po wcześniejszym odlutowaniu taśmy i do płytki pomocniczej. Druty zalewam klejem tak aby się nie ruszały. Przy odrobinie wprawy można to zrobić lutownicą transformatorową!

Podsumowanie tematu

✨ Dyskusja dotyczy problemów z uruchomieniem wyświetlacza LCD DM157a z kontrolerem HD44780, w tym prawidłowej inicjalizacji i sterowania. Kluczowe kwestie to: konieczność odczekania odpowiednich czasów po załączeniu zasilania (minimum 15 ms, a nawet do 500 ms dla DM157a), prawidłowa kolejność sygnałów RS, RW, E podczas wysyłania instrukcji oraz oczekiwanie na flagę BUSY przed kolejnym dostępem do wyświetlacza. Wskazano, że sygnał RW można podłączyć do masy, jeśli interesuje tylko zapis do LCD. Problemy z wyświetlaniem, takie jak świecenie wszystkich segmentów, mogą wynikać z nieprawidłowego napięcia kontrastu (Vlcd). Użytkownicy zalecają korzystanie z dokumentacji HD44780 oraz przykładów inicjalizacji i sterowania, a także zwracają uwagę na specyfikę DM157a, która wymaga wydłużonych czasów reakcji. W dyskusji pojawiły się także wskazówki dotyczące lutowania taśmy LCD i przygotowania płytki pomocniczej do podłączenia wyświetlacza. Przykładowy kod sterujący w trybie 4-bitowym oraz asemblerze dla mikrokontrolera PIC został zaoferowany jako pomoc. Poruszono również kwestie konfiguracji kursora i wyświetlania znaków, podkreślając znaczenie prawidłowego ustawienia bitów w rejestrach sterownika.
Wygenerowane przez model językowy.
REKLAMA