mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Problem mit LCD Initialisierung


Autor: Sven Lichtner (d-bracket)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich versuche zur Zeit mein LCD 162 von Displaytech (Datenblatt im 
Anhang) zu programmieren. Ich verwende einen ATMEGA8535 und programmiere 
in Assembler. Nun habe ich das Problem, dass sobald ich bei der 
Initialisierung die Daten für den Set_Function schicken möchte, das LCD 
mir überhaupt nichts mehr anzeigt. Wenn ich kein Set_Function übertrage 
sondern nur Display_on, dann kann ich mir Buchstaben und Zahlen darauf 
anzeigen lassen. Jedoch leider nur in der 1. Zeile. Weiss vielleicht 
jemand warum mein LCD nichts mehr anzeigt, wenn ich die Daten für den 
Set_Function schicke? Wäre echt wenn ihr mir da weiterhelfen könntet.

Gruss
Sven

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

Bewertung
0 lesenswert
nicht lesenswert
Du machst irgendwas vorher bei der Initialisierung falsch.

Autor: Das Kleinkind (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, doch das Datenblatt ist sehr informativ.

Autor: Sven Lichtner (d-bracket)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier könnt ihr noch meine Initialisierung sehen. Habe mich dabei genau 
an das Datenblatt gehalten. Das Unterprogramm MS15T ist eine 
Zeitschleife mit 15 ms Verzögerung.

rcall MS15T    ;Wecken - Anfang
ldi A, 0x30    ;DB4 + DB5 auf High
out PortC, A
sbi PORTA, 3    ;Enable High
cbi PORTA, 3    ;Enable Low

rcall MS15T
ldi A, 0x30    ;DB4 + DB5 auf High
out PortC, A
sbi PORTA, 3    ;Enable High
cbi PORTA, 3    ;Enable Low

rcall MS15T
ldi A, 0x30    ;DB4 + DB5 auf High
out PortC, A
sbi PORTA, 3    ;Enable High
cbi PORTA, 3    ;Enable Low

;Set Function
rcall MS15T
ldi A, 0x38    ;Funktion: Alle 8 Bit werden auf einmal übertragen, 2. 
Zeile des Displays aktiviert, 5x7 Dots pro Zeichen
out PORTC, A
sbi PORTA, 3    ;Enable High
cbi PORTA, 3    ;Enable Low

;Display löschen
rcall MS15T
ldi A, 0x01
out PortC, A    ;Funktion: Display löschen
sbi PORTA, 3    ;Enable High
cbi PORTA, 3    ;Enable Low

;Entry Mode Set
rcall MS15T
ldi A, 0x06    ;Funktion: Cursor wird nach dem Ausgeben eines 
Buchstabens nach rechts geschoben
out PORTC, A
sbi PORTA, 3    ;Enable High
cbi PORTA, 3    ;Enable Low

;Display On/Off
rcall MS15T
ldi A, 0x0C    ;Funktion: Display an, Cursor aus, Cursor blinkt nicht
out PORTC, A
sbi PORTA, 3    ;Enable High
cbi PORTA, 3    ;Enable Low

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

Bewertung
0 lesenswert
nicht lesenswert
Mach den Enable Impuls mal etwas länger, die sind etwas kurz (1-2 nops 
dazwischen) und die Wartezeit vor dem ersten Befehl größer (mind. 
50-100ms) falls du die BOD nicht aktiviert und auf >=4,0V gestellt hast. 
Wenn RS und RW passen, dann sieht der Code ansonsten OK aus.

Autor: Sven Lichtner (d-bracket)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe gerade ein paar Nops eingefügt. Hat leider nichts geändert. RS 
und RW habe ich während der ganzen Initialisierung auf Low liegen. 
Müsste also auch passen. Keine Ahnung was ich noch machen soll.

Autor: Sven Lichtner (d-bracket)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Oh ich merk gerade das ich das Datenblatt gar nicht im Anhang hatte :D

Autor: Sven Lichtner (d-bracket)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
mittlerweile funkitoniert die Initialisierung. Hast doch recht gehabt 
Benedikt. Ich habe am Anfang zwischen der Enable High-Low Flanke zwei 
Nops reingesetzt.

sbi PORTA, 3    ;Enable High
nop
nop
cbi PORTA, 3    ;Enable Low

Das hat leider nichts gebracht. Anschließend habe ich Enable über ein 
Register gesetzt bzw. gezurückzusetzt.

ldi A, 0x08
out PortA, A
ldi A, 0x00
out PortA, A

Ich denke das es nun funktioniert weil das Display nun zwischen den 
Flanken genug Zeit hat um den Befehl zu bearbeiten. Nochmals Danke.

Gruss Sven

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

Bewertung
0 lesenswert
nicht lesenswert
Was ist denn noch an PortA angeschlossen?
Das klingt sehr danach, als wenn irgendein anderer Pin falsch wäre und 
durch das Beschreiben von PortA richtig auf Low gesetzt wird (z.B. RS 
oder RW). Denn deine zweite Lösung ist schneller als die sbi/cbi 
Version.

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.