www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Problem mit Variablen ausgeben


Autor: Neuling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
ich hoffe man kann mir hier weiterhelfen...
habe ein Bord mit einem ATMega16 chip drauf und ein display
2x24 oder 2x27 ist ja auch nicht so wichtig,
auf jeden fall würde ich gerne eine variable auf dem display ausgeben
Habe im Anhang mein LCD-Projekt, sollte alles dabei sein, habe mein
Display am laufen und kann auch sachen drauf ausgeben, habe es von
irgendwo hier aus dem forum, und habe es so geändert, dass es tut...
so nun weiß ich aber nicht wie ich mit der funktion auch variablen
ausgeben kann
unter c ging das ja so:
int i=123;

printf("Wert: %d",i);

unter c++ ging das so:
int i=123;
cout << "Wert: " << i;

so die funktion hier lautet:
lcd_puts("Blablabla");

aber keine der beiden anderen methoden funktioniert,
kenne mich auch nicht so wirklich in c aus, könnte einer von euch sich
vielleicht mal die *.h datei ansehen, wo die unktion deklariert ist,
wie das gehen soll ??

Danke

Autor: Neuling (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hab die datei im anhang vergessen hier ist sie

Autor: Neuling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
geht das nicht ??

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du musst Dir den Zahlwert zunaechst mal in einen String
umwandeln.
Am allereinfachsten, wenn auch nicht am speicherschonendsten,
geht das mit der Funktion sprintf()

  char Buffer[10];
  sprintf( Buffer, "%d", i );
  lcd_puts( Buffer ),

Autor: thkais (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oder, wenns nur ein Integer-Wert ist, mit der Funktion itoa()

Autor: Neuling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
habe das nun so gehaendelt:
///////////////////////////////////////////////
#include <avr/io.h>
#include <stdint.h>
#include <util/delay.h>
#include <stdlib.h>
#include <avr/pgmspace.h>
#include "lcd.h"

void schlaf(float anz)
{
  for(int i = anz; i > 0; i -= 0.25)
  {
    _delay_ms(250);
  }
}

void main(void)
{
  int i=14;
  char Buffer[2];
  DDRA   = 0xff;  //Port A als Ausgang definieren[Display]

  lcd_init(LCD_DISP_ON);
  lcd_clrscr();

  itoa(i,Buffer,2);
  lcd_puts( Buffer );
}

Der gibt mir dann folgendes auf meinem Display aus: 1110,
ja stimmt wohl ist 14, aber ich würde dann doch gerne 14 da stehen hab
und nicht 1110 :)
Ist bestimmt nen ganz kleiner doofer Fehler, aber ich entdecke ihn
nicht, vielleicht seht ihr das ja direkt...?!?


DANKE DANKE

Autor: Neuling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
gibts da nicht ne funktion die itoc() lautet??

Autor: Neuling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok habs hinbekommen
da muss bei itoa(int, string,10); stehen, da wir ja im dezimalsystem
rechnen :)

hat sich erledigt !!
trotzdem danke

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.