www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LCD Ansteuerung - Fehlersuche


Autor: Jens Fiedler (insanitaeter)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Moin !

Habe nun seit einiger Zeit versucht ein LCD Anzusteuern. Habe es auch 
durch probieren geschafft das die Initialisierung abschliesst aber dann 
nimmt es keine Daten an.
Das Display ist von CSD-Electronics "LCD 16 x 2 LED LoC Typ II" mit 
HD44780 Controller.
Datenblatt ist vorsorglich im Anhang.

Laut Datenblatt denke ich das ich alles richtig sende :/
Ich versuche das Display folgendermassen zu initialisieren :
Start
delay 15ms

Function Set
4 = 8bit mode
rs  rw  D7  D6  D5  D4  D3  D2  D1  D0
0  0  0  0  1  1  0  0  0  0

delay 5ms

Function Set
4 = 8bit mode
rs  rw  D7  D6  D5  D4  D3  D2  D1  D0
0  0  0  0  1  1  0  0  0  0

delay 100us

Function Set
4 = 8bit mode
rs  rw  D7  D6  D5  D4  D3  D2  D1  D0
0  0  0  0  1  1  0  0  0  0


Function Set
4 = 8bit mode
3 = 1 : 2 Line Display Mode
2 = 0 : 5x7 Font
rs  rw  D7  D6  D5  D4  D3  D2  D1  D0
0  0  0  0  1  1  1  0  0  0

Display off
rs  rw  D7  D6  D5  D4  D3  D2  D1  D0
0  0  0  0  0  0  1  0  0  0

Display clear
rs  rw  D7  D6  D5  D4  D3  D2  D1  D0
0  0  0  0  0  0  0  0  0  1

Entry Mode Set
0 = shiften
0 = decrement
rs  rw  D7  D6  D5  D4  D3  D2  D1  D0
0  0  0  0  0  0  0  1  0  0

Display on
rs  rw  D7  D6  D5  D4  D3  D2  D1  D0
0  0  0  0  0  0  1  1  1  0

Initialisierung beendet

Write Data : 'T'
rs  rw  D7  D6  D5  D4  D3  D2  D1  D0
1  0  0  1  0  1  0  1  0  0 

Write Data : 'e'
rs  rw  D7  D6  D5  D4  D3  D2  D1  D0
1  0  0  1  1  0  0  1  0  1 

Write Data : 's'
rs  rw  D7  D6  D5  D4  D3  D2  D1  D0
1  0  0  1  1  1  0  0  1  1

Write Data : 't'
rs  rw  D7  D6  D5  D4  D3  D2  D1  D0
1  0  0  1  1  1  0  1  0  0 

Senden der Daten
E = 1
delay 200us
E = 0

Sieht vielleicht jemand von euch den Fehler ?

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Start
delay 15ms

Function Set
4 = 8bit mode
rs  rw  D7  D6  D5  D4  D3  D2  D1  D0
0  0  0  0  1  1  0  0  0  0

delay 5ms


Seltsame Programmiersprache ;-)

Im Ernst:
1. Selbsthilfe: Schaltbild und Aufbau kontrollieren.
2. Fremdhilfe: Schaltbild zeigen.
3. Fremdhilfe: Sourcecode zeigen.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
4. Selbst- oder Fremdhilfe: Signale verfolgen und aufzeichnen, danach
Protokoll auswerten. ;-)

Autor: Edi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Initialisierung mache ich ähnlich, nur ein paar Details sind 
unterschiedlich, vielleicht liegt's daran:
Display off
rs  rw  D7  D6  D5  D4  D3  D2  D1  D0
0  0  0  0  0  0  1  0  0  0

Display clear
rs  rw  D7  D6  D5  D4  D3  D2  D1  D0
0  0  0  0  0  0  0  0  0  1

Entry Mode Set
0 = shiften
0 = decrement
rs  rw  D7  D6  D5  D4  D3  D2  D1  D0
0  0  0  0  0  0  0  1  0  0

Display on
rs  rw  D7  D6  D5  D4  D3  D2  D1  D0
0  0  0  0  0  0  1  1  1  0

Bei mir:
00001100 (Display on, Cursor off, no Crs-Blink)
00000001 (Display clear)
00000110 (Address increment, no shift)

Im Gegensatz zu Deiner Konfiguration wird bei mir der Cursor nicht 
eingeschaltet (unwichtig), aber Address Increment wird bei mir gesetzt - 
vielleicht liegt's daran.

Autor: Jens Fiedler (insanitaeter)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Erstmal danke für die antworten.
Mir geht es hier nur um darum ob ich die richtigen befehle zum display 
schicke.
Die Daten liegen an den korrekten Ports (nachgemessen)
Die Ports sind mit den korrekten Pins des Displays verbunden

Das habe ich wieder und wieder überprüft.

Ich werds aber heut abend nochmal überprüfen.

Mein Verdacht war das sich in die Abfolge zur initialisierung einfach 
ein Fehler geschlichen hat, deswegen hier nur der Ablauf und kein Code.
Code wird nachgereicht, der liegt eh grad daheim..

Autor: Jens Fiedler (insanitaeter)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
So nun mit quellcode.

e ist an  PD5

RS ist an PD7
RW ist an  PD6

D7 ist an  PC3
D6 ist an  PC2
D5 ist an  PC1
D4 ist an  PC0


Die freien Datenleitungen sind mit 10k gegen masse geschaltet.

Wenn die Stromversorgung hergestellt wird zeigt das Display einen 
schwarzen Balken. Resette ich den Controller verschwindet er und beide 
Zeilen werden aktiviert (sieht man ja wenn man den kontrast komplett 
hochdreht)

Also zumindest bis zur auswahl der Zeilen scheint es zu funktionieren 
auch wenn beim ersten hochfahren wohl das timing spinnt.
Nur Ausgaben sehe ich nicht auf dem Display :/

Autor: Hubert G. (hubertg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schon das hier gesehen: 
www.mikrocontroller.net/articles/AVR-GCC-Tutorial#LCD-Ansteuerung

Autor: Jens Fiedler (insanitaeter)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen dank den abschnitt hab ich total übersehen !

Mit dem fertigen Code zusammen hats geklappt :)

Ein Befehl war falsch :)

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.