www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Seltsames Verhalten eines KS0070B LCD


Autor: Henrik Ronellenfitsch (searinox)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!
Ich habe einen Atmega8 und an diesen ein Displaytech 162 Display (16x2
Zeilen) angeschlossen (laut Datenblatt besitzt dieses einen
KS0070B-kompatiblen Controller).
Das ganze hängt an einem 9V-Netzgerät und kann mittels der parallelen
Schnittstelle programmiert werden.
Ich habe mich beim Programmieren an das Datenblatt von Samsung für den
Controller gehalten, jedoch verhält sich das Display seltsam.

Ich kann die zweite Zeile nur dann ansteuern, wenn der Schaltkreis
einerseits am Netzgerät hängt, ich den parallelen Stecker einstecke und
diesen dann wieder herausziehe.
Sonst wird nur die erste Zeile verwendet.

Den Code (für avr-gcc) habe ich angehängt.
Ich bin sonst ratlos.

Danke für Hilfe!

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
paralleler Stecker ?
Welcher denn ?

Autor: Henrik Ronellenfitsch (searinox)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
SUB-D 25
Es handelt sich um das MyAVR-Board, der Schaltplan befindet sich hier:
http://www.myavr.net/download/bauanleitung_myavr-b...

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Benedikt,

es kann durchaus sein das das normal ist, manche display können nach
dem powerON zyklus nur einmal initialisiert werden umd es dann neu zu
initialisieren muss die spannung vom display und das ganze einen neuen
reset bekommen... das könnte ne ursache sein... zum anderen könnte es
sein das die initialisierungssequenz des displays zu unzuverlässig...
wenn du mit warteschleifen arbeitest fürs timing dann verlängere mal
die wartezeit nach PowerON des displays

gruß alex

Autor: Henrik Ronellenfitsch (searinox)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, Alex
Ich habe die Wartezeit auf 100ms erhöht (Datenblatt fordert 30ms),
jedoch hat das nichts geholfen.

Autor: sebastian arnd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,
schiebe doch mal dein proramm mit lcd_init IN die schleife bei mir hat
es so geklappt.

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
habe gerade im forum von myavr beispielcode gesehen... hast du den mal
verglichen?

Autor: Andi K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du sendest für den 4 Bit-Mode nur 1 mal das Bit 5 (1 da Nibble).
Versuche mal das in einem Byte mit 0x22 (0b00100010) 2 mal auszugeben.
Z. B. mit
 #define LCD_4BIT  (0x22)

MfG
Andi

Autor: Henrik Ronellenfitsch (searinox)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
Mit dem Beispielcode habe ichs schon verglichen. Wenn ich mich nicht
vollkommen täusche, macht es mein Code genauso. (Vergleichscode aus dem
Forum: http://www.thomas-postler.de/Download/AVR/lcd.inc)

Das 4-Bit-Modus-Bit zweimal zu senden hat leider auch nicht
gefruchtet.

Danke trotzdem für die Hilfe,
Henrik

Autor: Andi K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Seltsam ;-)
Hatte Anfangs die Init-Routine hier aus dem TUT verwendet.
Da diese mir zu unverständlich war, bin ich nach dem Datenblatt des
KS0066U gegangen was nicht auf Anhieb funktioniert hatte (ähnlich wie
bei Dir, ging nicht nach dem Flashen, erst nach aus-/einschalten).
Bin am Ende darauf gekommen, den 4 Bit Mode über lcd_command in 2
Nibbles 2 mal zu senden.
Hier ein Auszug der funktionierenden Init:
 ldi a,0b100010    ;4-Bit Mode (2 mal)
 rcall lcd_command
 ldi a,0b101000    ;4-Bit Mode, 2-line mode und Font 5x8
 rcall lcd_command_W50uS

MfG
Andi

Autor: Henrik Ronellenfitsch (searinox)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, Andi!
Dein Tipp hat mich auf die richtige Spur gebracht!
Den Code zwei mal zu senden hat zwar nicht geklappt,
aber mit
lcd_command(0x22);
lcd_command(0x22);

lcd_command(LCD_FUNSET | LCD_FUNSET_2LINES);

klappts nun endlich :D

Autor: Andi K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In meinem Beispiel wird der 4 Bit Mode eigentlich 3 mal gesendet, 2 mal
im ersten lcd_command und das dritte mal zusammengefasst mit dem 2 Line
Mode und Font 5x8.

Geht es bei Dir auch so?:
 lcd_command(0x22);
 lcd_command(LCD_FUNSET | 0x20 | LCD_FUNSET_2LINES);

Das 0x20 ist quasi der dritte 2 Line Mode.

MfG
Andi

Autor: Henrik Ronellenfitsch (searinox)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein, damit gehts nicht.
Nur mittels dem viermaligen Senden über
lcd_command(0x22);
lcd_command(0x22);

gehts.

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.