Forum: Mikrocontroller und Digitale Elektronik LCD + Code aus aus Tutorial


von Tobi L. (derarzt)


Lesenswert?

Ich habe bei mir zuhause gekramt und noch ein LCD display 
gefunden.Allerdings habe ich kein datenblatt mehr dafür, was abner nicht 
schlimm ist da die pins beschriftet sind. ich hab alles also so gemacht 
wie im tutorial 
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/LCD-Ansteuerung

 beschrieben ist und es funktioniert

als ich mir dann aber mal den code angeschaut habe verstehe eine sache 
nicht und zwar wie man auf die hex zahlen zur einstellung des cursors 
kommt

im code steht :


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

das ist für mich wiedersprüchlich da  0x10 kleiner ist als 0x40 und 
dementsprechend des theoretisch die 2te zeile sein müsste

und da ich irgendein display genommen habe glaube ich nicht dass es 
genau das display ist was im forum verwendet worden ist.
wenn das der fall ist muss es ja in irgendeiner form einen "standard" 
dafür geben wenn ja wo kann man ihn nachlesen?

oder es muss im Datenblatt beschrieben stehen.ich habe mir allerdings 
3-4 Datenblätter angeschaut und nirgends steht darüber etwas beschrieben

von Karl H. (kbuchegg)


Lesenswert?

Tobi L. schrieb:

> #define LCD_DDADR_LINE1         0x00
> #define LCD_DDADR_LINE2         0x40
> #define LCD_DDADR_LINE3         0x10
> #define LCD_DDADR_LINE4         0x50
>
> das ist für mich wiedersprüchlich da  0x10 kleiner ist als 0x40 und
> dementsprechend des theoretisch die 2te zeile sein müsste

Nein.
Auf einem 4 zeiligen LCD sind 2 Controller verbaut, die sich eben den 
Speicher genau so aufteilen.

> wenn das der fall ist muss es ja in irgendeiner form einen "standard"
> dafür geben wenn ja wo kann man ihn nachlesen?

Es gibt keinen.
Stell bei deinem LCD den Cursor auf Zeile 0 SPalte 0.
Und dann gibst du einen langen Text aus:

ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz

Dieser Text wird in der ersten Zeile beginnen und erst mal die erste 
Zeile vollschreiben. Aber: die nächsten Zeichen landen ganz einfach 
dahinter im LCD-Speicher. Da sind dann einige Speicherzellen, für die es 
keine Anzeigeposition gibt. Und an irgendeiner Buchstabenposition taucht 
dann der Text wieder in der 3. Zeile auf. Diesen Buchstaben merkst du 
dir und zählst ab, der wievielte es in deinem langen Text war. Damit 
hast du dann die Adresse, wo auf deinem LCD die sichtbare 3. Zeile im 
Speicher anfängt.
Selbiges für die 2. und 4. Zeile.

von holger (Gast)


Lesenswert?

>Auf einem 4 zeiligen LCD sind 2 Controller verbaut, die sich eben den
>Speicher genau so aufteilen.

Ein 4x16 oder 4x20 hat nur einen Controller.
Der Kram ist einfach so verkabelt das dieses
Verhalten rauskommt. Warum weiss ich auch nicht.
Line1 und Line3 sind eigentlich nur eine Zeile die
auf zwei aufgeteilt wurde. Line2 und Line4 genauso.

Das beste sind 1x16 Displays. Da wird auch häufig
Schwachsinn betrieben. Eigentlich ist das ein zweizeiliges
Display von der Verdrahtung her. D.h. um das 9.te Zeichen
zu setzen muss man den Cursor neu positionieren;)

Bei LCDs gibts schon einige dumme Sachen.

von Tobi L. (derarzt)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Tobi L. schrieb:
>
>> #define LCD_DDADR_LINE1         0x00
>> #define LCD_DDADR_LINE2         0x40
>> #define LCD_DDADR_LINE3         0x10
>> #define LCD_DDADR_LINE4         0x50
>>
>> das ist für mich wiedersprüchlich da  0x10 kleiner ist als 0x40 und
>> dementsprechend des theoretisch die 2te zeile sein müsste
>
> Nein.
> Auf einem 4 zeiligen LCD sind 2 Controller verbaut, die sich eben den
> Speicher genau so aufteilen.
>

aaaaaah dannn mahct das wieder Sinn das heisst bei einem 4 zeiligen 
display hätte ch 4/2 controlller und die würden mit


zeile1 = 0x00
zeile2 = 0x40

zeile3 = 0x10
zeile4 = 0x50

zeile5 = 0x20
zeile6 = 0x60

zeile7 = 0x30
zeile8 = 0x70

 beschreiben werden? aner was ist wenn ich  mehr als 8 zeilen habe habe 
dann krieg ich doch ein prob da ich das nicht mehr ansteuern kann oder?

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.