iButton 1920

Gast #442683
Lesenswert?

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
#450233
Lesenswert?

' 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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren