Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: Temperatur-Sensor PT1000 von °C nach zehntel °C Kategorie: Programmierung Basic (von Christian - 13.12.2004 11:38)
 Als Antwort auf Temperatur-Sensor PT1000 von °C nach zehntel °C von Manfred Härtig - 12.12.2004 20:04
Hallo Manfred,

hier ein kleines Programm, dass Zahlen zwischen -9999 und 9999 formatiert als -999,9 bis 999,9 ausgibt.

Beispielausgaben:
temp =  348, ausgabe  "  34,8"
temp = 1348, ausgabe " 134,8"
temp =   -38, ausgabe  "-  3,8"
temp =  -1234, ausgabe  "-123,4"

Das Programm lässt sich über die Konstanten LAENGE und POSKOMMA leicht an andere Zahlenbereich anpassen.

Für Werte zwischen -32768 und 32767 muss LAENGE auf 10000 gesetzt werden (-999 bis 999 LAENGE auf 100, -99 bis 99 LAENGE auf 10). Mit POSKOMMA wird die Stelle definiert, an der das Komma erscheinen soll. Hierfür gilt z.B.:

LAENGE = 1000, POSKOMMA = 1 -> 1,000
LAENGE = 1000, POSKOMMA = 2 -> 10,00
LAENGE = 1000, POSKOMMA = 3 -> 100,0
LAENGE = 1000, POSKOMMA = 4 -> 1000,

LAENGE = 10000, POSKOMMA = 4 -> 1000,0
LAENGE = 10000, POSKOMMA = 3 -> 100,00

Entsprechend LAENGE muss noch die Laufweite der Schleife angepasst werden. Bei 1000 von 1 bis 4, bei 10000 von 1 bis 5, etc. Gegenüber dem Originalcode lässt sich diese Version hier leichter an eigene Bedürfnisse anpassen und ist flexibler.

Grüße,
Christian

DEFINE LEERZ    &H20
DEFINE KOMMA    &H2C
DEFINE MINUS    &H2D
DEFINE LAENGE   1000
DEFINE POSKOMMA 3

DEFINE lcd_param BYTE
DEFINE i BYTE
DEFINE t WORD
DEFINE temp WORD
DEFINE b BYTE

temp = -349 ' hier muss die Zahl rein, die ausgegeben werden soll

b = 0
t = LAENGE
lcd_param = LEERZ
IF temp<0 THEN lcd_param = MINUS    
GOSUB LCD_WRITECHAR
for i=1 to 4
    lcd_param = abs(temp) / t
    temp = abs(temp) mod t
    t = t / 10
    IF lcd_param <> 0 THEN b = 1
    IF (b=0) THEN lcd_param = LEERZ
    GOSUB LCD_WRITECHAR
    lcd_param = KOMMA
    IF i=POSKOMMA THEN GOSUB LCD_WRITECHAR
next i

print
end

#LCD_WRITECHAR
    if lcd_param = MINUS then print "-";
    if lcd_param = LEERZ then print " ";
    if lcd_param = KOMMA then print ",";
    if lcd_param <> MINUS AND lcd_param <> LEERZ and lcd_param <> KOMMA then print lcd_param;
RETURN







> Wer kann mir da helfen !
> Das unten stehende Programm ist aus der E-A-M 6/98 s.66
> Leider zeigt es nur ganze °C an und keine zehntel Grade.
> Bis zum kommer arbeitet das PRG. einwandfrei.
> Gruß Manfred Härtig
>
>       WZT = Eingang1  -64
>       temp = WZT
> gosub writetemp 'dieses Unterprogramm ist ein absolutes Muß.
> pause 80
>
>
>    output = abs(temp)
>
>   if temp < 0 then lcd_param = MINUS else lcd_param = LEERZ ' Minuszeichen oder Leerzeichen ausgeben
> gosub LCD_WRITECHAR
>
>           ' 1.000-Dezimalstelle oder Leerzeichen E-A-M 6/98 s.66
> if abs(temp) >= 1000 then lcd_param = NULL + output/1000 else lcd_param = LEERZ
> gosub LCD_WRITECHAR
>   output = output mod 1000
>           ' Hunderter-Dezimalstelle oder Leerzeichen
>   if abs(temp) >= 100 then lcd_param = NULL + output/100 else lcd_param = LEERZ
> gosub LCD_WRITECHAR
>    output = output mod 100
>           ' Zehner-Dezimalstelle oder Leerzeichen E-A-M 6/98 s.66
>   if abs(temp) >= 10 then lcd_param = NULL + output/10 else lcd_param = LEERZ
> gosub LCD_WRITECHAR
>    output = output mod 10
>    gosub LCD_WRITECHAR
>         lcd_param = &H2c  'Kommer setzen
> gosub LCD_WRITECHAR
>

 Antwort schreiben

Bisherige Antworten:

Re: Temperatur-Sensor PT1000 von °C nach zehntel °C (von Manfred Härtig - 16.12.2004 16:34)