mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Probleme mit 20x4 LCD


Autor: Swen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo
Habe ein 204A-Display von Displaytech an einen AT90S8535 angeschlossen. 
In mein Programm hab ich ne Funktion übernommen, die vorher schon von 
jemand getestet wurde und funktionierte. Anfangs hatte ich das Problem, 
daß das Display manchmal wahrlos Zeichen ausgegeben hat. Habe dann mit 
dem Datenblatt das Timing etwas verändert, danach funtionierte es 
problemlos für genau 10 Tage. Heute trat das gleiche Problem wieder auf, 
aber nicht, daß es nur manchmal passierte sondern ständig. Kann mir 
jemand weiterhelfen?

Autor: holger buss (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Swen,

betreibst Du das Disply im 4-Bit-Mode oder im 8-Bit-Mode?
Im 4-Bit-Modus kann man gravierende Fehler beim Initialisieren machen. 
Danach kann man ewig suchen (wie ich).

4-Bit:
_long_delay();
_long_delay();
_lcd_write_4bit(0x03);     // noch 8 Bit-Mode
_long_delay();
_lcd_write_4bit(0x03);     // noch 8 Bit-Mode
_long_delay();
_lcd_write_4bit(0x03);     // noch 8 Bit-Mode
_long_delay();
_lcd_write_4bit(0x02);     // jetzt 4 Bit-Mode
_long_delay();
_lcd_write_data(0x28);     // 4 Bit Zweizeilig
_long_delay();
_lcd_write_data(0x08);     // Display aus
_long_delay();
_lcd_write_data(0x01);     // Clear
_long_delay();
_lcd_write_data(0x06);     //Entry mode
_long_delay();
_lcd_write_data(0x08 + 4); // Display an
_long_delay();

//++++++++++++++++++++++++++++++++++++++++++++++
Und 8-Bit:

void lcd_init(void)
{
_long_delay();
_lcd_write_data(0x38);   // 8-Bit:0x38
_long_delay();
_lcd_write_data(0x38);
_long_delay();
_lcd_write_data(0x02);
_long_delay();
_lcd_write_data(0x06);
_long_delay();
_lcd_write_data(0x0c);
_long_delay();
_lcd_write_data(0x10);
_long_delay();
_lcd_write_data(1);   // clear LCD
_long_delay();

}

Viel Erfolg,
Holger

Autor: Meiserl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Kann es sein das es nicht initialisiert ist?
z.b. im laufenden Betrieb abgesteckt worden oder Kontaktfehler.

Du könntest das LCD ja öfter neu initialisieren.
Wenn ich Probleme hatte dann war es ein Timingroblem oder eine 
Neuinitialisierung notwendig.

Verwendest das BUSYflag?

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.