www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Und wieder das Display


Autor: Dennis (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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?!

Autor: Johnny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wahrscheinlich tust Du es nicht richtig initialisieren nach dem 
Einschalten.

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Dennis (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Dann schau mal bitte auf den Code... :) Findest Du den Fehler?

Autor: Dennis (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Und hier auf das Display fokussiert^^

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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:
  PORTA &= ~(1 << LCD_RS);        // RS auf LOW
  lcd_enable();
  delay_ms(6);

  lcd_enable();
  delay_ms(2);
  lcd_enable();
  delay_ms(2);

Du solltest vorher auch einen Wert an PORTC legen, ehe du Enable pulsed.

Autor: Pete K. (pete77)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 ?

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ah, genau, Thema Wartezeit: Vor der Init >20ms warten. Das benötigen 
viele Displays nachdem die Spannung anliegt.

Autor: Dennis (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Michael S. (msk) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Dennis (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wartezeit ist es auch nicht. Habsch gerade ausprobiert.

Autor: Dennis (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Dennis (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?!

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die 20ms Pause vor dem Beginn der Init.

Autor: Pete K. (pete77)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
D.h. es geht jetzt ?

Autor: Dennis (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@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.

Autor: Dennis (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, es geht. Ich kann nur die vierte Zeile nicht anwählen. Dann steht 
das immer in der ersten ganz rechts...?!

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dein Display hat einen KS0073 Controller.
Der braucht eine andere Init statt der 3 x 0x30:
void lcd_init(void)
{
  delay_ms(50);
  PORTA &= ~(1 << LCD_RS);        // RS auf LOW

  LCD_PORT = 0x30;
  lcd_enable();
  delay_ms(20);

  lcd_command(0x3C);            // 8-bit Modus mit RE=1
  lcd_command(0x09);            // 4 Zeilen
  lcd_command(0x38);            // 8-bit-Modus mit RE=0
  lcd_command(0x0f);            // Display ein, Cursor ein, Blinken
  lcd_command(0x01);            // Display l�schen
  lcd_command(0x06);            // inkrement, kein Scrollen
  
  lcd_clear();
}

Autor: Michael S. (msk) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Dennis (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@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?

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
#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

Autor: Michael S. (msk) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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).

Autor: Dennis (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@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.

Autor: Dennis (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@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!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.