Forum: Compiler & IDEs LCD Zeichen von 16 auf 20 ändern - GCC


von Brocken Sei (Gast)


Lesenswert?

Ich habe das LCD Tutorial auf MK net durchgelesen, und habe mich soweit 
gut zurechtgefunden. Ich habe aber eine Frage:
Bei der Einstellung der Zeichen pro Zeile weiß ich da nicht ganz weiter, 
was muss ich denn da jetzt genau umstellen?
1
////////////////////////////////////////////////////////////////////////////////
2
// Zeilendefinitionen des verwendeten LCD
3
// Die Einträge hier sollten für ein LCD mit einer Zeilenlänge von 16 Zeichen passen
4
// Bei anderen Zeilenlängen müssen diese Einträge angepasst werden
5
 
6
#define LCD_DDADR_LINE1         0x00
7
#define LCD_DDADR_LINE2         0x40
8
#define LCD_DDADR_LINE3         0x10
9
#define LCD_DDADR_LINE4         0x50

Ich denk einmal, dass da wenn das LCD 2 Zeilen hat ich bei den ersten 2 
was ändern muss und dann die Zeichen, stimmt das?

also sprich dann hätte ich

#define LCD_DDADR_LINE1         0b00010100 //Zeile1 mit 20 Zeichen
#define LCD_DDADR_LINE2         0b00010100 //Zeile2 mit 20 Zeichen
#define LCD_DDADR_LINE3         0x00
#define LCD_DDADR_LINE4         0x00

Jetzt aber die Frage wieso für 2*16 Zeichen
das hier rauskommt:

#define LCD_DDADR_LINE1         0x00
#define LCD_DDADR_LINE2         0x40
#define LCD_DDADR_LINE3         0x10
#define LCD_DDADR_LINE4         0x50

Bitte um Aufklärung

Gruß Bro

von g457 (Gast)


Lesenswert?

> #define LCD_DDADR_LINE1         0x00
              ^^^^^
..das steht für 'Display Data ADRess' - also für die jeweilige 
Zeilenadresse. Welche das bei Deinem Display sind steht im zugehörigen 
Datenblatt. Für erste Versuche kannst Du die aber getrost erst mal so 
lassen wie sie sind.

von Brocken Sei (Gast)


Lesenswert?

g457 schrieb:
> Für erste Versuche kannst Du die aber getrost erst mal so
> lassen wie sie sind.

Ja und weiter?

von Karl H. (kbuchegg)


Lesenswert?

Brocken Sei schrieb:
> g457 schrieb:
>> Für erste Versuche kannst Du die aber getrost erst mal so
>> lassen wie sie sind.
>
> Ja und weiter?

Nix weiter.
Lass die Einstellung erst mal so wie sie ist und sieh zu, dass du 
Zeichen aufs LCD kriegst.
Wenn diese Werte bei deinem LCD tatsächlich anders sind, dann wirst du 
es merken, wenn du erstmals den Cursor in die 2.te Zeile schickst.

Und selbst wenn:
> #define LCD_DDADR_LINE1         0b00010100 //Zeile1 mit 20 Zeichen

Was soll der Unsinn da mit Binärzahlen um sich zu schmeissen. Wenn du 20 
meinst, dann schreib auch 20!


Aber: Diese Einstellung ist nicht das wofür du sie hältst. Lass sie 
einfach mal so.

von holger (Gast)


Lesenswert?

>Bei der Einstellung der Zeichen pro Zeile weiß ich da nicht ganz weiter,
>was muss ich denn da jetzt genau umstellen?

Nichts.

>> Für erste Versuche kannst Du die aber getrost erst mal so
>> lassen wie sie sind.

>Ja und weiter?

So lassen.

von Brocken Sei (Gast)


Lesenswert?

Karl heinz Buchegger schrieb:
> Was soll der Unsinn da mit Binärzahlen um sich zu schmeissen. Wenn du 20
> meinst, dann schreib auch 20!

Ich bins gewohnt binär zu schreiben, das kannst du nicht ändern.

Karl heinz Buchegger schrieb:
> Lass die Einstellung erst mal so wie sie ist und sieh zu, dass du
> Zeichen aufs LCD kriegst.

Es will irgendwie nicht funktionieren, ich weiß nicht warum. Es könnte 
aber sein, dass der Controller nicht unterstützt wird, ich habe 
folgdenen:

’SAMSUNG’ KS0070BP-00CC (Die form) LCD Controller & Driver or 
equivalent.
’SAMSUNG’ KS0065B-PCC (Die form) LCD Segment Driver or equivalent.

So stehts zumindest im Datenblatt.

Ich sehe zwar die Balken und kann den Kontrast einstellen, aber das war 
es auch schon.

Ich habe auch mein C Programm an ein Standard LCD ausgetestet und dort 
sehe ich was ich draufschreibe.

Und die Pinbelegungen beim Roboter LCD habe ich auch sehr zuverlässig 
gemacht und auch auf Durchgang geprüft.
Es müsste alles passen.

Gruß Bro

von Karl H. (kbuchegg)


Lesenswert?

Brocken Sei schrieb:
> Karl heinz Buchegger schrieb:
>> Was soll der Unsinn da mit Binärzahlen um sich zu schmeissen. Wenn du 20
>> meinst, dann schreib auch 20!
>
> Ich bins gewohnt binär zu schreiben, das kannst du nicht ändern.

Das solltest du dir schleunigst abgewöhnen.
Das ist doch sinnlos!
Die Art der Schreibweise passt man daran an, was man damit ausdrücken 
möchte und nicht daran woran man gewohnt ist.


> So stehts zumindest im Datenblatt.
>
> Ich sehe zwar die Balken und kann den Kontrast einstellen, aber das war
> es auch schon.

Deine Initialisierung geht schief.
Datenblatt des Kontrollers raussuchen und nachprüfen, wie er die 
Initialisierungssequenz haben will.

von holger (Gast)


Lesenswert?

>Ich sehe zwar die Balken und kann den Kontrast einstellen, aber das war
>es auch schon.

Display wird nicht initialisiert. Timing Problem oder falsch
angeschlossen, Kabel zu lang. So einfach kann Fehlersuche sein.

von Brocken Sei (Gast)


Lesenswert?

Karl heinz Buchegger schrieb:
> Das solltest du dir schleunigst abgewöhnen.
> Das ist doch sinnlos!
> Die Art der Schreibweise passt man daran an, was man damit ausdrücken
> möchte und nicht daran woran man gewohnt ist.

Das habe ich nur geschrieben weil du immer auf soche Details gehst, 
jetzt lass mal deine Gier nur falsches zu finden und sag doch lieber was 
positives.

Karl heinz Buchegger schrieb:
> Deine Initialisierung geht schief.
> Datenblatt des Kontrollers raussuchen und nachprüfen, wie er die
> Initialisierungssequenz haben will.

Hah als ich das gelesen habe wurde mir schon schlecht, denn das mache 
ich nicht gerne sowas selber zu schreiben. Aber so gut wie ich bin oder 
auch dieses Forum habe ich herausgefunden, dass ich R/W mit einem 3k 
Widerstand auf GND geben muss, und da schau her, das LCD läuft.

Trotzdem danke ich dir Karl für deine Vermutungen die zwar nicht immer 
ins Schwarze troffen, aber geholfen hast du mir trotzdem.

und auch allen anderen thanks.

Gruß Bro

von Brocken Sei (Gast)


Lesenswert?

Karl heinz Buchegger schrieb:
> Aber: Diese Einstellung ist nicht das wofür du sie hältst. Lass sie
> einfach mal so.

Ja stimmt das wahre Problem war ja das, und da hast du recht gehabt, die 
EInstellungen sind unverändert und 2*20 funktioniert trotzdem.

Gruß Bro

von Karl H. (kbuchegg)


Lesenswert?

Brocken Sei schrieb:
> Karl heinz Buchegger schrieb:
>> Das solltest du dir schleunigst abgewöhnen.
>> Das ist doch sinnlos!
>> Die Art der Schreibweise passt man daran an, was man damit ausdrücken
>> möchte und nicht daran woran man gewohnt ist.
>
> Das habe ich nur geschrieben weil du immer auf soche Details gehst,

Weil diese Details wichtig sind!
Und dabei sooooo einfach richtig zu machen!


> Hah als ich das gelesen habe wurde mir schon schlecht, denn das mache
> ich nicht gerne sowas selber zu schreiben. Aber so gut wie ich bin oder
> auch dieses Forum habe ich herausgefunden, dass ich R/W mit einem 3k
> Widerstand auf GND geben muss, und da schau her, das LCD läuft.

Tja. wenn du die wichtigen Pins nicht anschliest, kann dir hier auch 
keiner helfen. Normalerweise gehen wir schon davon aus, das man die 
Tutorien soweit auch liest und umsetzt, das zumindest die Pins so 
beschaltet werden, wie im Tutorium angegeben. Von irgendetwas müssen wir 
ja ausgehen. Sonst beschwerst du dich wieder, dass wir alles nachfragen.

von Daniel H. (Firma: keine) (commander)


Lesenswert?

Hallo,

ich habe am Wochenende mein 2*20 LCD erfolgreich in Betrieb genommen. 
Folgende Fehlerursachen gab es bei mir:

1. PORT D am µC beschaltet, im Beispiel wird jedoch der Port B verwendet
2. Wackelkontakte (habs auf Breadbord gesteckt) an R/S und E
3. R/W nicht auf GND gezogen

Edit: Ok, hätte vor dem Absenden mal die Seite aktualisieren sollen, R/W 
war dann wohl das Problem :)

von Brocken Sei (Gast)


Lesenswert?

Karl heinz Buchegger schrieb:
> Tja. wenn du die wichtigen Pins nicht anschliest, kann dir hier auch
> keiner helfen. Normalerweise gehen wir schon davon aus, das man die
> Tutorien soweit auch liest und umsetzt, das zumindest die Pins so
> beschaltet werden, wie im Tutorium angegeben. Von irgendetwas müssen wir
> ja ausgehen. Sonst beschwerst du dich wieder, dass wir alles nachfragen.

ok geb ich zu, war natürlich mein Fehler Karl, es wird sowieso immer 
mein Fehler sein weil ich ja die Beiträge erstelle.
Aber Fehler behoben, das zählt.

Gruß Bro

von Karl H. (kbuchegg)


Lesenswert?

Brocken Sei schrieb:

> ok geb ich zu, war natürlich mein Fehler Karl, es wird sowieso immer
> mein Fehler sein weil ich ja die Beiträge erstelle.

Sag ich doch nicht.
Es kommt öfter vor, das das eigentliche Problem ganz woanders liegt, so 
wie bei dir jetzt.
Es gibt halt nur ganz einfach Standardfehler, die in mehr als 90% aller 
Fälle zutreffen. Wenn es ansonsten keinen offensichtlichen Fehler in der 
Anfrage gibt, kann man mit denen arbeiten. Und du wirst lachen: Bei 
einigen feiert man da wahre Erfolgsorgien. Fast immer liegt man mit dem 
Standard richtig :-)

Mega16/Mega32 und Port C geht nicht  -> JTAG abschalten
LCD geht nicht -> Timing zu knapp
Auf dem LCD sieht man beim einschalten gar nichts -> Kontrastspannung
LCD hat einen K_irgendwas Controller -> Initialisierung ist ganz leicht 
anders.

Das sind nun mal so Standardfehler und Standardlösungen/Analysen dafür.

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.