problem z wyswietlaczem na hd44780
Masz problem? Zapytaj na forum elektroda.pl
From: <rkobra_at_nospam_poczta.onet.pl>
Subject: problem z wyswietlaczem na hd44780
Date: 22 Aug 2001 12:34:06 +0200
Chcialem sterowac wyswietlaczem LCD 2x16 opartym na sterowniku hd44780A92.
zaraz na poczatku pojawil sie problem, ponizej przedstawiony jest program
ktory powinien napisac TEST ale tego nie robi.
Mikrokontroler ktorym to steruje to DS89C420 zegar 22.1184Mhz ale to chyba nie
ma najwiekszego znaczenia.
Ciekawe natomiast jest to ze program (ten ponizej)przechodzi przez wszystkie
instrukcje i na wyswietlaczu
albo pojawi sie ktoras litera w dowolnym miejscu albo nic,lub jakies smieci,
wniosek taki ze flaga busy=DB7 zmienia sie
z 1 na 0 jak nie wykonuje instrukcji, dlaczego wiec nic nie wyswietla, czyzby
robil cos zle ?
Myslalem ze wyswietlacz jest zepsuty wiec kupilem drugi dzieje sie tak samo
i nie wiem gdzie tkwi problem, program wydaje sie dobry troche zerzniete ze
strony www.8052.com.
Jezeli natomiast zamiast instrukcji LCALL CZEAKJ_LCD wstawie wszedzie LCALL
CZAS to dziala poprawnie
wyswietli TEST tylko rzecz jasna wolniej. Jesli chodzi o czesc elektroniczna to
jest w porzadku zreszta
w z LCALL CZAS dziala poprawnie.
pomozcie rozwiazac mi ten problem a moze ktos podesle mi jakis na 100%
dzialajacy
program abym mogl sprawdzic te wyswietlacze i wyczaic co robie nie tak, lub
sprawdzi moj program u siebie
czy aby dziala poprawnie na innym wyswietlaczu
proszeo info na priva na ten adres kobra_at_nospam_bobo.ds5.agh.edu.pl
dzieki
$mod51
RS EQU P0.0
RW EQU P0.1
EN EQU P0.2
DB0 EQU P2.0
DB1 EQU P2.1
DB2 EQU P2.2
DB3 EQU P2.3
DB4 EQU P2.4
DB5 EQU P2.5
DB6 EQU P2.6
DB7 EQU P2.7
DANE EQU P2
DIODA EQU P3.7
JMP START
ORG 100H
START:
LCALL CZAS
SETB EN
CLR RS
CLR RW
MOV DANE,#30H
CLR EN
LCALL CZAS
SETB EN
CLR RS
CLR RW
MOV DANE,#30H
CLR EN
LCALL CZAS
SETB EN
CLR RS
CLR RW
MOV DANE,#30H
CLR EN
LCALL CZAS ;konczy sie inicjalizacja przez instrukcje
LCALL INIT_LCD ;ustawienia lcd tryb wyswietlania i etc..
MOV A,#'T'
LCALL NAPISZ
MOV A,#'E'
LCALL NAPISZ
MOV A,#'S'
LCALL NAPISZ
MOV A,#'T'
LCALL NAPISZ
CLR DIODA
LOOP:
NOP
JMP LOOP
CZAS:
MOV A,#4D
CZAS1: MOV TMOD,#01h
MOV TH0,#00H
MOV TL0,#00H
SETB TR0
CLR TF0
JNB TF0,$
DEC A
CJNE A,#0B,CZAS1
RET
INIT_LCD:
SETB EN
CLR RS
MOV DANE,#38h
CLR EN
LCALL CZEKAJ_LCD
SETB EN
CLR RS
MOV DANE,#0Eh
CLR EN
LCALL CZEKAJ_LCD
SETB EN
CLR RS
MOV DANE,#06h
CLR EN
LCALL CZEKAJ_LCD
SETB EN
CLR RS
MOV DANE,#01h
CLR EN
LCALL CZEKAJ_LCD
RET
NAPISZ:
SETB EN
CLR RW
SETB RS
MOV DANE,A
CLR EN
LCALL CZEKAJ_LCD
RET
CZEKAJ_LCD:
SETB EN
CLR RS
SETB RW
MOV DANE,#0FFh
MOV A,DANE
JB ACC.7,CZEKAJ_LCD
CLR EN
CLR RW
RET
END
--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
From: "AKcorp" <AKcorp_at_nospam_friko.onet.pl>
Subject: Re: problem z wyswietlaczem na hd44780
Date: Wed, 22 Aug 2001 17:11:41 +0200
Ja nie czekalem na busy flag, tylko tyle ile jest napisane
w dokumentacji, dziala bez pudla i na tyle szybko, zeby
zrobic np animowane literki. Wiekszosc komend ma czas
wykonania 40uS, to (jak dla mnie) dosyc szybko.
A przepiekny opis wraz z kodami zrodlowymi jest tu:
http://home.iae.nl/users/pouweha/lcd/lcd.shtml
Pozdr,
A.
From: "Andrzej" <andk_at_nospam_zeus.polsl.gliwice.pl>
Subject: Re: problem z wyswietlaczem na hd44780
Date: Wed, 22 Aug 2001 22:06:38 +0200
Hej!
Nie analizowałem dokład nie problemu, ale bobież z tego co widzę to
wyświetlacz jes zimny chociaż go programujesz. Sprawdz czy w cyklu zapisu
mikrokontroler zapwenia czas HOLD, czy dane na magistrali są przetrzymywane
jeszce po ujemny zboczy sygnału Enable. Moim zadaniem LCD wsysa dane własnie
na ujemny zboczy tego sygnału. U mnie właśnie z tym był problem teraz działa
OK.
Pozdrawiam
Andrzej
From: Grzegorz Lentka <lentka_at_nospam_juggernaut.eti.pg.gda.pl>
Subject: Re: problem z wyswietlaczem na hd44780
Date: Thu, 23 Aug 2001 10:54:05 -0700
rkobra_at_nospam_poczta.onet.pl wrote:
Chcialem sterowac wyswietlaczem LCD 2x16 opartym na sterowniku hd44780A92.
zaraz na poczatku pojawil sie problem, ponizej przedstawiony jest program
ktory powinien napisac TEST ale tego nie robi.
Mikrokontroler ktorym to steruje to DS89C420 zegar 22.1184Mhz ale to chyba nie
ma najwiekszego znaczenia.
Ciekawe natomiast jest to ze program (ten ponizej)przechodzi przez wszystkie
instrukcje i na wyswietlaczu
albo pojawi sie ktoras litera w dowolnym miejscu albo nic,lub jakies smieci,
wniosek taki ze flaga busy=DB7 zmienia sie
z 1 na 0 jak nie wykonuje instrukcji, dlaczego wiec nic nie wyswietla, czyzby
robil cos zle ?
Myslalem ze wyswietlacz jest zepsuty wiec kupilem drugi dzieje sie tak samo
i nie wiem gdzie tkwi problem, program wydaje sie dobry troche zerzniete ze
strony www.8052.com.
Jezeli natomiast zamiast instrukcji LCALL CZEAKJ_LCD wstawie wszedzie LCALL
CZAS to dziala poprawnie
wyswietli TEST tylko rzecz jasna wolniej. Jesli chodzi o czesc elektroniczna to
jest w porzadku zreszta
w z LCALL CZAS dziala poprawnie.
pomozcie rozwiazac mi ten problem a moze ktos podesle mi jakis na 100%
dzialajacy
program abym mogl sprawdzic te wyswietlacze i wyczaic co robie nie tak, lub
sprawdzi moj program u siebie
czy aby dziala poprawnie na innym wyswietlaczu
proszeo info na priva na ten adres kobra_at_nospam_bobo.ds5.agh.edu.pl
dzieki
Sprobuj zrobic to tak
CZEKAJ_LCD:
MOV DANE,#0FFh
CLR RS
SETB RW
SETB EN
XXX: MOV A,DANE
JB ACC.7,XXX
CLR EN
CLR RW
RET
Pozdrowienia
Grzegorz "GREG" Lentka
From: "Wojtek Sujkowski" <wpsujkowski_at_nospam_qdnet.pl>
Subject: Re: problem z wyswietlaczem na hd44780
Date: Wed, 22 Aug 2001 23:30:44 +0200
<rkobra_at_nospam_poczta.onet.pl> wrote in message
news:1601.00000000.3b838a9e_at_nospam_newsgate.onet.pl...
Chcialem sterowac wyswietlaczem LCD 2x16 opartym na sterowniku
hd44780A92.
zaraz na poczatku pojawil sie problem, ponizej przedstawiony jest
program
ktory powinien napisac TEST ale tego nie robi.
Mikrokontroler ktorym to steruje to DS89C420 zegar 22.1184Mhz ale to
chyba nie
ma najwiekszego znaczenia.
Ciekawe natomiast jest to ze program (ten ponizej)przechodzi przez
wszystkie
instrukcje i na wyswietlaczu
albo pojawi sie ktoras litera w dowolnym miejscu albo nic,lub jakies
smieci,
wniosek taki ze flaga busy=DB7 zmienia sie
z 1 na 0 jak nie wykonuje instrukcji, dlaczego wiec nic nie
wyswietla, czyzby
robil cos zle ?
Myslalem ze wyswietlacz jest zepsuty wiec kupilem drugi dzieje sie
tak samo
i nie wiem gdzie tkwi problem, program wydaje sie dobry troche
zerzniete ze
strony www.8052.com.
Jezeli natomiast zamiast instrukcji LCALL CZEAKJ_LCD wstawie
wszedzie LCALL
CZAS to dziala poprawnie
wyswietli TEST tylko rzecz jasna wolniej. Jesli chodzi o czesc
elektroniczna to
jest w porzadku zreszta
w z LCALL CZAS dziala poprawnie.
pomozcie rozwiazac mi ten problem a moze ktos podesle mi jakis na
100%
dzialajacy
program abym mogl sprawdzic te wyswietlacze i wyczaic co robie nie
tak, lub
sprawdzi moj program u siebie
czy aby dziala poprawnie na innym wyswietlaczu
Wystarczy, ze w procedurze CZEKAJ_LCD instrukcje CLR EN wstawisz tuz
po instrukcji MOV A,DANE
Wojtek