PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ad Wert auf dem Display angeben(IN C)??



Felixx87
08.07.2007, 11:56
Hi

ich programmiere hier mir grad so ein paar Funktionen für mein LCD und würde gern nen AD-Wert auf den display ausgeben. nur habe ich keine ahnung wie ich den WErt z.b. 0xCA als Zahl ausgebe denn wenn ich des auf mein display schreibe kommt ja bekanntlich was anderes ;)


wie müsste also eine Funktion aussehen die diesen Wert so umschreibt das ich einen 3 stelligen ASCII-Wert bekomme?


MFG

Felix

uwegw
08.07.2007, 12:32
Du zerlegst die Zahl in ihre einzelnen Stellen (per div und mod), also 2, 0 und 2. Diese wandelst du dann in die entsprechenden Ascii-Zeichen und schreibst sie aufs LCD.

Felixx87
08.07.2007, 12:46
Ahh danke schonmal für deine Fixe antwort :)

soweit war ich eigentlich auch nur meine C-Kenntnise sind leider doch noch zu unvollständig deshalb meine frage hier.

ich hät meinen denkansatz vl. reinschreiben sollen.

MFG

uwegw
08.07.2007, 12:51
Mach doch mal nen Anfang, entweder in pseudocode oder gleich in C.

Felixx87
08.07.2007, 12:59
Hehe, ich war gedanklich in der richtung unterwegs, dass ich diesen wert in einer funktion irgendwie zerschneide und in mein 3 Bytigen char bekomm. nur wie gesagt sind meine kenntnise von C noch sehr begrenzt und ich bin shcon froh das ich überhaupt schon strings schreiben kann...

aber für diese funktion bekomm ich keinen code hin :(

deshalb wäre es ganz nett wenn ich ein zwei zeilen Code bekommen könnte die vl. wenigstens nen denkanstoß geben....


MFG

uwegw
08.07.2007, 13:14
Setzt doch erst mal in Pseudocode an und überleg dir, wie die Funktion generell auszusehen hat. Die Hauptaufgabe ist es erst mal, die Zahl in die einzelnen Stellen zerlegen. Das Umwandeln einstelliger Zahlen in Ascii ist simpel, einfach ne Konstante addieren.

Mal nen Anfang:
zahl einlesen
stelle1=zahl div 100 //erste stelle berechnen
zahl=zahl mod 100 //nur noch den rest der Zahl, ohne die erste Stelle, betrachen
...

Felixx87
08.07.2007, 14:00
ok danke,

nach 2 - 3 Versuchen habe ich nun einen Funktionierenden Code.


LCDSTATUS LCD_Zahl(UI Zahl)
{
UI Stelle1;
UI Stelle2;
UI Stelle3;
UI Temp;

Stelle3 = Zahl % 10;
Temp = Zahl / 10;
Stelle2 = Temp % 10;
Temp = Temp / 10;
Stelle1 = Temp % 10;

Stelle1 = Stelle1 + 0x30;
Stelle2 = Stelle2 + 0x30;
Stelle3 = Stelle3 + 0x30;

LCD_W(Stelle1);
LCD_W(Stelle2);
LCD_W(Stelle3);

return LCDOK;
}


So nun wie kann ich den code verkürzen und auf größere Zahlen vorbereiten? :)

uwegw
08.07.2007, 14:47
Du könntest den Vorgang in eine Schleife packen:


LCDSTATUS LCD_Zahl(UI Zahl)

#define stellen 3 //dreistellige Zahl
unsigned char i=0;

{
UI ausgabetemp;
UI Temp;

temp=Zahl

for (I=0,i<stellen,i++)
{
ausgabetemp = Zahl % 10;
Temp = Zahl / 10;
ausgabetemp+=0x30;
LCD_W(ausgabetemp);
}
return LCDOK;
}

Felixx87
08.07.2007, 15:20
ahh kommt mir bekannt vor :)

so schreibe ich meine Strings



LCDSTATUS LCD_String(char *String)
{
UI Index;
Index = 0;

while(String[Index] !=0x00)
{
LCD_W(String[Index]);
if(Index <= 15) Index++;
else Index = 0;
}

return LCDOK;
}


€dit: ich benutze MPLAB mit dem Hitech Compiler(kommt aus meinem Ausbildungsbetrieb)

robocat
08.07.2007, 19:20
vielleicht hilft auch das hier:
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=30010

gruesse

EDIT: ups, ich seh grad, das ist der falsche thread. ich meinte den hier:
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=31690

Felixx87
08.07.2007, 20:20
Hey Danke robocat

ich werd mir das aber morgen erst genauer anschaun irgendwie bekomm ich da immoment nen knoten im Hirn. ich werde nun erstmal meine jeztige funktion nutzen und mal schaun vl. find ich ja noch ne möglichkeit das ähnlich meiner String funktion zu lösen.