Ich habe immer noch Ärger mit dem Display. Auf dem Foto seht Ihr das, was ich hier die ganze Zeit angezeigt bekomme. Ist das Teil hinüber?!
Wahrscheinlich tust Du es nicht richtig initialisieren nach dem Einschalten.
Wenn du das Handy dazu bringst, sich auf das LCD und nicht auf den Katalog zu fokussieren, dann erkennt man auch etwas auf dem Foto. Diese helleren Striche unter den beiden Zeilen sehen zumindest komisch aus.
Sieht merkwürdig aus, dass die ersten beiden Zeilen aktiv sind, und in der 3. Zeile nur die erste Pixelzeile. Das könnte an der vermurksten Init liegen:
1 | PORTA &= ~(1 << LCD_RS); // RS auf LOW |
2 | lcd_enable(); |
3 | delay_ms(6); |
4 | |
5 | lcd_enable(); |
6 | delay_ms(2); |
7 | lcd_enable(); |
8 | delay_ms(2); |
Du solltest vorher auch einen Wert an PORTC legen, ehe du Enable pulsed.
Ist sicher nicht der Fehler, aber Du könntest die Funktion _delay_ms aus der delay.h benutzen. Hast Du überall Abblockkondensatoren dran ? Was ist denn das für ein Display ?
Ah, genau, Thema Wartezeit: Vor der Init >20ms warten. Das benötigen viele Displays nachdem die Spannung anliegt.
Hi, Kondensatoren sind überall dran. Das ist ein EA DIP204B-4-NLW von Electronic Assembly, 4 Zeilen a 16 Zeichen. Ich hab den Fehler korrigiert. Das haut aber immer noch nicht hin. Gleiches Bild.
Die Init-Funktion scheint mir nicht sehr brauchbar zu sein. Versuche erstmal, den Befehl für den 8-Bit-Modus am Anfang dreimal zu senden und auch entsprechende Wartezeiten einzuhalten. Siehe auch hier: http://www.sprut.de/electronic/lcd/index.htm#init
Hab die ersten drei Schritte so gemacht wie auf http://www.sprut.de/electronic/lcd/index.htm#init beschrieben. Und länger gewartet als angegeben. Das Bild bleibt das gleiche. Ist die Init immer noch Mist? Ich verstehe das nicht, ich habe an die Angaben aus dem entsprechenden Tutorial hier auf mikrocontroller.net gehalten und nur die Portpins geändert und das wie auf meinem System nötig auf den 8-Bit-Modus geändert. Also: Init immer noch Müll oder Display bei den Pommes? DANKE für Eure Tipps!!! D.
HÄ?! Leute, das ist jetzt schwer zu glauben. Aber die gleiche C-Datei kompiliert mit Programmer's Notepad ergibt diesen Schrott. Wenn ich mit AVR-Studio kompiliere, geht es. Was ist das denn?!
@Benedikt: Du hast mich nicht verstanden. Die Datei, die ich zuletzt hier hochgeladen habe, ergibt mit PN kompiliert das, was ich fotografiert habe. Kompiliere ich mit AVR Studio geht es wie am Schürchen.
Ja, es geht. Ich kann nur die vierte Zeile nicht anwählen. Dann steht das immer in der ersten ganz rechts...?!
Dein Display hat einen KS0073 Controller. Der braucht eine andere Init statt der 3 x 0x30:
1 | void lcd_init(void) |
2 | {
|
3 | delay_ms(50); |
4 | PORTA &= ~(1 << LCD_RS); // RS auf LOW |
5 | |
6 | LCD_PORT = 0x30; |
7 | lcd_enable(); |
8 | delay_ms(20); |
9 | |
10 | lcd_command(0x3C); // 8-bit Modus mit RE=1 |
11 | lcd_command(0x09); // 4 Zeilen |
12 | lcd_command(0x38); // 8-bit-Modus mit RE=0 |
13 | lcd_command(0x0f); // Display ein, Cursor ein, Blinken |
14 | lcd_command(0x01); // Display l�schen |
15 | lcd_command(0x06); // inkrement, kein Scrollen |
16 | |
17 | lcd_clear(); |
18 | }
|
Dennis schrieb: > @Benedikt: > > Du hast mich nicht verstanden. Die Datei, die ich zuletzt hier > hochgeladen habe, ergibt mit PN kompiliert das, was ich fotografiert > habe. Kompiliere ich mit AVR Studio geht es wie am Schürchen. Hast Du in einer Umgebung vielleicht irgendwo die Taktrate F_CPU (als define) korrekt angegeben und in der anderen nicht? Von der hängt ja auch die korrekte Bestimmung der Wartezeiten ab.
@holger: Danke, ich habe Deinen Code verwendet. Aber es ging auch mit der anderen Initialisierung und die vierte Zeile kann ich noch immer nicht beschreiben. Muss ich da noch was beachten?
#ifdef KS073 // Offset's anders als bei HD44780 Displays ! // 2 Lines // Zeile 1 -> 0x80+0x00 = 0x80 // Zeile 2 -> 0x80+0x40 = 0xC0 // 4 Lines // Zeile 1 -> 0x80+0x00 = 0x80 // Zeile 2 -> 0x80+0x20 = 0xA0 // Zeile 3 -> 0x80+0x40 = 0xC0 // Zeile 4 -> 0x80+0x60 = 0xE0
Dennis schrieb: > Ja, es geht. Ich kann nur die vierte Zeile nicht anwählen. Dann steht > das immer in der ersten ganz rechts...?! Die Adressen der vierten Zeile beginnen bei (0x40+Anzahl der Zeichen pro Zeile).
@Michael S: die Taktfrequenz steht in der Makefile korrekt. Und beide Programme nutzen dieselbe... In der delay.h habe ich die auch geändert. Daran kann es also nicht liegen. Habe das auch gerade nochmal alles überprüft.
@holger: DANKE!!!! Astrein, jetzt geht es!!!!! ;) Super!!! Das war ein Tag! :-D Aber das Problem mit PN und AVR Studio interessiert mich ja jetzt brennend!
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.