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...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.