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.
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
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.
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
Mach doch mal nen Anfang, entweder in pseudocode oder gleich in C.
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
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
...
ok danke,
nach 2 - 3 Versuchen habe ich nun einen Funktionierenden Code.
So nun wie kann ich den code verkürzen und auf größere Zahlen vorbereiten?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; }![]()
Du könntest den Vorgang in eine Schleife packen:
Code: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; }
ahh kommt mir bekannt vor
so schreibe ich meine Strings
€dit: ich benutze MPLAB mit dem Hitech Compiler(kommt aus meinem Ausbildungsbetrieb)Code: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; }
vielleicht hilft auch das hier:
https://www.roboternetz.de/phpBB2/ze...ag.php?t=30010
gruesse
EDIT: ups, ich seh grad, das ist der falsche thread. ich meinte den hier:
https://www.roboternetz.de/phpBB2/ze...ag.php?t=31690
Lesezeichen