Forum: Mikrocontroller und Digitale Elektronik Und wieder das Display


von Dennis (Gast)


Angehängte Dateien:

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?!

von Johnny (Gast)


Lesenswert?

Wahrscheinlich tust Du es nicht richtig initialisieren nach dem 
Einschalten.

von Benedikt K. (benedikt)


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.

von Dennis (Gast)


Angehängte Dateien:

Lesenswert?

Dann schau mal bitte auf den Code... :) Findest Du den Fehler?

von Dennis (Gast)


Angehängte Dateien:

Lesenswert?

Und hier auf das Display fokussiert^^

von Benedikt K. (benedikt)


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:
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.

von Pete K. (pete77)


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 ?

von Benedikt K. (benedikt)


Lesenswert?

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

von Dennis (Gast)


Angehängte Dateien:

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.

von Michael S. (msk) Benutzerseite


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

von Dennis (Gast)


Lesenswert?

Wartezeit ist es auch nicht. Habsch gerade ausprobiert.

von Dennis (Gast)


Angehängte Dateien:

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.

von Dennis (Gast)


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?!

von Benedikt K. (benedikt)


Lesenswert?

Die 20ms Pause vor dem Beginn der Init.

von Pete K. (pete77)


Lesenswert?

D.h. es geht jetzt ?

von Dennis (Gast)


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.

von Dennis (Gast)


Lesenswert?

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

von holger (Gast)


Lesenswert?

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
}

von Michael S. (msk) Benutzerseite


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.

von Dennis (Gast)


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?

von holger (Gast)


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

von Michael S. (msk) Benutzerseite


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).

von Dennis (Gast)


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.

von Dennis (Gast)


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!

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
Noch kein Account? Hier anmelden.