Hi,
hier mal mein Code. Ist ein 1920 im Dreileiter-Mode (kein parasite power) und funktioniert prima. Vielleicht hilft's ja.
Die LCD-Zeilen kannst ja rausnehmen.Code:'ds_1920_2_16X4.bas 'DS1920 Temperaturmessung $regfile = "m16def.dat" $hwstack = 32 $swstack = 8 $framesize = 24 $crystal = 8000000 $baud = 9600 Config 1wire = Portb.0 Config Lcd = 27 * 4 Config Lcdpin = Pin , Db4 = Porta.2 , Db5 = Porta.3 , Db6 = Porta.4 , Db7 = Porta.5 , E = Porta.1 , Rs = Porta.0 Deflcdchar 0 , 6 , 9 , 9 , 6 , 32 , 32 , 32 , 32 'Grad Zeichen Chr(0) Config Portd.2 = Input 'Taster für Hintergrundbeleuchtung Config Porta.6 = Output 'LED-Hintergrundbeleuchtung 'Const Parasitpower = 1 Const Ds1920 = &H10 Const Skiprom = &HCC Const Read_rom = &H33 Const Convertt = &H44 Const Read_ram = &HBE Const Write_ram = &H4E Const Copy_ram = &H48 Const Recall_ee = &HB8 Const Read_power = &HB4 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 Dim Mint As Single Dim Maxt As Single Mint = 200 Do 1wreset If Err = 1 Then Print "iButton Error" 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 #if Parasitpower Wait 2 #else Do Temp = 1wread() Loop Until Temp = &HFF #endif 1wreset If Err = 1 Then Print "iButton Error" 1wwrite Skiprom 1wwrite Read_ram For I = 1 To 9 Scratch(i) = 1wread() Next Temp = Scratch(2) Shift Temp , Left , 8 Temp = Temp + Scratch(1) Temp1 = Temp Print "Der Temperaturwert ist " ; Temp ; " Counts." Temp1 = Temp1 / 2 Print "Die gemessene Temperatur ist " ; Temp1 ; " Grad Celsius" Stemp = Scratch(8) - Scratch(7) Stemp = Stemp / Scratch(8) Stemp = Stemp + Temp1 Stemp = Stemp - 0.25 Print "Die exakt gemessene Temperatur ist "; Print Fusing(stemp , "#.##"); Print " Grad Celsius" If Maxt < Stemp Then Maxt = Stemp End If If Mint > Stemp Then Mint = Stemp End If Cls Cursor Off If Pind.2 = 1 Then Toggle Porta.6 Upperline Lcd "T-Ist: " ; Fusing(stemp , "#.#") ; Chr(0) ; "C" Thirdline Lcd "min: " ; Fusing(mint , "#.#") Fourthline Lcd "max: " ; Fusing(maxt , "#.#") 'Wait 2 Loop Print "kein Temperatursensor kontaktiert" End







Zitieren
Lesezeichen