Forum: Mikrocontroller und Digitale Elektronik Text in einer Variablen ablegen und an LCD senden


von Dirk A. (Gast)


Lesenswert?

Also es gibt ja schon Einträge zu diesem thema, leider steck ich nicht 
so tief in der µC und c Materie um damit klar zu kommen.
Ich möchte ca 15-20 Texte mit je bis zu 20 Zeichen ablegen und dann auf 
einem LCD ausgeben. Ablegen möchte ich in Variablen, muss ich bestimmt 
Arrays verwenden, wie macht man das? BSP?
und wie ruf ich die dann wieder auf um sie ans LCD zu senden?

Ich verwende eine mega 32 falls das wichtig ist, dürfte aber ohne 
bedeutung sein! Vielen Dank für eure Hilfe, ich weiß nicht mehr 
weiter...

von Peter D. (pdiener) Benutzerseite


Lesenswert?

Als erstes brauchst du einen Treiber für das verwendete Display.
Dieser Treiber sollte mindestens folgende Funktionen zur Verfügung 
stellen:

- Display komplett löschen
- Cursor an eine bestimmte Position setzen
- An der gesetzten Position ein bestimmtes Zeichen anzeigen

So einen Treiber gibt es bereits für viele gängige Displays in der 
Codesammlung hier im Forum. Wenn es keinen für dein Display gibt, musst 
du ihn selbst schreiben.

Dann schreibst du eine Funktion, die Zeichenketten an eine bestimmte 
Position am Display schreiben kann (unter der Verwendung der gegebenen 
Treiberfunktionen). Dieser Funktion übergibt man den Text üblicherweise 
als Pointer auf ein Array. Dieses Array (in dem der Text steht) kann 
entweder im Programmspeicher oder im Arbeitsspeicher liegen. Verwendet 
man einen AVR als Controller, dann ist das für die Funktion ein 
wichtiger Unterschied.

In den Programmspeicher legt man Texte, die sich im laufenden Betrieb 
nicht verändern. Alles, was im laufenden Betrieb erst erzeugt wird (z.B. 
Messwertausgaben), muss im Arbeitsspeicher liegen.

Der erste Schritt ist also, dass du einen Treiber besorgst oder selbst 
schreibst und damit versuchst, ein einzelnes Zeichen an eine bestimmte 
Position auf das Display zu schreiben.

Wenn das mal funktioniert, ist der Rest nicht mehr besonders schwierig.

Angenommen die Funktion (des Displaytreibers)
1
writeChar (unsigned char x, unsigned char y, char ch)
schreibt das Zeichen ch an die Stelle x der Zeile y.


Dann sieht die Funktion zum Schreiben von Zeichenketten so aus:
1
writeString (unsigned char x, unsigned char y, char * string)
2
{
3
  unsigned char i = 0, j = x;
4
5
  while (string[i])
6
  {
7
    writeChar (j, y, string[i]);
8
    i++;
9
    j++;
10
  }
11
}

Diese Funktion kann man dann so verwenden, um Text aus dem 
Arbeitsspeicher (hier Array text_1) auf das Display zu schreiben (hier 
Zeile 1 ganz links):
1
char text_1[21] = "Hallo, Test...";
2
3
writeString (0, 1, text_1);

Natürlich kann man den Inhalt der Textarrays auch zur Laufzeit erzeugen, 
dazu eignen sich besonders die Funktionen

- sprintf
- itoa, ltoa usw.

Grüße,

Peter

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.