klopoty z wyswietlaczem LCD



Masz problem? Zapytaj na forum elektroda.pl

Poprzedni Następny
Wiadomość
Spis treści
From: Jacek Dyka <jdyka_at_nospam_wasko.gliwice.pl>
Subject: klopoty z wyswietlaczem LCD
Date: Thu, 02 Mar 2000 13:18:32 +0100


Mam wyswietlacz LCD 2x16 ze sterownikiem HITACHI. Wyswietlaczem steruje
mikrokontroler 8051. Na poczatku wyswietlam tekst w pierwszej linii -
dziala bez zarzutu.
Nastepnie przechodze do drugiej linii (ustawiam kursor w pozycji 40h),
probuje wyswietlic drugi tekst i... kusror stoi dalej w swoim miejscu
nie wyswietlajac tekstu.
Chce dodac, ze na poczatku dokonalem ustalenia parametrow, typu ilosc
linii wyswietlanych, itd.
Czy ktos ma jakies sugestie?
Jacek


Poprzedni Następny
Wiadomość
Spis treści
From: "Juliusz" <juliusz_at_nospam_multi-ip.com.pl>
Subject: Re: klopoty z wyswietlaczem LCD
Date: Thu, 02 Mar 2000 18:06:09 GMT



"Jacek Dyka" <jdyka_at_nospam_wasko.gliwice.pl> wrote in message
news:38BE5C18.C8B1E2D1_at_nospam_wasko.gliwice.pl...
Mam wyswietlacz LCD 2x16 ze sterownikiem HITACHI. Wyswietlaczem steruje
mikrokontroler 8051. Na poczatku wyswietlam tekst w pierwszej linii -
dziala bez zarzutu.
Nastepnie przechodze do drugiej linii (ustawiam kursor w pozycji 40h),
probuje wyswietlic drugi tekst i... kusror stoi dalej w swoim miejscu
nie wyswietlajac tekstu.
Chce dodac, ze na poczatku dokonalem ustalenia parametrow, typu ilosc
linii wyswietlanych, itd.
Czy ktos ma jakies sugestie?
Jacek


Nawstawiaj testowo NOP-y gdzie sie da i zrob delay kilka milisekund pomiedzy
zmiana linii. Od tego zacznij, pozniej sobie bedziesz odejmowal czas zeby to
zoptymalizowac.
Mnie tez co sztuka to sie zachowywala inaczej, bo za szybko chcialem do
niego pisac wiec teraz jest zloty srodek na stale.

Juliusz




Poprzedni Następny
Wiadomość
Spis treści
From: "Andrzej Jabczyk" <jabczyk_andrzej_at_nospam_pro.onet.pl>
Subject: Odp: klopoty z wyswietlaczem LCD
Date: Thu, 02 Mar 2000 19:36:57 GMT



Użytkownik Juliusz <juliusz_at_nospam_multi-ip.com.pl> w wiadomości do grup
dyskusyjnych napisał:l4yv4.23961$WD.616167_at_nospam_news.tpnet.pl...
Nawstawiaj testowo NOP-y gdzie sie da i zrob delay kilka milisekund
pomiedzy
zmiana linii. Od tego zacznij, pozniej sobie bedziesz odejmowal czas zeby
to
zoptymalizowac.
Mnie tez co sztuka to sie zachowywala inaczej, bo za szybko chcialem do
niego pisac wiec teraz jest zloty srodek na stale.

Juliusz

Od kiedy to NOP-y wstawiamy w komunikacji z wyswietlaczem. I po co ta zabawa
w ciuciubabke. Przeciez przy sterowaniu wyswietlaczem stosuje sie odczyt
flagi BUSY. Ona nam mowi czy wyswietlacz jest gotowy do przyjecia kolejnego
rozkazu czy nie.

Andrzej Jabczyk



Poprzedni Następny
Wiadomość
Spis treści
From: "Juliusz" <juliusz_at_nospam_multi-ip.com.pl>
Subject: Re: klopoty z wyswietlaczem LCD
Date: Fri, 03 Mar 2000 01:44:56 GMT


Wracając do początkowego pytania, to ja nie trafiłem na podobny problem.
Mało tego, stosuję 51 z zegarem 24MHz i komunikuję się z LCD przez szynę
danych (instrukcjami MOVX). Mimo, że dla większości wyświetlaczy
(katalogowo) transmisja jest zbyt szybka, przy czterech pierwszych z
brzegu
wyświetlaczach wszystko działa jak trzeba.

Sam pooling busy jest bezsensownym traceniem czasu. Ja mam LCD do AVR'a
podlaczone i pooling jest bez sensu. Lepiej zrobic sobie proces na
przerwaniu timera i programowy bufor fifo. Wpisujesz do bufora bardzo
szybko, a timer cyka znakami z zachowaniem timingow.

A jak niby podlaczyles stroby do niego ?

Juliusz




Poprzedni Następny
Wiadomość
Spis treści
From: "Andrzej Jabczyk" <jabczyk_andrzej_at_nospam_pro.onet.pl>
Subject: Odp: klopoty z wyswietlaczem LCD
Date: Fri, 03 Mar 2000 09:53:24 GMT



Użytkownik Juliusz <juliusz_at_nospam_multi-ip.com.pl> w wiadomości do grup
dyskusyjnych napisał:sOEv4.25123$WD.639693_at_nospam_news.tpnet.pl...

Sam pooling busy jest bezsensownym traceniem czasu. Ja mam LCD do AVR'a
podlaczone i pooling jest bez sensu. Lepiej zrobic sobie proces na
przerwaniu timera i programowy bufor fifo. Wpisujesz do bufora bardzo
szybko, a timer cyka znakami z zachowaniem timingow.


Dlaczego uzywajac BUSY masz tracic czas? Ponadto przy obsludze BUSY program
wpisania znaku na wyswietlacz ma kilka linijek i jest prosty. A uzywajac
timingow, to nalezy rozrozniac jaki rozkaz poszedl, bo pare rozkazow (m.in.
czyszczenie wyswietlacza) trwaja duzo dluzej od pozostalych.

A jak niby podlaczyles stroby do niego ?

Juliusz

A jak sie steruje zewnetrzne urzadzenia w C51. Sa wyjscia WR i RD uzywane do
komunikacji z zewnetrnymi urzadzeniami za pomoca rozkazu MOVX. Jezeli masz
jako uklad zewnetrzny tylko wyswietlacz, to sprawa jest prosta, jedna bramka
i po sprawie. Adres dowolny. Jezeli kilka urzadzen, no to juz kilka bramek
lub najlepiej jakiegos GAL'a wsadzic. Wtedy odpowiednio je laczac nadajesz
adresy poszczegolnym urzadzeniom.

Andrzej Jabczyk



Poprzedni Następny
Wiadomość
Spis treści
From: "Irek" <ilula_at_nospam_poczta.onet.pl>
Subject: Odp: klopoty z wyswietlaczem LCD
Date: Fri, 03 Mar 2000 17:59:54 GMT


stosuję 51 z zegarem 24MHz i komunikuję się z LCD przez szynę
danych (instrukcjami MOVX). Mimo, że dla większości wyświetlaczy
(katalogowo) transmisja jest zbyt szybka, przy czterech pierwszych z
brzegu
wyświetlaczach wszystko działa jak trzeba.

Sam pooling busy jest bezsensownym traceniem czasu. Ja mam LCD do AVR'a
podlaczone i pooling jest bez sensu. Lepiej zrobic sobie proces na
przerwaniu timera i programowy bufor fifo. Wpisujesz do bufora bardzo
szybko, a timer cyka znakami z zachowaniem timingow.

Wszystko zależy od tego czy chcesz, aby kontroler jak najmniej czasu
poświęcał wyświetlaczowi, czy też zależy ci na jak najszybszym wpisaniu
danych do wyświetlacza. W tym drugim przypadku lepsze jest testowanie flagi
BUSY, bo odczekiwanie nominalnych 1,6 us (o ile dobrze pamiętam) to nie jest
to na co w praktyce stać kontrolery HD. Nazywa się to polling a nie pooling.
Może się on odbywać w większej pętli, w której program robi jeszcze coś
użytecznego, a nie tylko czeka na gotowość wyświetlacza. Jeśli z
wyświetlaczem komunikujesz się szyną danych, to sprawdzenie BUSY może
zajmować zaledwie dwie instrukcje.

A jak niby podlaczyles stroby do niego ?
Wykorzystałem wyjścia RD, WR i A15 i A14 (najwyższe linie adresowe).
Konieczny jest maleńki dodatkowy układzik logiczny (jeśli godzimy się na
zajęcie przez LCD całej górnej połówki przestrzeni adresowej, to wystarczy
1x7400), no i zatrzask 74573, ale w moim przypadku on i tak tam jest z
powodu stosowania XRAM-u. Suma RD, WR i A15 daje Enable, zaś A14 to B/S. Nie
mam tego przed oczami, więc może coś w pośpiechu pokręciłem. Na życzenie
mogę podać szczegóły.
Oczywiście nie upieram się, że jest to najlepsze rozwiązanie. Podobnie jak z
flagą BUSY tu też wszystko zależy od okoliczności (dostępność przerwań,
portów, czy szyna danych jest już wykorzystywana i czy stosujemy latcha
573).
Pozdrawiam,
Irek



Juliusz






Poprzedni Następny
Wiadomość
Spis treści
From: "Juliusz" <juliusz_at_nospam_multi-ip.com.pl>
Subject: Re: klopoty z wyswietlaczem LCD
Date: Fri, 03 Mar 2000 22:06:43 GMT



"Irek" <ilula_at_nospam_poczta.onet.pl> wrote in message
news:u4Tv4.27534$WD.707067_at_nospam_news.tpnet.pl...
Oczywiście nie upieram się, że jest to najlepsze rozwiązanie. Podobnie jak
z
flagą BUSY tu też wszystko zależy od okoliczności (dostępność przerwań,
portów, czy szyna danych jest już wykorzystywana i czy stosujemy latcha
573).

Wiesz dobre jest i tam gdzie mam PLD i wolne zasoby tego PLD to zawsze bym
tak zrobil wlacznie z odliczaniem czasow zeby mozliwie malo zabrac
procesorowi. Majac AVR'a chodzi mi o jego wydajnosc i wyczekiwanie az HD sie
namysli nie ma sensu wiec lepiej dla mnie jest napisac makro i tym makrem
programowac timer i jego przerwania. Jednym strzalem wpisujesz do bufora
fifo wszystkie czynnosci i dalej tylko timer cyka kiedy potrzeba i to po
kilka rozkazow w przerwaniu.

Wyglada to tak, ze cala zabawa z LCD dziala jakby obok twojego programu.

robisz makro i wolasz je np

lcdwr 0x40,label_tekstu

inne makro jest bardziej rozbudowane, bo np. czysci LCD jeszcze. Wszystkie
rozkazy trafiaja do kolejki i sa wykonywane przez przerwanie timera, ktore
sobie wlaczam tym makrem.

Juliusz




Poprzedni Następny
Wiadomość
Spis treści
From: "Juliusz" <juliusz_at_nospam_multi-ip.com.pl>
Subject: Re: klopoty z wyswietlaczem LCD
Date: Thu, 02 Mar 2000 21:37:48 GMT



"Andrzej Jabczyk" <jabczyk_andrzej_at_nospam_pro.onet.pl> wrote in message
news:tpzv4.24222$WD.622450_at_nospam_news.tpnet.pl...

Użytkownik Juliusz <juliusz_at_nospam_multi-ip.com.pl> w wiadomości do grup
dyskusyjnych napisał:l4yv4.23961$WD.616167_at_nospam_news.tpnet.pl...
Nawstawiaj testowo NOP-y gdzie sie da i zrob delay kilka milisekund
pomiedzy
zmiana linii. Od tego zacznij, pozniej sobie bedziesz odejmowal czas
zeby
to
zoptymalizowac.
Mnie tez co sztuka to sie zachowywala inaczej, bo za szybko chcialem do
niego pisac wiec teraz jest zloty srodek na stale.

Juliusz

Od kiedy to NOP-y wstawiamy w komunikacji z wyswietlaczem. I po co ta
zabawa
w ciuciubabke. Przeciez przy sterowaniu wyswietlaczem stosuje sie odczyt
flagi BUSY. Ona nam mowi czy wyswietlacz jest gotowy do przyjecia
kolejnego
rozkazu czy nie.


Ja nie uzywam, bo szkoda mi bylo drutow.

Juliusz




Poprzedni Następny
Wiadomość
Spis treści
From: "Johny R." <jrudnick_at_nospam_do.poznan.tpsa.pl>
Subject: Re: klopoty z wyswietlaczem LCD
Date: Thu, 02 Mar 2000 21:57:44 GMT



Andrzej Jabczyk wrote in message ...

Od kiedy to NOP-y wstawiamy w komunikacji z wyswietlaczem. I po co ta
zabawa
w ciuciubabke. Przeciez przy sterowaniu wyswietlaczem stosuje sie odczyt
flagi BUSY. Ona nam mowi czy wyswietlacz jest gotowy do przyjecia kolejnego
rozkazu czy nie.

Andrzej Jabczyk
A jak sterujesz LCD-kiem np. via I2C (lub Wire) to tez sprawdzasz 'BUSY' !??
Troche szkoda portow czasu ROM-u, ...



Poprzedni Następny
Wiadomość
Spis treści
From: "Irek" <ilula_at_nospam_poczta.onet.pl>
Subject: Odp: klopoty z wyswietlaczem LCD
Date: Thu, 02 Mar 2000 23:22:49 GMT


A jak sterujesz LCD-kiem np. via I2C (lub Wire) to tez sprawdzasz 'BUSY'
!??
Troche szkoda portow czasu ROM-u, ...

Jeśli dobrze rozumiem, mowa o LCD z koprocesorem Hitachi, czyli sterowanych
równolegle. Nie ma to nic wspólnego z I2C, a sprawdzanie flagi BUSY ma
miejsce właśnie po to, by czas zaoszczędzić.

Wracając do początkowego pytania, to ja nie trafiłem na podobny problem.
Mało tego, stosuję 51 z zegarem 24MHz i komunikuję się z LCD przez szynę
danych (instrukcjami MOVX). Mimo, że dla większości wyświetlaczy
(katalogowo) transmisja jest zbyt szybka, przy czterech pierwszych z brzegu
wyświetlaczach wszystko działa jak trzeba.

Mogę tylko doradzić śledzenie sprawy krok po kroku. Może przy przejściu do
nowej linii zapominasz odczekać na gotowość (sprawdzenie BUSY lub
odmierzenie paru mikrosekund)?
Irek




Poprzedni Następny
Wiadomość
Spis treści
From: "Johny R." <jrudnick_at_nospam_do.poznan.tpsa.pl>
Subject: Re: klopoty z wyswietlaczem LCD
Date: Sat, 04 Mar 2000 00:50:05 GMT



równolegle. Nie ma to nic wspólnego z I2C, a sprawdzanie flagi BUSY ma
Uwazasz ze LCD-ka mozna sterowac tylko z portu mikrokontrolera (ew. z szyny
procesora)
Szczescia zycze ...



Poprzedni Następny
Wiadomość
Spis treści
From: "Irek" <ilula_at_nospam_poczta.onet.pl>
Subject: Odp: klopoty z wyswietlaczem LCD
Date: Sat, 04 Mar 2000 12:48:58 GMT



Użytkownik Johny R. <jrudnick_at_nospam_do.poznan.tpsa.pl> w wiadomości do grup
dyskusyjnych napisał:15Zv4.28595$WD.737217_at_nospam_news.tpnet.pl...

równolegle. Nie ma to nic wspólnego z I2C, a sprawdzanie flagi BUSY ma
Uwazasz ze LCD-ka mozna sterowac tylko z portu mikrokontrolera (ew. z
szyny
procesora)
Szczescia zycze ...



Nie tylko tak uważam, ale również to stosuję. I dziękuję za życzenia.
Irek

P.S. Czy aby nie nadajemy na innej częstotliwości?