Anfängerprobleme

OP #763079
Lesenswert?

hallo zusammen,
ich möchte auf meinem display einen zahlenwert über eine variable 
anzeigen.
leider bin ich fast am verzweifeln.
vielleicht kann mir jemand weiter helfen.

vielen dank im voraus.


int main(void)
{

int a;
int string;
a = 25;
itoa (a, string, 10);

// Innen
    LCD_Print(string, 6, 113, 2, 1, 1, yellow, black);
    LCD_Print("o", 46, 107, 2, 1, 1, yellow, black);


der wert wird nicht angezeigt. wenn ich die 10 hinter string rein mache, 
kommt eine fehlermeldung, dass zu viele kommas im befehl lcd_print sind.
OP #763082
Lesenswert?

..ausserdem kommt beim kompilieren diese meldung:

displaydemo.c: In function 'main':
displaydemo.c:35: warning: left-hand operand of comma expression has no 
effect
displaydemo.c:35: warning: left-hand operand of comma expression has no 
effect
displaydemo.c:35: warning: statement with no effect
displaydemo.c:80: warning: passing argument 1 of 'LCD_Print' makes 
pointer from integer without a cast
#763091
Lesenswert?

Martin Schmid wrote:

> int string;

Dem Compiler ist der Name egal, einen String kann die Variable "string" 
nicht speichern, sondern nur einen int.

itoa verlangt ein Array von mindestens 7 Byte ("-32768\0"), also
1
char string[7];
Und dann schau Dir genau die Argumentenfolge von itoa an.


Peter
OP #763134
Lesenswert?

sorry..ich blick da nicht durch.

hab jetzt mal folgendes gemacht:

int a;
char string[7];
a = 25;
itoa (a, string,10);

// Innen
    LCD_Print(string, 6, 113, 2, 1, 1, yellow, black);
    LCD_Print("o", 46, 107, 2, 1, 1, yellow, black);

kommt kein wert auf dem display und folgende meldung:
displaydemo.c:39: warning: left-hand operand of comma expression has no 
effect
displaydemo.c:39: warning: left-hand operand of comma expression has no 
effect
displaydemo.c:39: warning: statement with no effect


ich hab nur diese dateien eingebunden:
#include <stdio.h>
#include <avr/io.h>
#include <avr/wdt.h>
#include <util/delay.h>
#include <math.h>
#include <avr/pgmspace.h>
#define LCD_DDR DDRB
#define itoa
//#include <stdlib.h>

vielleicht fehlt da ja was

gruss martin
#763174
Lesenswert?

>ich hab nur diese dateien eingebunden:
>#define itoa
>//#include <stdlib.h>

Durch das '#define itoa' wird jedes 'itoa' aus dem Quellcode entfernt. 
Aus 'itoa(a, string,10);' wird also '(a, string,10);', und das macht 
keinen Sinn, deswegen auch die Warnings. Lösch das am besten wieder und 
tu die beiden Slashs vor '//#include <stdlib.h>' weg.

MfG Mark
#763176
Lesenswert?

> #define itoa
Was soll das denn? itoa ist eine Funktion aus der stdlib.h. Außerdem 
wäre es sinnvoll, mal den ganzen Code zu posten, damit man auch mit den 
Zeilennummern was anfangen kann. Wo und wie ist übrigens die Funktion 
LCD_Print definiert?

Außerdem solltest Du Dich dringendst mit ASCII-Zeichen befassen. Ohne 
das Verständnis, was ein ASCII-String eigentlich ist, brauchst Du an der 
Stelle zunächst mal nicht weiterzumachen.
OP #763180
Lesenswert?

...sorry, bin halt noch anfänger und gerade am lernen.
code hab ich angehängt.

lcd_print ist in der #include <glcd-Display3000-211.h> definiert:

void LCD_Print(const  char* Text, unsigned char X, unsigned char Y, 
unsigned char FontNr,unsigned char XScale, unsigned char YScale, 
unsigned int ForeColor, unsigned int BackColor);
Angehängte Dateien:
OP #763182
Lesenswert?

mit eingebundener #include <stdlib.h> kommen mehr fehlermeldungen

In file included from displaydemo.c:11:
c:/winavr-20071221/bin/../avr/include/stdlib.h:445: error: expected 
identifier or '(' before 'int'
displaydemo.c: In function 'main':
displaydemo.c:39: warning: left-hand operand of comma expression has no 
effect
displaydemo.c:39: warning: left-hand operand of comma expression has no 
effect
displaydemo.c:39: warning: statement with no effect
make.exe: *** [obj/displaydemo.o] Error 1
#763184
Lesenswert?

@  Martin Schmid (paul-stanley)

Dein tödlich, schwachsinniges

1
#define itoa

ist immer noch drin. Und so ein Grafik-LCD ist KEIN Anfängerprojekt, 
schon gar nciht wenn elementare Programmiergrundlagen fehlen. versuchs 
mal mit zwei Nummern kleiner.

http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#LCD-Ansteuerung

MfG
Falk

P.S. Deine Quelltextformatierung ist unter aller Sau. Das ist der 
Lesbarkeit und Fehlersuche nicht sonderlich zuträglich.
OP #763223
Lesenswert?

hallo falk,

hab #define itoa gelöscht.
jetzt wird der wert als variable übergeben und auch angezeigt.

getraue nmich jetzt fast nicht mehr zu sagen, dass keine werte hinter 
dem komma übergeben werden.
ja, ich war da wohl zu optimistisch mit dem ersten projekt. das soll ein 
kleiner board computer fürs auto werden. die ganze sensorik drum rum 
kann ich ohne probleme..aber ich hab vor 20 jahren mal basic gelernt und 
seither nie mehr was programmiert. könnte das teil meinem 
arbeitskollegen geben und er würde es mir programmieren. aber ich will 
trotzdem einwenig versuchen was ich zusammen bekomme.

gruss und danke für die hilfe
martin
#763229
Lesenswert?

Martin Schmid wrote:

> getraue nmich jetzt fast nicht mehr zu sagen, dass keine werte hinter
> dem komma übergeben werden.

Das ist korrekt, int ist das Format für Ganzzahlen und die haben kein 
Komma.

Übergibt man in C einem int eine Kommazahl, wird der Kommateil einfach 
abgeschnitten.
Sonst wärs ja kein Ganzzahl mehr, auch C kann nicht gegen die Mathematik 
verstoßen.


Peter
#763230
Lesenswert?

@ Martin Schmid (paul-stanley)

>hab #define itoa gelöscht.
>jetzt wird der wert als variable übergeben und auch angezeigt.

Autsch! Na wenigsten läuft es jetzt.

>getraue nmich jetzt fast nicht mehr zu sagen, dass keine werte hinter
>dem komma übergeben werden.

sprintf() ist dein Freund.

MfG
Falk
#763322
Lesenswert?

@ Martin Schmid (paul-stanley)

>..freund wäre doch glatt übertrieben.
>hab nun alles mögliche ausprobiert
>sprintf(string,"%2,%1",a);

>bringt alles nichts. nach dem komma wird nichts mehr übergeben.
>gebe für heute auf :-(

Das bringt alles nichts.

Gehe zurück zu den Grundlagen
Gehe direkt dorthin
Ziehe keine 4000 Euro ein.

Lies mal ein Grundlagenbuch über C. In Ruhe. Ja, das dauert einige 
Stunden bis
Tage, bis du das alles wirklich verstanden hast Wochen bis Monate. 
Dann reden wir weiter.

MfG
Falk

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren