Forum: Mikrocontroller und Digitale Elektronik erweiterte LCD Ansteuerung - Zeilendefinition


von Henrik E. (Gast)


Lesenswert?

Hallo,

ich habe mir das Display DIP204-4 zugelegt.
Ich habe es wie im Datenblatt beschrieben an einen XMega 128A1 
angeschlossen.
Ich wollte jetzt die Routinen aus dem Tutorial "Erweiterte LCD 
Ansteuerung" umschrieben, dass ich diese für den XMega verwenden kann.

Dabei ist mir aufgefallen dass mein Display 4x20 Zeichen groß ist und 
nicht 4x16 wie im Tutorial. Im Quelltext steht:
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 //Dezimal 0
7
#define LCD_DDADR_LINE2         0x40 //Dezimal 64
8
#define LCD_DDADR_LINE3         0x10 //Dezimal 16
9
#define LCD_DDADR_LINE4         0x50 //Dezimal 80

Ich werde aber aus der beschreibung nicht schlau. Was steckt da für ein 
System hinter und was muss ich stattdessen für Werte eintragen?
Ein Zeichen ist 5x8 Pixel groß.

Im Datenblatt steht für die Adressierung:
1. Zeile 0x00..0x13
2. Zeile 0x20..0x33
3. Zeile 0x40..0x53
4. Zeile 0x60..0x73

Kann ich diese Werte eintragen?

Grüße Hendrik

von Bernhard M. (boregard)


Lesenswert?

1. Zeile 0x00..0x13
2. Zeile 0x20..0x33
3. Zeile 0x40..0x53
4. Zeile 0x60..0x73

das entspricht doch der definition:
1
#define LCD_DDADR_LINE1         0x00 //Dezimal 0
2
#define LCD_DDADR_LINE2         0x40 //Dezimal 64
3
#define LCD_DDADR_LINE3         0x10 //Dezimal 16
4
#define LCD_DDADR_LINE4         0x50 //Dezimal 80

Du must gar nichts machen, ob 4x16 oder 4x20 ist egal, die Ansteuerung 
ist gleich. Intern hat der Displaycontroller Platz für 4x20 Zeichen, 
manche LCDs haben halt weniger Zeichen zum darstellen...

Edit: sehe gerade, daß Du doch andere Adressen für Zeile 2 und 4 hast. 
Du kannst dann einfach die Anfangsadressen nehmen.

von Henrik E. (Gast)


Lesenswert?

Versteh ich leider nicht.

Also nehmen wir mal die zweite Zeile. Die ist im Code definiert als 
0x40, aber im Datenblatt steht 0x20..0x33. Das ist doch ein Unterschied?
Könntest du mir vielleicht kurz erklären, was da für ein System dahinter 
steckt?

Ich möchte aber die 4x20 Zeichen des LCD nutzen.

Grüße Hendrik

von spess53 (Gast)


Lesenswert?

Hi

Lass dich nicht irre machen. Das ist schon so, wie im Datenblatt 
beschrieben. Also nimm die Werte aus dem Datenblatt.
Der Displaycontroller (KS0073) hat ein paar Unterschiede (zusätzliche 
Befehle, Zeichensatz) zum HD44780. Die anderen Befehle entsprechen dem 
HD44780.

MfG Spess

von Henrik E. (Gast)


Lesenswert?

Okey ich habe jetzt den Quelltext geändert in:
1
#define LCD_DDADR_LINE1         0x00
2
#define LCD_DDADR_LINE2         0x20
3
#define LCD_DDADR_LINE3         0x40
4
#define LCD_DDADR_LINE4         0x60

So dürfte es also funktionieren?


Grüße Hendrik

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.