Hallo Zusammen, habe vor langem einen LCD ersteigert und wollte mal es ansteuern. Habe dazu die AVR-Tutorial durchgelesen aber kann einzig die 2. Zeile nicht einschalten. Meine Vermutung ist die Falsche Initialisierung bin mir aber nicht sicher... Bin für jede Meinung dankbar, denn versuche schon seit drei Tagen daran... grüße Khan
>Meine Vermutung ist die Falsche Initialisierung bin >mir aber nicht sicher. Die Vermutung ist 100% richtig.
Super, dass freut mich ;-) Aber kannst du mir vielleicht auch sagen was ich machen muss damit dies funktioniert? Bin noch ein Neuling... Wie gesagt habe eine halbe Ewigkeit daran herumprobiert.... Grüße Khan
>Aber kannst du mir vielleicht auch sagen was ich machen muss damit dies >funktioniert? Das Display richtig initialisieren nach Datenblatt? Ansonsten ist mir leider gerade meine Glaskugel wieder mal kaputt gegangen ;)
;-) Schade dass ich den Datenblatt nicht verstanden habe . Vielleicht kannst du mir wenigstens sagen, ob ich hier auch beim Initialisieren auch dreimal senden muss... _delay_ms(41); LCD_PORT &= 0xF0; LCD_PORT |= 0x03; LCD_PORT &= ~(1<<LCD_RS); /* RS auf 0 */ lcd_enable(); /*1. */ _delay_ms(41); lcd_enable(); /*2. */ _delay_ms(41); lcd_enable(); /*3. */ grüße Khan
Displaytyp/-bezeichnung? kompletter Source-Code? uC?
Khan wrote:
> ;-) Schade dass ich den Datenblatt nicht verstanden habe .
schade, daß hier niemand raten kann wie dein...
- datenblatt vom display
- schaltplan
- sourcecode
aussieht. so wird dir auch niemand helfen(können).
außerdem hättest du es mal im richtigen forum probieren sollen...
ERST Forum Regeln lesen, verstehen, dann posten!
>Vielleicht kannst du mir wenigstens sagen, ob ich hier auch beim >Initialisieren auch dreimal senden muss... Kann ich nicht. 1. Welches Display? Genaue Bezeichnung. 2. Wie angeschlossen? Pinliste? 3. Welcher Controller? 4. Welche Taktfrequenz? Mein Reifen ist platt. Kannst DU mir sagen wieso?
holger wrote: >>Vielleicht kannst du mir wenigstens sagen, ob ich hier auch beim >>Initialisieren auch dreimal senden muss... > > Kann ich nicht. > > 1. Welches Display? Genaue Bezeichnung. > 2. Wie angeschlossen? Pinliste? > 3. Welcher Controller? > 4. Welche Taktfrequenz? > > Mein Reifen ist platt. Kannst DU mir sagen wieso? ...der dritte im bunde ;-) ja, schon scheiße diese glaskugel, geht immer grade dann kaputt wenn man sie braucht! :-D
1. CV4162C wie im Anhang 2. ------------------------------------------------------------ PD7 PD6 PD5 PD4 PD3 PD2 PD1 PD0 -- -- RS E DB7 DB6 DB5 DB4 -- -- DB3 DB2 DB1 DB0 1=Befehl Enable 0=Daten wie im Code. 3. ATmega8 4. 1MHz Dein Reifen ist platt weil du vergessen hast dass ich ein Neuling bin.... ;-)
Schau mal ob das Display einen HD44780 Controller hat bzw. einen kompatiblen dazu. Betreibst du das Display dann im 4-Bit oder 8-Bit Mode? Gruß - A.
Khan wrote: > 1. CV4162C wie im Anhang welcher anhang ? wäre schon schön wenn man nicht erst das datenblatt raussuchen muss um dir zu helfen... > 2. > > ------------------------------------------------------------ > PD7 PD6 PD5 PD4 PD3 PD2 PD1 PD0 > > -- -- RS E DB7 DB6 DB5 DB4 > -- -- DB3 DB2 DB1 DB0 > 1=Befehl Enable > 0=Daten > wie im Code. dann poste doch bitte mal deinen code! > 4. 1MHz ist das auch eingestellt in der display routine? warum nicht 4 oder 8mhz ? > Dein Reifen ist platt weil du vergessen hast dass ich ein Neuling > bin.... ;-) aber auch neulinge können lesen, oder ?
Sorry an alle!!!Der Anhang ist beim hochladen verschwunden.... Habe grad gesehen dass die Datei zu groß ist.. Deswegen ist es nicht hochgeladen worden jetzt hier die Anhänge..
- wo ist die frequenz eingestellt ? (muß normal in display.h ode .c eingestellt sein) - schaltplan?
Habe kein Schaltplan. Benütze STK500. ist so bestückt wie im Code beschrieben. Frequenz ist im Makefile definiert.
Die Initsequenz für den 4 Bit Mode steht auf Seite 15.
Genau so weit bin ich auch gekommen, allerdings weis ich nicht ob ich hier den Startsequenz auch 3mal senden mus wie im AVR-Tutorial beschrieben?
Khan wrote: > Genau so weit bin ich auch gekommen, allerdings weis ich nicht ob ich > hier den Startsequenz auch 3mal senden mus wie im AVR-Tutorial > beschrieben? dein display hat nen ST7066U controller, der ist nicht 100% HD kompatibel. baue einfach die im datenblatt und von holger erwähnte init-sequenz 1zu1 nach, dann wirds laufen! schreibt dein display eigentlich in der ersten zeile zu 100% korrekt?
Ok, dann mache ich so. Ja die 1. Zeile Arbeitet richtig.. (nur mit Zeichen und String getestet)
Khan wrote: > Ok, dann mache ich so. > > Ja die 1. Zeile Arbeitet richtig.. (nur mit Zeichen und String getestet) dann sollte die 2. auch richtig arbeiten. schreib doch mal was "richtiges" rein, nicht nur einen buchstaben in die letzte spalte....
Wie gesagt habe auch ein String gesendet. einen langen. ;-) lcd_string("Halllooooooooooooooxywert");
Soweit ich mich erinnere, gibt es genau bei der Initialisierung für den 2-Zeilen-Mode Unterschiede zwischen den vielen halbkompatiblen HD-ähnlichen Controllern. Also genau nach Datenblatt vorgehen! Kleine Zwischenfrage: Ist die zweite Zeile genauso hell im Hintergrund wie die erste, oder sieht man in der zweiten dunklere Pixel? Die zweite Zeile hat andere Adressen für die Zeichen! Gruß - A.
Hmmm... wie ist es eigendlich, wenn die 2. aktiv ist soll es doch auch die Kontraste zeigen, wie beim 1ten? Oder schaltet sich der 2. einfach ein wenn mann dort schreibt?
Khan wrote: > wie ist es eigendlich, wenn die 2. aktiv ist soll es doch auch die > Kontraste zeigen, wie beim 1ten? Ja. > Oder schaltet sich der 2. einfach ein wenn mann dort schreibt? Nein.
Khan wrote: > Wie gesagt habe auch ein String gesendet. > einen langen. ;-) > > lcd_string("Halllooooooooooooooxywert"); lt. deinem Code geht der aber an Zeile 1!!
Nein, die 2te Zeile ist dunkel... sprich, kein kontrast... grüße
habe auch in die 2 Zeile set_cursor (16, 2); lcd_data ('C'); lcd_string("Halllooooooooooooooxywert"); geschrieben, aber tut nichts... grüße
Oh je. Ich bin mal so frei und korrigiere dich: 1. Ersetze in Zeile 70 im File lcd_routines.c /* 4Bit 2 Zeilen 5x7 (Funktion Set)*/ lcd_command(0x28); durch das vermutlich richtige Command-Byte für 2-Zeilen: lcd_command(0x2c); Entsprechend der Doku des Controllers: http://www.sitronix.com.tw/sitronix/SASpecDoc.nsf/FileDownload/ST7066U614654/$FILE/ST7066Uv22.pdf 2. Mach die Delay-Routine erheblich länger. Du weißt nicht wie genau dein Takt läuft? 3. Sende die Init-Sequenz dreimal wie in deiner Datei im Comment angegeben, aber keine Schleife drumherum! Gehts dann? Gruß - Abdul
@Abdul zu 1. Hatte ich schon gemacht zu 2. Du hast recht mit dem Takt bin ich noch nicht ganz eingestiegen zu 3. ok Es funktioniert.... Bedanke mich
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.