Hallo ich hab in der Schule ein Projekt laufen wo ich Temperatur von 3 iButtons Typ 1920 (Temperatur iButtons) über einen Microkontroler auf eien Ledanzeige ausgeben muss. Ich bekomme es hin das die Temperaturvon 1 iButton ausgegeben wird nur habe das Problem das Program so umzuschreiben das es mit den dreien funktioniert. Es wäre schon wenn mir da jemand helfen könnte. Danke
' ibutton Test Program
$regfile = " m8535.dat"
$crystal = "800000000"
$baud = 9600
Config 1wire = Portb.0
Const Parasitepower = 1
Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 ,
Db7 = Portc.0 , Rs = Portc.5 , E = Portc.4
Config Lcd = 16 * 2
Cls
Cursor Off
Dim B As Byte
Wire Bus
Do
Rom_data(1) = 1wsearchfirst()
If Err = 1 Then Exit Do
For B = 1 To 6
Next
Goto Temperatur1
Do
Romdata(1) = 1wsearchnext()
If Err = 1 Then Exit Do
For B = 1 To 6
Next
Goto Temperatur2
Loop
Loop
Temperatur1:
Const Ds1920 = &H10
Const Skip_rom = &HCC 'Adressiere
einen Ibutton mit 64bit
Const Read_rom = &H33 'Lese Rom
Const Convertt = &H44 'Start
Temperaturmessung
Const Read_ram = &HBE 'Lese
Scratchpad RAM
Const Write_ram = &H4E 'Schreibe
Scratchpad RAM
Const Copy_ram = &H48 'Kopiere
Scratchpad RAM
Const Recall_ee = &HB8 'Kopiere
EEprom nach RAM
Dim Family_code As Byte
Dim Serial_number(6) As Byte
Dim Crc As Byte
Dim Scratch(9) As Byte
Dim I As Byte
Dim Temp As Word
Dim Temp1 As Integer
Dim Stemp As Single
1wreset
If Err = 1 Then Exit Do
1wwrite Read_rom
Family_code = 1wread()
For I = 1 To 6
Serial_number(i) = 1wread()
Next
Crc = 1wread()
If Family_code <> Ds1920 Then Exit Do
1wwrite Convertt 'starte
Temperaturmessung
#if Parasitpower
Wait 2 'warte
Temperaturmessung ab
#else
Do
Temp = 1wread()
Loop Until Temp = &HFF 'warte bis
Temperaturmessung beendet ist
#endif
1wreset 'Reset
iButton
If Err = 1 Then Lcd "iButton ERROR"
1wwrite Skiprom 'überspringe
Adressierung
1wwrite Read_ram 'lese
Scratch Pfad
For I = 1 To 9
Scratch(i) = 1wread()
Next
Temp = Scratch(2)
Shift Temp , Left , 8
Temp = Temp + Scratch(1) 'Word Format
Temp1 = Temp
' 1234567890123456 'Integer
Format
'Lcd "Der Temp.=" ; Temp ; "Counts."
Temp1 = Temp1 / 2
'Lcd "Die gemesseTemp. " ; Temp1 ; "Grad"
Stemp = Scratch(8) - Scratch(7)
'Interpolation
Stemp = Stemp / Scratch(8)
Stemp = Stemp + Temp1
Stemp = Stemp - 0.25
' 1234567890123456
Cls
Lcd "Die exakt gemess"
Locate 2 , 1
Lcd "ene Temperatur =";
Wait 5
Cls
Locate 1 , 1
Lcd Fusing(stemp , "#.##");
Lcd Chr($df)
Wait 2
Loop
Cls
' 1234567890123456
Lcd "Kein Sensor konta"
Locate 2 , 1
Lcd "ktiert"
End
Temperatur2:
Const Ds1920 = &H10
Const Skip_rom = &HCC 'Adressiere
einen Ibutton mit 64bit
Const Read_rom = &H33 'Lese Rom
Const Convertt = &H44 'Start
Temperaturmessung
Const Read_ram = &HBE 'Lese
Scratchpad RAM
Const Write_ram = &H4E 'Schreibe
Scratchpad RAM
Const Copy_ram = &H48 'Kopiere
Scratchpad RAM
Const Recall_ee = &HB8 'Kopiere
EEprom nach RAM
Dim Family_code As Byte
Dim Serial_number(6) As Byte
Dim Crc As Byte
Dim Scratch(9) As Byte
Dim I As Byte
Dim Temp As Word
Dim Temp1 As Integer
Dim Stemp As Single
1wreset
If Err = 1 Then Exit Do
1wwrite Read_rom
Family_code = 1wread()
For I = 1 To 6
Serial_number(i) = 1wread()
Next
Crc = 1wread()
If Family_code <> Ds1920 Then Exit Do
1wwrite Convertt 'starte
Temperaturmessung
#if Parasitpower
Wait 2 'warte
Temperaturmessung ab
#else
Do
Temp = 1wread()
Loop Until Temp = &HFF 'warte bis
Temperaturmessung beendet ist
#endif
1wreset 'Reset
iButton
If Err = 1 Then Lcd "iButton ERROR"
1wwrite Skiprom 'überspringe
Adressierung
1wwrite Read_ram 'lese
Scratch Pfad
For I = 1 To 9
Scratch(i) = 1wread()
Next
Temp = Scratch(2)
Shift Temp , Left , 8
Temp = Temp + Scratch(1) 'Word Format
Temp1 = Temp
' 1234567890123456 'Integer
Format
'Lcd "Der Temp.=" ; Temp ; "Counts."
Temp1 = Temp1 / 2
'Lcd "Die gemesseTemp. " ; Temp1 ; "Grad"
Stemp = Scratch(8) - Scratch(7)
'Interpolation
Stemp = Stemp / Scratch(8)
Stemp = Stemp + Temp1
Stemp = Stemp - 0.25
' 1234567890123456
Cls
Lcd "Die exakt gemess"
Locate 2 , 1
Lcd "ene Temperatur =";
Wait 5
Cls
Locate 1 , 1
Lcd Fusing(stemp , "#.##");
Lcd Chr($df)
Wait 2
Loop
Cls
' 1234567890123456
Lcd "Kein Sensor konta"
Locate 2 , 1
Lcd "ktiert"
End
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.