www.mikrocontroller.net

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


Autor: Dirk A. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Peter Diener (pdiener) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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)
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:
writeString (unsigned char x, unsigned char y, char * string)
{
  unsigned char i = 0, j = x;

  while (string[i])
  {
    writeChar (j, y, string[i]);
    i++;
    j++;
  }
}

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):
char text_1[21] = "Hallo, Test...";

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.