Wie kann ich einen Dezimalwert auf´s LCD-Display bringen?

Gast #5881
Lesenswert?
• ▲
▼
Jepp.

Also, mit CodeVison funzt es beispielsweise so:

   lcd_gotoxy(1,0);
   spintf(w_buffer,"Kanal 1 = %4u",i);
   lcd_puts(w_buffer);

Ich möchte einen AD-Kanal einlesen und auf dem LCD-Display darstellen.
Die Funktion "sprintf" habe ich hier aus der Codesammlung kopiert, weis 
jedoch nicht wie ich sie richtig aufrufen muß.

Die LCD-Routinen habe ich bereits, Text kann ich darstellen.


Sascha
#5883
Lesenswert?
• ▲
▼
"Du muß das binäre Wort in BCD umwandeln."

Wie bitte ???

Las das mal lieber das sprintf() machen, dazu ist es doch schließlich 
da.

Du must Dir bloß mal die Syntax zu Gemüte führen, d.h. was z.B. "%4u" 
bedeutet.

Ich entwickle meine 8051-Programme immer unter nem alten Borland-C3.0, 
da ist eine deutschsprachige Hilfe mit bei. Da kann man dann alles in 
Ruhe nachschlagen.
Ich kenne ja auch nicht jede Funktion und deren Argumente auswendig.


Peter
Gast #5884
Lesenswert?
• ▲
▼
Der AD-Wandler Wert liegt als Wert in einm 8 Bit breiten Register.
Das kannst Du ja nicht direkt ausgeben, versteht ja niemand.
Daher wandelt man das in BCD (Binary Coded Digit) um und
dann sieht die Ausgabe z.B. so aus 2,54. Ist doch etwas
verständlicher.

Jörn
Gast #5885
Lesenswert?
• ▲
▼
Und was hat das ganze mit BCD (was übrigens "Binary Coded Decimal" 
bedeutet) zu tun?! Ich würd mal eher sagen man wandelt den Binärwert aus 
dem besagten Register in einen Dezimalwert um, welchen man gleich 
ausgeben kann bzw. mit dem man weiterrechnen kann.

@Peter
Ich versteh nicht ganz...

>Ich entwickle meine 8051-Programme immer unter nem alten Borland-C3.0
Wie kann das gehen? Der AVR-GCC besitzt ja nicht alle Befehle wie der 
Borland, und kompilieren kannst du deine Programme ja wohl auch nicht?! 
Oder meinst du, dass du ihn nur als Editor benutzt?
#5886
Lesenswert?
• ▲
▼
@Jörn

Ich glaube unter Fortran konnte man auch mit Dezimalzahlen rechnen. Aber 
C-Compiler rechnen grundsätzlich nur binär.
Nur zur Ausgabe werden dann die Zahlen je nach Formatangabe vom printf() 
dezimal dargestellt.
Aber Du hast mit der Umrechnung überhaupt nichts zu tun, das macht doch 
alles der C-Compiler.


@Sascha

Das ist ja der Witz an C, daß es auf verschiedenen Maschinen läuft. 
Natürlich laufen die AVR-Routinen nicht alle auf dem PC.
Die ganzen Hardware spezifischen Routinen lassen sich z.B. nicht testen.
Aber sich z.B. die verschiedenen Ausgaben von printf() anzusehen ist mit 
Borland-C möglich.
Ich teste eben nicht komplette AVR-Programme auf diese Weise sondern nur 
einzelne Routinen.
Ja, als Editor mit deutscher Hilfe zum Nachschlagen nehme ich ihn 
natürlich auch.



Peter
Gast #5887
Lesenswert?
• ▲
▼
mal ein danke jörn !!

das mit dem BCD hab ich jetzt schon ewig gesucht, wusste net woher ich 
das bekommen konnte (HEX -> BCD) danke für den Link

(progt ja net jeder mit nem "hochsprachen" kompiler)


@ peter: wenn sascha aber seien µC das umrechnen lassen will dann wird 
ihm der compiler da nix nützen weil der dir zur laufzeit nix umrechnet !

Michael

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.