Hallo, alle Informationen im Überblick: CPU: Atmega32 Controller: HD44780 LCD: EA W164B-NLW 4*16 Zeichen Bus: 4 bit ich versuche eben diese kombination zum schreiben zu bringen. Ich suche in der Kleinen Anleitung und im Netz vergeblich die Initialisierungsinformationen bezüglich der 4*16 Initialisierung. Kann mir da jemand Helfen? Was und wann muss zu beginn Initialisiert werden? Bisweilen werden die 1. und die 3. Zeile angezeigt. Allerdings nur Zahlen. Buchstaben werden als Zeichen dargestellt. Das liegt vermutlich daran da ich nur die Initialisierungsinformationen für ein zwei zeiliges Display besitze. Im Tutorial habe ich auch keine Informationen über 4 x 16 finden können. Vielen Dank LG
LCD-Library von P. Fleury. Einfach mal googeln.
Michael S. schrieb: > Initialisierungsinformationen bezüglich der 4*16 Initialisierung. > Kann mir da jemand Helfen? Was und wann muss zu beginn Initialisiert > werden? Bisweilen werden die 1. und die 3. Zeile angezeigt. Mit hoher Wahrscheinlichkeit nicht auf zweizeilig eingestellt. 4x... Displays sind intern zweizeilig, dabei bilden 1. und 3. Zeile intern eine lange erste Zeile. Wenn also nur die an sind, steht das Display auf seinem Default - einzeilig > Im Tutorial Welches? Ich hatte mit der Doku hier jedenfalls keine Probleme, ein 4x20 komplett anzusteuern: http://sprut.de/electronic/lcd/index.htm#befehle (ich wollte die fertige Lib aus Gründen auch nicht benutzen.)
wenn ich das aus den Datenblättern richtig lese. Muss ich eine 0x20 senden um im 4 bit Modus 2 Zeilen und 5 x 8 Zeichen darzustellen. Nur so zeigt er Buchstaben nicht correkt, auf der 1. Zeile die Zahlen zumindest richtig an. 2. und 4. sind aus. Auf der 3. werden auch die zahlen nicht correkt dargestellt.
Michael S. schrieb: > wenn ich das aus den Datenblättern richtig lese. Muss ich eine > 0x20 senden um im 4 bit Modus 2 Zeilen und 5 x 8 Zeichen darzustellen. Wieso? 0x20 bedeutet Function Set, 4 bit, einzeilig, 5x8. Guck in die Liste bei dem Link den ich geschickt habe. Was soll überhaupt bedeuten dass die Buchstaben durch "Zeichen" dargestellt werden? Hört sich eigentlich richtig an. Meinst du Sonderzeichen? Was gibst du aus und was siehst du stattdessen? Was siehst du in deiner dritten Zeile anstelle von Ziffern?
Ohne deinen Code zu sehen kann man dir kaum helfen. Zu schnell sollte man so ein Display nicht ansteuern. Und bei ATMega32 und evtl. PORTC kommt noch ein aktives JTAG in Frage für Fehler.
auf Dieser Grundlage: Function Set 0 0 1 DL N F 0 0 DL: Interface 8-Bit/4-Bit lang N: ein-/zwei-zeilig F: 5x8/5x11 Darstellung Ergibt sich doch dann 0x38
:
Bearbeitet durch User
Michael S. schrieb: > Ergibt sich doch dann 0x38 Nein 0x28. DL=0 steht für 4 Bit, steht doch unten. Mit 0x38 aktivierst du auch gleichzeitig 8 Bit Modus. (Nicht, dass ich nicht ohnehin 8 Bit empfehlen würde, weil unempfindlicher gegen den Verlust eines einzelnen Enable-Pulses, der dir bei 4 Bit dauerhaft die Kommunikation versaut)
Hallo, foo schrieb: > Nein 0x28. DL=0 steht für 4 Bit, steht doch unten. Mit 0x38 aktivierst > du auch gleichzeitig 8 Bit Modus. Hm, so hatte ich das zu Beginn auch. Doch hier habe ich keinen Erfolg. Vielleicht sollte ich doch noch einmal an der Hardware ansetzen. Ja acht bit gefallen mir ja auch besser. holger schrieb: > Zu schnell sollte man so ein Display nicht ansteuern. > Und bei ATMega32 und evtl. PORTC kommt noch ein > aktives JTAG in Frage für Fehler. Was meinst du ist zu schnell, CPU läuft mit intern 8MHz? Betrieben an PortB von daher kommt JTAG denk ich nicht in Frage foo schrieb: > Was soll überhaupt bedeuten dass die Buchstaben durch "Zeichen" > dargestellt werden? Hört sich eigentlich richtig an. Meinst du > Sonderzeichen? Was gibst du aus und was siehst du stattdessen? Ich schicke derweilen 0123456789 und ausgegeben werden 012389:;45 Buchstaben werden in SOnderzeichen gezeigt. Danke euch und Lg
:
Bearbeitet durch User
Michael S. schrieb: > Was meinst du ist zu schnell, CPU läuft mit intern 8MHz? Das Display braucht ne bestimmte Zeit um die Befehle, die du ihm schickst, zu verarbeiten. Es gibt zwei Wege das zu handhaben: - entweder du liest das Busy-Flag aus. Dazu brauchst du Lesezugriff aufs Display. Je nach Verschaltung ist das unmöglich, z.b. falls DB0-7 an einem Schieberegister hängen, um I/O-Pins zu sparen. - es gibt garantierte Maximalzeiten, in denen ein bestimmter Befehl fertig ist. D.h. du schickst den Befehl und machst ein entsprechend langes _delay_us. Dann hat es den Befehl sicher verarbeitet und ist definitiv bereit für den nächsten Befehl. Rat mal auf welcher Webseite die benötigte Zeit pro Befehl steht ;) Michael S. schrieb: > Ich schicke derweilen 0123456789 und ausgegeben werden 012389:;45 > Buchstaben werden in SOnderzeichen gezeigt. Hast du DB3 und DB2 vertauscht? Das würde dazu passen und auch erklären, warum deine Initialisierung nicht klappt.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.