- LiTime Speicher und Akkus         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: Ad Wert auf dem Display angeben(IN C)??

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    23.08.2004
    Ort
    Verden (bei Bremen)
    Alter
    37
    Beiträge
    247

    Ad Wert auf dem Display angeben(IN C)??

    Anzeige

    LiFePo4 Akku selber bauen - Video
    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

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    37
    Beiträge
    4.255
    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.

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    23.08.2004
    Ort
    Verden (bei Bremen)
    Alter
    37
    Beiträge
    247
    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

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    37
    Beiträge
    4.255
    Mach doch mal nen Anfang, entweder in pseudocode oder gleich in C.

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    23.08.2004
    Ort
    Verden (bei Bremen)
    Alter
    37
    Beiträge
    247
    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

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    37
    Beiträge
    4.255
    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
    ...

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    23.08.2004
    Ort
    Verden (bei Bremen)
    Alter
    37
    Beiträge
    247
    ok danke,

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

    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?

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    37
    Beiträge
    4.255
    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;
    }

  9. #9
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    23.08.2004
    Ort
    Verden (bei Bremen)
    Alter
    37
    Beiträge
    247
    ahh kommt mir bekannt vor

    so schreibe ich meine Strings

    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;
    }
    €dit: ich benutze MPLAB mit dem Hitech Compiler(kommt aus meinem Ausbildungsbetrieb)

  10. #10
    Erfahrener Benutzer Roboter Genie Avatar von robocat
    Registriert seit
    18.07.2006
    Beiträge
    935
    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

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test