Archiv verlassen und diese Seite im Standarddesign anzeigen : LCD PROBLEM
Hallo!
Eigentlich habe ich schon mal ne LCD library programmiert doch nun stehe ich wirklich vor einem rätsel.
entweder bin ich völlig überarbeitet oder keine ahnung was los is.
ich habe 2 sourcefiles beigelgt die meinermeinung nach mit dem atmega8l funktionieren sollten aber es nicht tun. die ports werden auch richtig auf ausgang bzw eingang gestellt...
bitte helft mir weiter ich sollte das lcd in 1 bis 2 wochen einwandfrei ansteuern können.
mfg lihp[/b]
linux_80
19.03.2006, 18:16
Hallo,
ich würde sagen, das mit dem enable geht zu schnell, Du musst dem LCD ein wenig Zeit geben damit es mitbekommt dass das enable high ist.
Evtl. würde ich die Daten zuerst auf die Leitung legen, dann erst das enable setzen, auch wenn normlerweise die Daten mit fallender Flanke übernommen werden sollen.
Und auch im 4-Bit Mode muss man alle 8 Bit rüberschieben, das Busy kommt erst danach, beim lcdWriteInitcmd() geht da was ab.
Wie lange wartest Du nach einem Reset bis das erste Byte gesendet wird, der Controller im LCD kann etwas länger brauchen als der AVR, so das die ersten Bytes ins Nirvana gehen. Wenn Du schon das BusyFlag überprüfst, kannst Du das auch schon vorher machen.
Hallo!
Danke für die schnelle Antwort.
Ich habe schreibe jetzt die Daten bevor ich das Enable setze.
Zwischen Enable setzen und loeschen warte ich jetzt immer 5µs.
Mit der lcdWriteInitCmd(..) müsste schon alles passen da zu dem Zeitpunkt wo ich diese Aufrufe ja noch im 8 bit modus arbeite und die
unteren 4 Daten Leitungen auf masse hängen.
Vor dem Initialisieren warte ich auf einen Tastendruck der mit dem Leuchten einer Led dann bestätigt wird.
Naja auf jeden fall gehts noch immer nicht \:D/ .
Bitt helft mir ](*,)
mfg lihp
linux_80
19.03.2006, 23:15
Auch wenn man auf den 4-BitMode umschaltet, mus man schon beide Teile des Bytes übertragen, sonst haut es nicht hin !
Denn im ersten Nibble ist schon das Bit für den 4-BitMode auf 0 und es wird umgestellt.
Edit:
Bzw. schreib statt den 0x30 gleich 0x20. 0x30 heisst 8Bit Mode.
Noch eine kurze Frage zwischendurch,
Bist Du Dir sicher, daß Du ein 44780 Kontroller hast, oder vielleicht nur einen Kompatiblen ?
Ich hab mehrere Displays zu hause und die Initroutine ist schon mal ganz anders, obwohl Sie alle 44780 "Kompatibel" sind.
Ein Blick ins Dattenblatt ist sehr wichtig.
Noch ein Tip,
Lass den Busy Flag mal weg, mach für den Anfang lange Pausen, wenn das dann alles klappt, kannst Du immernoch den Flag auslesen, und benutze bitte die "code" tags für Deine Programme.
Gruß Sebastian
hallo.
hab jetzt statt der busy flag abfrage eine verzögerung eingebaut...jetzt funktioniert es.
danke an alle.
mfg lihp
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.