Hallo Papsi!
Lade mal dieses Programm und pass es an.
Das liest dir alle ID aus und zeigt sie am LCD an.
Code:
'///////////////////////////////////////////////////////////////////////////////
' Funktion:
' Liest die Adressen von angeschlossenen DS1820 aus und zeigt sie am LCD an.
' Mit jeweils 20s Pause dazwischen.
'///////////////////////////////////////////////////////////////////////////////
$regfile = "m8def.dat"
$crystal = 14745600 'Externes Quarz 14,7456 Mhz
'Achtung: damit der ext. Quarz aktiv wird => die Fusebits entsprechend einstellen.
'Extern Cristal , Alle Bits = 111 111
$baud = 9600
'-------------------------------------------------------------------------------
'/// Definitionen //////////////////////////////////////////////////////////////
'/// LCD- DISPLAY 4x20
'LCD im 4Bit I/O Mode
Config Lcd = 20 * 4
Config Lcdbus = 4
Config Lcdpin = Pin , Db4 = Portd.2 , Db5 = Portd.3 , Db6 = Portd.4
Config Lcdpin = Pin , Db7 = Portd.5 , E = Portd.7 , Rs = Portd.6
Cursor Off Noblink
Cls
'Pin für 1wire Schnittstelle festlegen
Config 1wire = Portc.5
Dim Dsid(8) As Byte 'Es werden mindestens 8Bytes für die ID benötigt
Dim I As Byte 'Für die Anzahl der Senseoren
Dim Nr As Byte
Nr = 1
Cls
Dsid(1) = 1wsearchfirst()
Locate 1 , 1 : Lcd "DS1820 Nr " ; Nr : Nr = Nr + 1
Locate 2 , 1
For I = 1 To 8
Lcd Hex(dsid(i))
Next
Wait 20 ' Das reicht zum abschreiben
'Dsid(1) = 1wsearchnext()
Do
Dsid(1) = 1wsearchnext()
'Wenn kein Fehler, dann ausgeben
If Err = 0 Then
Locate 1 , 1 : Lcd "DS1820 Nr " ; Nr : Nr = Nr + 1
Locate 2 , 1
For I = 1 To 8
Lcd Hex(dsid(i))
Next
Wait 15
End If
Loop Until Err = 1
Do
Waitms 100
Loop
End
Lesezeichen