Code:
$regfile = "m8def.dat"
$crystal = 3686400
$baud = 9600
Dim Adctemp As Integer , Adcdruck As Integer , Volt1 As Integer , Volt2 As Integer , Volt3 As Integer , Volt4 As Integer
Dim Ist As Integer , Ist2 As Integer , Istwert As Integer
Dim Tempwert As Single , Maxwert As Integer , Minwert As Integer , Differenz As Single
Dim Abstand As Single , Temperatur As Integer , Istdruck As Single
Declare Sub Temp
Declare Sub Druck
Declare Sub Ausser_bereich
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc
Cursor Off
Do
Cls
Volt1 = Getadc(0)
Volt2 = Getadc(1)
Volt3 = Getadc(2)
Volt4 = Getadc(3)
' Adctemp = Volt1
Adctemp = 887
Temp
Locate 1 , 1
Lcd "1: " ; Temperatur
' Print " Isttemperatur1: " ; Temperatur
' Print
' Adctemp = Volt2
Adctemp = 400
' Temp Alias Temp2
Temp
Locate 1 , 10
Lcd "2: " ; Temperatur
' Print " Isttemperatur2: " ; Temperatur
' Print
' Adcwert = Volt3
Adcdruck = 325
Druck
Locate 2 , 1
Lcd "3: " ; Istdruck
' Print " Isttemperatur3: " ; Istdruck
' Print
' Adcwert = Volt4
' Adcwert = 600
' Berechnung
' Locate 2 , 10
' Lcd "4: " ; Temperatur
' Print " Isttemperatur4: " ; Temperatur
' Print "---------------------------------------------------------"
Waitms 500
Loop
End
Sub Temp
If Adctemp > 945 Then Goto Endetemp
If Adctemp < 179 Then Goto Endetemp
Ist = -1
Do
Minwert = Lookup(ist , Tempwerte)
Incr Ist
Maxwert = Lookup(ist , Tempwerte)
Loop Until Adctemp <= Maxwert
Tempwert = Ist * 5 ' Brechnung welche Temperaturgrundwert gerade gewählt ist
Differenz = Maxwert - Minwert ' Differenz zwischen Maxwert und Minwert
Abstand = Maxwert - Adctemp ' Abstand zwischen Grundwert zum Istwert
Differenz = Differenz / 5 ' Differenz durch 5 Teilen um die Analogwertänderung pro 1°C zu erhalten
Abstand = Abstand / Differenz ' Abstand durch Differenz teilen um auf den Wert zu kommen der vom Grundwert abgezogen wird
Temperatur = Tempwert - Abstand ' Aktuelle Temperatur Errechnung
Endetemp:
End Sub
Sub Druck
If Adcdruck > 945 Then Goto Endedruck
If Adcdruck < 179 Then Goto Endedruck
Ist = -1
Do
Minwert = Lookup(ist , Druckwerte)
Incr Ist
Maxwert = Lookup(ist , Druckwerte)
Loop Until Adcdruck <= Maxwert
Tempwert = Ist * 50 ' Brechnung welche Temperaturgrundwert gerade gewählt ist
Tempwert = Tempwert / 100
Differenz = Maxwert - Minwert ' Differenz zwischen Maxwert und Minwert
Abstand = Maxwert - Adcdruck ' Abstand zwischen Grundwert zum Istwert
Differenz = Differenz / 5 ' Differenz durch 5 Teilen um die Analogwertänderung pro 1°C zu erhalten
Abstand = Abstand / Differenz ' Abstand durch Differenz teilen um auf den Wert zu kommen der vom Grundwert abgezogen wird
Abstand = Abstand / 10
Istdruck = Tempwert - Abstand ' Aktuelle Temperatur Errechnung
Endedruck:
End Sub
' - - - - - - - - - - - - - - - -Datenzeile Temperatursensor mit 500Ohm Vorwiderstand - - - - - - - - - - - - - - - - - - - -
Tempwerte:
Data 179% , 215% , 255% , 299% , 344% , 392% , 440% , 489% , 538% , 584% , 629% , 671% , 709% , 744% , 775% , 803% , 828% , 850% , 870% , 887% , 902% , 915% , 926% , 936% , 945%,
' - - - - - - - - - - - - - - - -Datenzeile Drucksensor mit 20mA Konstantstromquelle - - - - - - - - - - - - - - - - - - - -
Druckwerte:
Data 42% , 86% , 128% , 170% , 211% , 251% , 291% , 329% , 367% , 404% , 440% , 475% , 509% , 543% , 575% , 607% , 638% , 668% , 697% , 726% , 753%
Lesezeichen