RTV forum PL | NewsGroups PL

Jak zainicjować wyświetlacz LCD 4-bitowy HD44780 w Delphi, zamiast 8-bitowego?

problem z inicjacja LCD

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Jak zainicjować wyświetlacz LCD 4-bitowy HD44780 w Delphi, zamiast 8-bitowego?

krokodyl
Guest

Thu Apr 10, 2008 9:14 am   



witam.

Zmontowałem połączenia jak na stronie:
http://www.realitynet.pl/articles/lcd/schemat_2.jpg
podłączyłem wyświetlacze LCD na układzie HD44780 16x2 lub 20x4 przy
zastosowaniu programu: http://lcdsmartie.sourceforge.net/ sprawdziłem
poprawność połączeń i LCD ładnie działa.

Chciałem potrenować sterowanie wyświetlaczem z delphi posiłkując się
wiadomościami ze stron:
http://freefm.pluton.one.pl/mike/lpt.html
http://4programmers.net/Delphi/Artyku%C5%82y/Sterowanie_wyswietlaczem_LCD_przez_port_LPT

użyłem kodu ze strony 4programmers i działa wyświetlanie dowolnego tekstu.
chciałem potrenować sterowanie LCD 4 bitowo (przed użyciem do sterowania
układu o wyjściu 4 bitowym) i tu pojawiają się schody
wyświetlacz nie chce się zainicjalizować pry użyciu 4 bitów.
W wyżej wymienionym programie jest procedura LCD_Init, która wywołuje 3 razy
LCD_WriteCommand($3Cool (czyli 0011 1000) ale jest to instrukcja do sterowania
8bitowego, gdy zamieniam ją na właściwą czyli 0011**** -> 0011 0000 -> $30
wyświetlacz się nie inicjalizuje prawidłowo.

Gdzie jest błąd.
Dlaczego LDC nie działa przy $30 a działa przy $38
Nigdzie nie mogę znaleźć odpowiedzi wszędzie napisane ze wystarczy zapisać 3
krotnie $30 z przerwami. - a to nie działa

--
Pozdrawiam
Paweł

Henry(k)
Guest

Thu Apr 10, 2008 11:06 am   





krokodyl
Guest

Thu Apr 10, 2008 11:16 am   



Quote:
W wyżej wymienionym programie jest procedura LCD_Init, która wywołuje 3
razy
LCD_WriteCommand($3Cool (czyli 0011 1000) ale jest to instrukcja do
sterowania
8bitowego, gdy zamieniam ją na właściwą czyli 0011**** -> 0011 0000 -
$30
wyświetlacz się nie inicjalizuje prawidłowo.

Ja wysyłałem 1 raz 0010 1000 - wg pdf'a 5 bit to tryb 4/8-bit.
Ściagnij PDF z opisem HD44780 tam instrukcje są ladnie rozpisane.


mam instrukcje HD44780 i jest podane ze wysyla sie 3 krotnie 0011****
obojetne czy przy 8 czy 4 bitach.
Ty Henry wysyłasz 0010 1000 ale do tego jest potrzebne sterowanie 8 bitowe.
a ja chce wszystko robic tylko 4 bitami.

Pozdrawiam.
Paweł

krokodyl
Guest

Thu Apr 10, 2008 11:16 am   



Quote:
W wyżej wymienionym programie jest procedura LCD_Init, która wywołuje 3
razy
LCD_WriteCommand($3Cool (czyli 0011 1000) ale jest to instrukcja do
sterowania
8bitowego, gdy zamieniam ją na właściwą czyli 0011**** -> 0011 0000 -
$30
wyświetlacz się nie inicjalizuje prawidłowo.

Ja wysyłałem 1 raz 0010 1000 - wg pdf'a 5 bit to tryb 4/8-bit.
Ściagnij PDF z opisem HD44780 tam instrukcje są ladnie rozpisane.


mam instrukcje HD44780 i jest podane ze wysyla sie 3 krotnie 0011****
obojetne czy przy 8 czy 4 bitach.
Ty Henry wysyłasz 0010 1000 ale do tego jest potrzebne sterowanie 8 bitowe.
a ja chce wszystko robic tylko 4 bitami.

Pozdrawiam.
Paweł

EM
Guest

Thu Apr 10, 2008 11:52 am   



Quote:
Ja wysyłałem 1 raz 0010 1000 - wg pdf'a 5 bit to tryb 4/8-bit.
Ściagnij PDF z opisem HD44780 tam instrukcje są ladnie rozpisane.


mam instrukcje HD44780 i jest podane ze wysyla sie 3 krotnie 0011****
obojetne czy przy 8 czy 4 bitach.
Ty Henry wysyłasz 0010 1000 ale do tego jest potrzebne sterowanie 8
bitowe. a ja chce wszystko robic tylko 4 bitami.


A według mojega pdfa wychodzi, że powinno być wysłane
0010
0010
00**
--
Pozdr
EM

EM
Guest

Thu Apr 10, 2008 11:52 am   



Quote:
Ja wysyłałem 1 raz 0010 1000 - wg pdf'a 5 bit to tryb 4/8-bit.
Ściagnij PDF z opisem HD44780 tam instrukcje są ladnie rozpisane.


mam instrukcje HD44780 i jest podane ze wysyla sie 3 krotnie 0011****
obojetne czy przy 8 czy 4 bitach.
Ty Henry wysyłasz 0010 1000 ale do tego jest potrzebne sterowanie 8
bitowe. a ja chce wszystko robic tylko 4 bitami.


A według mojega pdfa wychodzi, że powinno być wysłane
0010
0010
00**
--
Pozdr
EM

krokodyl
Guest

Thu Apr 10, 2008 12:15 pm   



Użytkownik "EM" <edim123@poczta.onet.pl> napisał w wiadomości
news:ftkrh8$9mh$1@news.onet.pl...
Quote:
Ja wysyłałem 1 raz 0010 1000 - wg pdf'a 5 bit to tryb 4/8-bit.
Ściagnij PDF z opisem HD44780 tam instrukcje są ladnie rozpisane.


mam instrukcje HD44780 i jest podane ze wysyla sie 3 krotnie 0011****
obojetne czy przy 8 czy 4 bitach.
Ty Henry wysyłasz 0010 1000 ale do tego jest potrzebne sterowanie 8
bitowe. a ja chce wszystko robic tylko 4 bitami.


A według mojega pdfa wychodzi, że powinno być wysłane
0010
0010
00**
--

Może coś że widzę:
http://pdf1.alldatasheet.com/datasheet-pdf/view/63673/HITACHI/HD44780/datasheet.pdf
albo zle wyjasnilem
na stronie 45 jest graf inicjalizacji 8bit 0011****, a na stronie 46 dla 4
bitow 0011 wykonac 3 razy dopiero dalej ustawia sie wlasciwy tryb pracy na 4
bit 0010 (D7-D4) (D3-D0 mam wtedy 0000) i dalej reszta ustawien.

Jak w programie zainicjalizuję go tak jak pisałem przy urzyciu 8 bitów
(LCD_WriteCommand($3Cool (czyli 0011 1000) ) czyli znikną początkowe czarne
kwadraciki dam inicjalizacje na nowo 4 bitowo (LCD_WriteCommand($30) (czyli
0011 0000) ) to kwadraciki pojawiają się na nowo. Nie wydaje mi się aby to
był problem ze kilka razy próbuję inicjalizować wyświetlacz, bo jak dam
kolejny raz 8 bitow (LCD_WriteCommand($3Cool (czyli 0011 1000) ) to kwadraciki
znikają i można sterować.
I dlaczego działa przy $38 a nie $30??

Pozdrawiam

krokodyl
Guest

Thu Apr 10, 2008 12:15 pm   



Użytkownik "EM" <edim123@poczta.onet.pl> napisał w wiadomości
news:ftkrh8$9mh$1@news.onet.pl...
Quote:
Ja wysyłałem 1 raz 0010 1000 - wg pdf'a 5 bit to tryb 4/8-bit.
Ściagnij PDF z opisem HD44780 tam instrukcje są ladnie rozpisane.


mam instrukcje HD44780 i jest podane ze wysyla sie 3 krotnie 0011****
obojetne czy przy 8 czy 4 bitach.
Ty Henry wysyłasz 0010 1000 ale do tego jest potrzebne sterowanie 8
bitowe. a ja chce wszystko robic tylko 4 bitami.


A według mojega pdfa wychodzi, że powinno być wysłane
0010
0010
00**
--

Może coś że widzę:
http://pdf1.alldatasheet.com/datasheet-pdf/view/63673/HITACHI/HD44780/datasheet.pdf
albo zle wyjasnilem
na stronie 45 jest graf inicjalizacji 8bit 0011****, a na stronie 46 dla 4
bitow 0011 wykonac 3 razy dopiero dalej ustawia sie wlasciwy tryb pracy na 4
bit 0010 (D7-D4) (D3-D0 mam wtedy 0000) i dalej reszta ustawien.

Jak w programie zainicjalizuję go tak jak pisałem przy urzyciu 8 bitów
(LCD_WriteCommand($3Cool (czyli 0011 1000) ) czyli znikną początkowe czarne
kwadraciki dam inicjalizacje na nowo 4 bitowo (LCD_WriteCommand($30) (czyli
0011 0000) ) to kwadraciki pojawiają się na nowo. Nie wydaje mi się aby to
był problem ze kilka razy próbuję inicjalizować wyświetlacz, bo jak dam
kolejny raz 8 bitow (LCD_WriteCommand($3Cool (czyli 0011 1000) ) to kwadraciki
znikają i można sterować.
I dlaczego działa przy $38 a nie $30??

Pozdrawiam

Henry(k)
Guest

Thu Apr 10, 2008 1:38 pm   



Dnia Thu, 10 Apr 2008 12:16:18 +0200, krokodyl napisał(a):

Quote:
mam instrukcje HD44780 i jest podane ze wysyla sie 3 krotnie 0011****
obojetne czy przy 8 czy 4 bitach.
Ty Henry wysyłasz 0010 1000 ale do tego jest potrzebne sterowanie 8 bitowe.
a ja chce wszystko robic tylko 4 bitami.

Mam procedurkę w asm która wysyła 4-bitowo najpierw górę, a potem dół
bajtu, czyli wysyła:
0010
1000

tylko masz rację - przed tym wysyłam jeszcze 0010 maskując port
więc w sumie trzy komendy:
0010 ; init
0010 ; 4-bity
1000 ; wyświetlacz 2 linie, 5x8

a potem już tylko włączanie kursorów itp...

Pozdrawiam,
Henry

entroper
Guest

Thu Apr 10, 2008 4:58 pm   



Użytkownik "krokodyl" <pawel@tbf.com.pl> napisał w wiadomości
news:ftkst8$enc$1@news.onet.pl...

Quote:
a na stronie 46 dla 4 bitow 0011 wykonac 3 razy

akurat w tej chwili strona niedostępna, ale w moim lokalnym pdf-ie jest
dokładnie tak jak Henry pisał - pierwszą instrukcją jest 0010 (pojedynczy
wpis - i jest to jedyny pojedynczy wpis po włączeniu zasilania) i potem 0010
00** jako właściwa inicjalizacja, wpisywane już jako dane 4-bitowe (czyli 2
kolejne wpisy).

e.

Henry(k)
Guest

Thu Apr 10, 2008 5:27 pm   



Dnia Thu, 10 Apr 2008 14:38:29 +0200, Henry(k) napisał(a):

Quote:
a potem już tylko włączanie kursorów itp...

...i jeszcze jedno - jakby ktoś chciał się pobawić to niech
uważa na przerwy między komendami - LCD gubi komendy które
są podane za szybko.

Pozdrawiam,
Henry

EM
Guest

Fri Apr 11, 2008 11:41 am   



Quote:
Może coś że widzę:
http://pdf1.alldatasheet.com/datasheet-pdf/view/63673/HITACHI/HD44780/datasheet.pdf
albo zle wyjasnilem
na stronie 45 jest graf inicjalizacji 8bit 0011****, a na stronie 46 dla 4
bitow 0011 wykonac 3 razy dopiero dalej ustawia sie wlasciwy tryb pracy na
4 bit 0010 (D7-D4) (D3-D0 mam wtedy 0000) i dalej reszta ustawien.

Jak w programie zainicjalizuję go tak jak pisałem przy urzyciu 8 bitów
(LCD_WriteCommand($3Cool (czyli 0011 1000) ) czyli znikną początkowe czarne
kwadraciki dam inicjalizacje na nowo 4 bitowo (LCD_WriteCommand($30)
(czyli 0011 0000) ) to kwadraciki pojawiają się na nowo. Nie wydaje mi się
aby to był problem ze kilka razy próbuję inicjalizować wyświetlacz, bo jak
dam kolejny raz 8 bitow (LCD_WriteCommand($3Cool (czyli 0011 1000) ) to
kwadraciki znikają i można sterować.
I dlaczego działa przy $38 a nie $30??

Ogólnie racja z tą inicjalizacją.
Sprawdzałem u siebie w obsłudze i zgadza się ogólnie z tym grafem - też się
na nim wzorowałem pisząc to.
Niestety trudno wyczuć co może być nie tak, gdy się używa PCta do sterowania
LCD przez LPT.
Na początek próbowałbym z dłuzszymi czasami przerwy.
Nie wiadomo też jak to jest ze sterowaniem LPT - chodzi o wyzwolenie impulsu
E.
W takim wypadku warto by prześledzić przebiegi na oscyloskopie.
--
Pozdr
EM

EM
Guest

Fri Apr 11, 2008 11:41 am   



Quote:
Może coś że widzę:
http://pdf1.alldatasheet.com/datasheet-pdf/view/63673/HITACHI/HD44780/datasheet.pdf
albo zle wyjasnilem
na stronie 45 jest graf inicjalizacji 8bit 0011****, a na stronie 46 dla 4
bitow 0011 wykonac 3 razy dopiero dalej ustawia sie wlasciwy tryb pracy na
4 bit 0010 (D7-D4) (D3-D0 mam wtedy 0000) i dalej reszta ustawien.

Jak w programie zainicjalizuję go tak jak pisałem przy urzyciu 8 bitów
(LCD_WriteCommand($3Cool (czyli 0011 1000) ) czyli znikną początkowe czarne
kwadraciki dam inicjalizacje na nowo 4 bitowo (LCD_WriteCommand($30)
(czyli 0011 0000) ) to kwadraciki pojawiają się na nowo. Nie wydaje mi się
aby to był problem ze kilka razy próbuję inicjalizować wyświetlacz, bo jak
dam kolejny raz 8 bitow (LCD_WriteCommand($3Cool (czyli 0011 1000) ) to
kwadraciki znikają i można sterować.
I dlaczego działa przy $38 a nie $30??

Ogólnie racja z tą inicjalizacją.
Sprawdzałem u siebie w obsłudze i zgadza się ogólnie z tym grafem - też się
na nim wzorowałem pisząc to.
Niestety trudno wyczuć co może być nie tak, gdy się używa PCta do sterowania
LCD przez LPT.
Na początek próbowałbym z dłuzszymi czasami przerwy.
Nie wiadomo też jak to jest ze sterowaniem LPT - chodzi o wyzwolenie impulsu
E.
W takim wypadku warto by prześledzić przebiegi na oscyloskopie.
--
Pozdr
EM

elektroda NewsGroups Forum Index - Elektronika Polska - Jak zainicjować wyświetlacz LCD 4-bitowy HD44780 w Delphi, zamiast 8-bitowego?

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map