problem z wyswietlaczem LCD 1x16

Nov 09, 2005 8 Replies

Witam,



Mam problem z zaprogramowaniem wyswietlacza LCD 1x16 znaków. Wy¶wietlacz wy¶wietla pierwsze 8 znaków. Kilka tygodni temu opisywa³em ten problem i poradzono mi ¿ebym szuka³ swoich znaków w drugiej linii. Próbowa³em inicjalizowaæ wyswietlacz na rózne sposoby (1 linia i dwie linie) ale wcia¿ mam tylko 8 znaków (nawet jakwysy³am znaki w nieskoñczonej pêtli). Wyswietlacz jest raczej dobry bo dwa od róznych dostawców zachowuja sie tak samo (choæ dwa od innych dostawców pracuj± poprawnie). Czy kto¶ z moze mi wys³aæ sekwencje rozkazów jakie powinienem wys³ac do wyswietlacza aby ten wy¶wietla³ wszystkie 16 znaków? Ponizej doda³em kawa³ek swojego kodu. Dziêki za wszelka pomoc.



KS


Delay(100); LCDiout(56); Delay(550); LCDiout(56); Delay(550); LCDiout(2); Delay(550); LCDiout(100); Delay(550); LCDiout(12); Delay(550); LCDiout(2); Delay(25); put_messagee("moj tekst "); Delay(100);



procedura LCDiout wyglada nastêpuj±co



LCDiout: CLR LCDDAT ;linia wybieraj±ca znak/instrukcja MOV P2,R7 ;wy¶wietlacz pod³±czony na 8 liniach do portu P2 SETB LCDPULS ;sygna³ Enable LCALL DELAY CLR LCDPULS LCALL DELAY RET


Jeśli to jest taki udawany wyświetlacz 2x8, to po 8 znakach musisz przestawić kursor do pierwszego znaku drugiego wiersza i pisać dalej.

TP.

KS snipped-for-privacy@interia.pl napisał(a):

Trzeba "poprosić" LCD-ka , by zechciał wyświetlać znaki w 2 linii , sam na to nie wpadnie ;) Należy wysłać kod sterujący , a będzie to prawdopodobnie 0xC0. Gdybyś chciał powrócić do 1 linjii , to należy wysłac 0x80 , bądź Cls czy Home.

Piotrek

KS napisał(a):

Po prostu wyslij znaki do drugiej lini! wiele wyswietlaczy 1x16 to wyswietlacze 2x8 ale drugi wiersz jest "w jednym ciagu" z pierwszym, wiec inicjalizujesz wyswietlacz jako 2x8 (lub 2x16), i wyswietlasz w 2 wierszach, a ogladasz w jednym

Dziêki za odpowiedzi,

W³asnie wpisa³em instrukcje LCDiout(192); i niestety dalej nic.

U¿ytkownik "KS" snipped-for-privacy@interia.pl napisa³ w wiadomo¶ci news:dktena$i0f$ snipped-for-privacy@news.dialog.net.pl...

Je¶li walisz w niego znaki non stop, a on wy¶wietla tylko 8 znaczy ¿e jest ¼le zainicjowany, Byæ mo¿e Twoja procedura inicjowania nie jest taka jak± przewidzia³ producent?

KS snipped-for-privacy@interia.pl napisał(a):

A gdzie Entry Mode Set ??? A Cls ???

Mam nadzieję , że ten Twój LCD jest na sterowniku HD44780 ? Jeśli tak , to napisz co robi Twoja funkcja inicjująca LCD , bo mi coś w niej nie gra :( A funkcja Delay(x) , to w jakich jednostkach "wyskalowana" uS,mS, czy może jeszcze cos innego ? Spróbuj może tak zainicjować LCD: .. LCDiout(56); Delay(550); LCDiout(12); Delay(550); LCDiout(6); Delay(550); LCDiout(1); Delay(550); LCDiout(192); Delay(25); .. Teoretycznie powinien wyświetlić napis od 9-go znaku.

Piotrek

PS Warto używać zapisu szesnastkowego liczb, jest bardziej czytelny.

Nie jestem specem, ale sam mialem podobne problemy z takim wyswietlaczem. Okazalo sie, ze dawalem mu za malo czasu na inicjalizacje. Moj uklad nie sprawdzal linii BUSY, tylko troche czekal po kazdej komendzie. Okazalo sie, ze inicjalizacja zajmuje bardzo duzo czasu (chyba ponad 1,5 ms). Byc moze masz ten sam problem. Pozdrowienia, MAciej

U¿ytkownik "mpal" snipped-for-privacy@mat.dodajh.uni.wroc.pl> napisa³ w wiadomo¶ci news:dkvvnh$ll6$ snipped-for-privacy@nemesis.news.tpi.pl...

Podczas inicjowania linia busy jest nie aktywna, trzeba dok³adnie zachowaæ minimalne wymagania czasowe

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required