Forum: Compiler & IDEs Wie kann ich einen Dezimalwert auf´s LCD-Display bringen?


von Sascha (Gast)


Lesenswert?

Hallo!

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

Sascha

von BAB (Gast)


Lesenswert?

tolle frage..
mit einem lcd treiber...
wie wärs etwas konkreter?

von Sascha (Gast)


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

von Jörn (Gast)


Lesenswert?

Hallo Sascha,

da wirst du um etwas Rechnerei nicht rumkommen.
Du muß das binäre Wort in BCD umwandeln.

Schau mal da nach:
http://www.fh-pforzheim.de/fb05/labore/mclt/pdf/AD_Wandlung.pdf

ist ne gute Anleitung. Benutzt ich auch um eine AD - Kanal
Auszuwertung zu machen und auf LCD darzustellen.

von Peter D. (peda)


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

von Jörn (Gast)


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

von Sascha Weitkunat (Gast)


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?

von Peter D. (peda)


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

von Michael Pohl (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.