Forum: Mikrocontroller und Digitale Elektronik LCD: Daten einzuschreiben


von Xiaotang Z. (Firma: TUD) (emi92)


Lesenswert?

Hallo,

Das LCD ILI9325 habe ich schon richtig konfiguriert, ich kann jetzt aber 
nur String auf dem LCD schreiben wie im folgenden:

/**
 * \param ul_x: X coordinate of string top left corner
 * \param ul_y: Y coordinate of string top right corner
 * \param p_str String to display
*/
void ili9325_draw_string(uint32_t ul_x, uint32_t ul_y, const uint8_t 
*p_str);

z.B. für

ili9325_draw_string(uint32_t ul_x, uint32_t ul_y, (uint8_t*)"hallo")

wird das wort hallo auf der definierten Lage dargestellt.

Mein Problem ist, wie die ausgerechnete Variable auf dem LCD 
darzustellen kann.

Vielen Dank für jede Antwort

von ich (Gast)


Lesenswert?

dafür wird die Variable in einen String umgewandelt und in einem Buffer 
zwischengespeichert. Dann wird der String aus dem Buffer ausgegeben.

Da gibt es bestimmt eine Funktion einen Buffer auszugeben.

von Bitflüsterer (Gast)


Lesenswert?

Dein Problem hat nichts mit dem LCD zu tun. Falscher Titel.

Vielmehr fehlt Dir die Information, auf welche Weise eine integer- oder 
float-Variable als String dargestellt werden kann.

Dazu schau mal unter: utoa, itoa und (s)printf (genauer: unter den 
format specifiern).

von Xiaotang Z. (Firma: TUD) (emi92)


Lesenswert?

ich schrieb:
> dafür wird die Variable in einen String umgewandelt und in einem Buffer
> zwischengespeichert. Dann wird der String aus dem Buffer ausgegeben.
>
> Da gibt es bestimmt eine Funktion einen Buffer auszugeben.

Hallo,

Danke für deine Antwort.

Wie kann eine Variable in String umgewandelt werdn? Ich hatte durch
Array und Pointer probiert, aber geht nur für String. z.B.

uint8_t i;
uint8_t testdata[4]= "1001";
char *p_str = testdata;
for (i=0; i<4; i++)
{
   p_str = testdata[i];

   lcd_draw_string(ul_x, ul_y, &p_str);
}

so wird 1001 dargestellt, und wenn ich eine Variable 1001 darstellen
möchte, wie kann ich die umwandeln?

von Karl H. (kbuchegg)


Lesenswert?

Xiaotang Zhou schrieb:

> Wie kann eine Variable in String umgewandelt werdn?

Indem du eine der Funktionen benutzt, die dir zb aus einem int einen 
String erzeugen
1
void lcd_draw_int( uint32_t ul_x, uint32_t ul_y, int value )
2
{
3
  char txt[12];
4
5
  itoa( value, txt, 10 );
6
  lcd_draw_string( ul_x, ul_y, txt );  
7
}
8
9
...
10
  lcd_draw_int( 10, 10, 128 );
11
12
  int i = 1001;
13
  lcd_draw_int( 10, 10, i );
14
...

Näheres zu den Funktionen itoa, ltoa, utoa, ... weiß den C Buch

PS: Bist du sicher, dass du für die Bildschirmkoordinaten einen uint32_t 
benutzen willst? Der Zahlenbereich eines uint32_t ist so dermassen groß, 
dass es wohl im ganzen Universum keinen Bildschirm mit einer derartig 
hohen Auflösung geben dürfte.

von Xiaotang Z. (Firma: TUD) (emi92)


Lesenswert?

Karl Heinz schrieb:
> Xiaotang Zhou schrieb:
>
>> Wie kann eine Variable in String umgewandelt werdn?
>
> Indem du eine der Funktionen benutzt, die dir zb aus einem int einen
> String erzeugen
>
>
1
> void lcd_draw_int( uint32_t ul_x, uint32_t ul_y, int value )
2
> {
3
>   char txt[12];
4
> 
5
>   itoa( value, txt, 10 );
6
>   lcd_draw_string( ul_x, ul_y, txt );
7
> }
8
> 
9
> ...
10
>   lcd_draw_int( 10, 10, 128 );
11
> 
12
>   int i = 1001;
13
>   lcd_draw_int( 10, 10, i );
14
> ...
15
>
>
> Näheres zu den Funktionen itoa, ltoa, utoa, ... weiß den C Buch
>
> PS: Bist du sicher, dass du für die Bildschirmkoordinaten einen uint32_t
> benutzen willst? Der Zahlenbereich eines uint32_t ist so dermassen groß,
> dass es wohl im ganzen Universum keinen Bildschirm mit einer derartig
> hohen Auflösung geben dürfte.


Hallo

Danke für deine Antwort, ich bin noch anfanger, deswegen einige 
Vorkenntnisse kenne ich noch nicht.

Ich hatte gerade durch andere Methode realisiert.

z.B für eine Variable uint32_t data = 25:

2 und 5 werden jeweils in dem Array gepeichert durch

testdata[0] = data % 10 + '0';
testdata[1] = data / 10 + '0';

es funktioniert, mit '0' wird jedes Zahl in String umgewandelt.

von Bitflüsterer-Schultze (Gast)


Lesenswert?

Karl Heinz schrieb:
> ...
> Näheres zu den Funktionen itoa, ltoa, utoa, ... weiß den C Buch
>
> ...

Ich würde sogar sagen, dass ein C-Buch die Informationen über itoa, 
ltoa, utoa und printf enthält.

von Karl H. (kbuchegg)


Lesenswert?

Xiaotang Zhou schrieb:

> Danke für deine Antwort, ich bin noch anfanger, deswegen einige
> Vorkenntnisse kenne ich noch nicht.

Gerade als Anfänger benötigst du ein C-Buch!

Da sind all diese Dinge, und noch viele mehr, beschrieben. Es gibt keine 
Entschuldigung dafür, kein Buch zu haben.

> es funktioniert, mit '0' wird jedes Zahl in String umgewandelt.

Etwas anderes machen die Funktionen itoa, utoa und wie sie alle heißen 
auch nicht. Nur dass sie mit beliebigen Zahlen im Wertebereich des 
jeweiligen Datenytps klarkommen und dann auch noch, wenn anwendbar, ein 
mögliches Vorzeichen berücksichtigen.

Es gibt eine Reihe von Funktionen in jeder C Bibliothek, die man einfach 
kennen muss. Man kann sich die natürlich immer auch selbst machen, nur 
ist das in vielen Fällen nicht besonders sinnvoll.

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.