Forum: Mikrocontroller und Digitale Elektronik LCD Ansteuerung - Fehlersuche


von Jens F. (insanitaeter)


Angehängte Dateien:

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 :
1
Start
2
delay 15ms
3
4
Function Set
5
4 = 8bit mode
6
rs  rw  D7  D6  D5  D4  D3  D2  D1  D0
7
0  0  0  0  1  1  0  0  0  0
8
9
delay 5ms
10
11
Function Set
12
4 = 8bit mode
13
rs  rw  D7  D6  D5  D4  D3  D2  D1  D0
14
0  0  0  0  1  1  0  0  0  0
15
16
delay 100us
17
18
Function Set
19
4 = 8bit mode
20
rs  rw  D7  D6  D5  D4  D3  D2  D1  D0
21
0  0  0  0  1  1  0  0  0  0
22
23
24
Function Set
25
4 = 8bit mode
26
3 = 1 : 2 Line Display Mode
27
2 = 0 : 5x7 Font
28
rs  rw  D7  D6  D5  D4  D3  D2  D1  D0
29
0  0  0  0  1  1  1  0  0  0
30
31
Display off
32
rs  rw  D7  D6  D5  D4  D3  D2  D1  D0
33
0  0  0  0  0  0  1  0  0  0
34
35
Display clear
36
rs  rw  D7  D6  D5  D4  D3  D2  D1  D0
37
0  0  0  0  0  0  0  0  0  1
38
39
Entry Mode Set
40
0 = shiften
41
0 = decrement
42
rs  rw  D7  D6  D5  D4  D3  D2  D1  D0
43
0  0  0  0  0  0  0  1  0  0
44
45
Display on
46
rs  rw  D7  D6  D5  D4  D3  D2  D1  D0
47
0  0  0  0  0  0  1  1  1  0
48
49
Initialisierung beendet
50
51
Write Data : 'T'
52
rs  rw  D7  D6  D5  D4  D3  D2  D1  D0
53
1  0  0  1  0  1  0  1  0  0 
54
55
Write Data : 'e'
56
rs  rw  D7  D6  D5  D4  D3  D2  D1  D0
57
1  0  0  1  1  0  0  1  0  1 
58
59
Write Data : 's'
60
rs  rw  D7  D6  D5  D4  D3  D2  D1  D0
61
1  0  0  1  1  1  0  0  1  1
62
63
Write Data : 't'
64
rs  rw  D7  D6  D5  D4  D3  D2  D1  D0
65
1  0  0  1  1  1  0  1  0  0 
66
67
Senden der Daten
68
E = 1
69
delay 200us
70
E = 0

Sieht vielleicht jemand von euch den Fehler ?

von Stefan B. (stefan) Benutzerseite


Lesenswert?

1
Start
2
delay 15ms
3
4
Function Set
5
4 = 8bit mode
6
rs  rw  D7  D6  D5  D4  D3  D2  D1  D0
7
0  0  0  0  1  1  0  0  0  0
8
9
delay 5ms

Seltsame Programmiersprache ;-)

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

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

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

von Edi (Gast)


Lesenswert?

Die Initialisierung mache ich ähnlich, nur ein paar Details sind 
unterschiedlich, vielleicht liegt's daran:
1
Display off
2
rs  rw  D7  D6  D5  D4  D3  D2  D1  D0
3
0  0  0  0  0  0  1  0  0  0
4
5
Display clear
6
rs  rw  D7  D6  D5  D4  D3  D2  D1  D0
7
0  0  0  0  0  0  0  0  0  1
8
9
Entry Mode Set
10
0 = shiften
11
0 = decrement
12
rs  rw  D7  D6  D5  D4  D3  D2  D1  D0
13
0  0  0  0  0  0  0  1  0  0
14
15
Display on
16
rs  rw  D7  D6  D5  D4  D3  D2  D1  D0
17
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.

von Jens F. (insanitaeter)


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

von Jens F. (insanitaeter)


Angehängte Dateien:

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

von Hubert G. (hubertg)


Lesenswert?

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

von Jens F. (insanitaeter)


Lesenswert?

Vielen dank den abschnitt hab ich total übersehen !

Mit dem fertigen Code zusammen hats geklappt :)

Ein Befehl war falsch :)

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.