Inicjalizacja wyświetlacza LCD 2x16 na LPT z HD44780 - jak to zrobić prawidłowo?
[pytanie laika] LCD przez LPT, jak zainicjowac
From: "Keeller" <manaker_at_nospam_NOSPAMwp.pl>
Subject: [pytanie laika] LCD przez LPT, jak zainicjowac
Date: Fri, 11 Jun 2004 22:29:45 +0200
Witam
Podlaczylem wyswietlacz LCD 2x16 na sterowniku HD44780
do portu LPT. Napisalem juz program tak, ze moge dowolnie
zmieniac stany logiczne na pinach wyswietlacza, zasilanie
rowniez doprowadzilem. Proboje sterowac wyswietlaczem tak
jak jest to opisane w karcie katalogowej sterownika (jest
tam podany przyklad krok po kroku) ale narazie zadnych efektow
nie ma...
Pierwsze pytanie bardzo banalne - nie mialem jeszcze kontaktu
z cyfrowka i nie wiem jak wysylac sygnaly do wyswietlacza LCD.
Na jak dlugo nalezy na niektorych pinach podniesc napiecie
do +5 V ? czy czas utrzymywania sie tego stanu ma jakies znaczenie ?
Czy przed wyslaniem kolejnej instrukcji trzeba ustawic na wszystkich
pinach stan niski czy po prostu "plynnie" przjesc z jednej instrukcji
do drugiej ? jesli tak, to jak dlugo ma trwac ten stan "wyzerowania" ?
Zamierzam uzywac interfejsu 4-o bitowego wiec kazda instrukcja bedzie
podzielona na dwa sygnaly - jak wyslac dwa sygnaly tak, aby
sterownik potraktowal to jako 1 instrukcji ? (oczywiscie juz po ustawieniu
go w prace 4-o bitowa) czy do tego celu sluzy wejscie ENABLE ?
Przy ustawionym kontrascie na maximum zapala sie cala gorna linia
wyswietlacza, czy moze tak byc czy nalezy zmniejszyc kontrast aby
cokolwiek moc wyswietlic ?
Pozdrawiam i z gory dziekuje.
========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.dialog.net.pl!not-for-mai
From: "BobyX" <bobyx_at_nospam_piwko.pl>
Subject: Re: [pytanie laika] LCD przez LPT, jak zainicjowac
Date: Fri, 11 Jun 2004 22:42:11 +0200
Użytkownik "Keeller" <manaker_at_nospam_NOSPAMwp.pl> napisał:
Pierwsze pytanie bardzo banalne - nie mialem jeszcze kontaktu
z cyfrowka i nie wiem jak wysylac sygnaly do wyswietlacza LCD.
Na jak dlugo nalezy na niektorych pinach podniesc napiecie
Od tego jest chyba sygnal BSY (zajetosc)....
Zamierzam uzywac interfejsu 4-o bitowego wiec kazda instrukcja bedzie
podzielona na dwa sygnaly - jak wyslac dwa sygnaly tak, aby
sterownik potraktowal to jako 1 instrukcji ? (oczywiscie juz po ustawieniu
go w prace 4-o bitowa) czy do tego celu sluzy wejscie ENABLE ?
chyba niedokladnie czytales dokumentacje, sterownik trzeba przestawic
w tryb 4 bitowy, ale poniewaz stan sterownika moze byc dowolny
w chwili wlaczenia zasilania trzeba wyslac pare "pustych" komend....
procedura jest dokladnie opisana w dokumentacji, procedura
jest tak skonstrulowana ze tryb mozna ustawic niezaleznie
od czy polaczenie jest na 4 czy 8 bit
pozdrawiam
BobyX
========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai
From: "Keeller" <manaker_at_nospam_NOSPAMwp.pl>
Subject: Re: [pytanie laika] LCD przez LPT, jak zainicjowac
Date: Sat, 12 Jun 2004 11:19:22 +0200
Dokladniej chodzi mi o to jak uzywac wyprowadzenia ENABLE.
W specyfikacji sterownika na przykladzie wyswietlania przez
interfejs 4-o bitowy w tabeli nie ma podanego stanu ENABLE.
1. Podlaczam napiecie zasilania
2. Function set RS=0 R/W=0 DB5=1
Punkt ten odpowiada za przejscie sterownika w tryb 4-o bitowy.
Czy w tym momencie wystarczy na chwile podniesc napiecie na pinie
DB5 do +5V, a potem obnizyc z powrotem do 0, a moze napiecie ma
zostac az do nastepnego rozkazu ? czy podczas tej instrukcji
nalezy uzyc sygnalu ENABLE ? Jesli tak ktory sygnal ma byc zalaczony
jako pierwszy i ktory ma wygasnac pierwszy ?
3. I tutaj mamy pierwszy rozkaz rozlozony na 2 sygnaly, wiem ze
najpierw trzeba wyslac bardziej znaczaca czesc bajtu, a potem mniej.
Probowalem w rozny sposob wysylac te sygnaly do wyswietlacza, ale
niestety nic nie chcialo dzialac prawidlowo :(
Jak ma wygladac uzywanie sygnalu ENABLE przy wysylaniu tego rozkazu ?
Chodzi mi o opis typu:
1. Na wszystkich pinach napiecie 0V
2. RS=H ENABLE=L
2. RS=H ENABLE=H
3. RS=H ENABLE=H + bardziej znaczaca czesc bajtu
4. RS=H ENABLE=L
2. RS=H ENABLE=H
5. RS=H ENABLE=H + mniej znaczaca czesc bajtu
6. RS=H ENABLE=L
7. Na wszystkich pinach napiecie 0V
To tylko przyklad, ktory niestety nie dziala... Jak powinny
wygladac poszczegolne kroki aby wyswietlacz potraktorwal to
jako jedno polecenie wyslane interfejsem 4-o bitowym ?
Pozdrawiam
========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai
From: AlexY <alexy_at_nospam_irc.-cut_this-.pl>
Subject: Re: [pytanie laika] LCD przez LPT, jak zainicjowac
Date: Sat, 12 Jun 2004 12:27:57 +0200
Użytkownik Keeller napisał:
Witam
Podlaczylem wyswietlacz LCD 2x16 na sterowniku HD44780
do portu LPT. Napisalem juz program tak, ze moge dowolnie
[...]
na http://www.radio.org.pl/~sp1wsw/programy/index.htm znajdziesz gotowy
program, kolega pisal go w pascalu, moze da zrodlo.
Pierwsze pytanie bardzo banalne - nie mialem jeszcze kontaktu
z cyfrowka i nie wiem jak wysylac sygnaly do wyswietlacza LCD.
Na jak dlugo nalezy na niektorych pinach podniesc napiecie
do +5 V ? czy czas utrzymywania sie tego stanu ma jakies znaczenie ?
[...]
przeanalizuj http://users.swing.be/gonzague.colpaert/lcd.html niestety
nie znalazlem strony w normalniejszym jezyku
========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!mimuw.edu.pl!news.mimuw.edu.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai
From: "Keeller" <manaker_at_nospam_NOSPAMwp.pl>
Subject: Re: [pytanie laika] LCD przez LPT, jak zainicjowac
Date: Sat, 12 Jun 2004 13:07:48 +0200
Użytkownik "AlexY" <alexy_at_nospam_irc.-cut_this-.pl> napisał w wiadomości
news:caem0j$a11$1_at_nospam_nemesis.news.tpi.pl...
przeanalizuj http://users.swing.be/gonzague.colpaert/lcd.html niestety
nie znalazlem strony w normalniejszym jezyku
Dzieki, fajny link, ale nie rozumiem w tych opisach jednego:
Najpierw kaza ustawic jakis stan np.(RS, R/W, a potem dane):
0 0 0 0 1 1 n/c n/c n/c n/c (1)
potem odczekac 4.1ms i:
0 0 0 0 1 1 n/c n/c n/c n/c (2)
odczekac 100 us i znowu to samo !
Jaki to ma sens ? przeciez nic sie nie zmienia.
Nigdzie nie pisze zeby miedzy tymi stanami ustawic
wszsytkie piny na 0, a za to troche dalej, zwracaja uwage
na to ze w pewnym momencie maja byc same zera:
Wait 40us
RS R/W DB7 DB6 DB5 DB4
0 0 0 0 0 0
Skad wiec wyswietlacz ma wiedziec ze sygnal (1) oraz
sygnal (2) to dwa rozne sygnaly a nie jeden ten sam ?
I podobny problem, co jezeli bede musial wyslac same
zera jako bardziej/mniej znaczaca czesc bajtu, skad program
ma wiedziec ze wlasnie w danej chwili chce przeslac te zera,
a nie jest to po prostu jakas 'chwila odpoczynku' ? bylo by to
jasne jezeli miedzy kolejnymi sygnalami nie zerowalo by sie pinow,
wtedy bylo by wiadomo ze zmiana na zera oznacza kolejny sygnal, ale
skoro miedzy sygnalami nie zeruje sie pinow to pierwsza omawiana
sytuacja nie ma sensu bo oba sygnaly sa identyczne i wyswietlacz
powinien je traktowac jako jede, i powstaje takie bledne kolo.
Niezle namieszalem ale mam nadzieje ze wiecie o co chodzi :-)
mowia krotko - po kazdym sygnale nalezy ustawic 000000 czy nie ?
Pozdrawiam
========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.dialog.net.pl!not-for-mai
From: "BobyX" <bobyx_at_nospam_piwko.pl>
Subject: Re: [pytanie laika] LCD przez LPT, jak zainicjowac
Date: Sat, 12 Jun 2004 17:37:09 +0200
Użytkownik "Keeller" <manaker_at_nospam_NOSPAMwp.pl> napisał:
odczekac 100 us i znowu to samo !
Jaki to ma sens ? przeciez nic sie nie zmienia.
ma taki, ze nie wiesz w jakim stanie jest kontroler wyswietlacza,
moze byc np. w 8bitowym... taka sekwencja zapewnia poprawna
inicjalizacje
a co do sygnalu ENABLE to chyba caly czas ma byc wysoki
programowalem ten wyswietlacz, ale z mikrokontrolera,
w troche innej konfiguracji sprzetowej
pozdrawiam
BobyX
========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai
From: Jarek Andrzejewski <jareka_at_nospam_dawid.com.pl>
Subject: Re: [pytanie laika] LCD przez LPT, jak zainicjowac
Date: Sat, 12 Jun 2004 18:15:46 +0200
On Sat, 12 Jun 2004 13:07:48 +0200, "Keeller" <manaker_at_nospam_NOSPAMwp.pl>
wrote:
potem odczekac 4.1ms i:
0 0 0 0 1 1 n/c n/c n/c n/c (2)
odczekac 100 us i znowu to samo !
bo jeśli przypadkiem LCD był w trrybie 4-bitowym, to oczekuje na dwie
"połówki" rozkazu. Jedna "wysyłka" spowodowałaby w takim przypadku, że
połowa następnego rozkazu zostałaby potraktowana przez LCD jako
młodsze bity tego rozkazu - lub innymi słowy: wszystkie dalsze rozkazy
były przesunięte "o pół bajtu"
--
pozdrawiam,
Jarek Andrzejewski
========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.nask.pl!news-stoc.telia.net!news-stoa.telia.net!telia.net!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai
From: "Keeller" <manaker_at_nospam_NOSPAMwp.pl>
Subject: Re: [pytanie laika] LCD przez LPT, jak zainicjowac
Date: Sat, 12 Jun 2004 18:26:01 +0200
Użytkownik "Jarek Andrzejewski" <jareka_at_nospam_dawid.com.pl> napisał w wiadomości
news:0oamc0l4fhnb7419dvo6bip6k226r0rd6r_at_nospam_4ax.com...
bo jeśli przypadkiem LCD był w trrybie 4-bitowym, to oczekuje na dwie
"połówki" rozkazu. Jedna "wysyłka" spowodowałaby w takim przypadku, że
połowa następnego rozkazu zostałaby potraktowana przez LCD jako
młodsze bity tego rozkazu - lub innymi słowy: wszystkie dalsze rozkazy
były przesunięte "o pół bajtu"
Dzieki za rade teraz juz rozumiem.
Z dokladniejszej analizy karty kanalogowej wywnioskowalem
ze moment przejscia sygnalu enable w stan niski oznacza
"wyslanie rokazu", na takiej zasadzie napisalem program i
wszystko dziala juz dobrze :-)
========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!news.onet.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai