Hallo,
also geht darum eine long Zahl formatiert auf einem LCD auszugeben.
Dafür verwende ich die Fleury include. Mit der Funktion lcd_puts()
werden Strings am Display ausgegeben, aber eben nur Strings.
Der Wert der long Variable hängt vom ADC Ergebnis ab.
Dieser kann sich zwischen 0 u. 1023 bewegen.
Die long Variable wird wie folgt berechnet:
1 | ulPuffer=(1000*usigetADU_10Bit(0))/1023*20;
|
Dieser Wert steht dann für die Leistung in [mW].
Erklärung:
*1000 um von W auf mW zu kommen
*20 = 5 * 4 --> *5 weil, das die max. Referenz Spannung ist und *4 weil
1V euntspricht 4W
/1023 --> weil, dass der max. Wert des ADC ist
Hier ist einfach die Kurvengleichen y=kx+d.
Noch mal anders erklärt:
Für die Berechnung der Leistung
Nun soll am Display folgendes stehen: *.*W
Also zb.: Wenn bei meiner Berechnung 8900 das Ergebnis ist soll am
LCD stehen
8.9W
1 | usiPuffer1=ulPuffer/1000;
|
2 | usiPuffer2=((ulPuffer%100)/100);
|
Mit diesen Berechnungen will ich auf die 8 und 9 kommen.
Danach soll, das alles in einen netten String verpackt werden.
1 | sprintf(cPuffer,"%d.%dW",usiPuffer1,usiPuffer2);
|
Leider steht auf meinem Display lediglich 0.0W.
Was mach ich falsch?
MFG