Anzeige:

Verschiedene Arrays Namen zuweisen

Hier finden sie die archivierten Beiträge des alten PHPBB Forums von www.loetstelle.net

Verschiedene Arrays Namen zuweisen

Von Lutze53 am 29.12.2011 22:16

Hallöchen,

arbeite momentan an einem kleinen Projekt für die Schule. Und zwar möchte ich 4 DS18S20 auslesen und auf ein LCD anzeigen lassen.

Den Code habe ich mom schon soweit das ich auf mein LCD die Temperatur von einem angezeigt bekomme (mom nur einer angeschlossen).
Eigentlich wollte ich zum start von den 4 Thermometern die ID auf dem LCD anzeigen lassen. das geht auch soweit, aber ich wollte die ID abspeichern lassen für spätere vorhaben, bzw wenn ich mal das Teil erweitern möchte

hier ist mal der Code (noch nicht ganz fertig, fehlt noch einiges wie Zweierkompliment für negativen Wert und und die Trennung der Temperatur der letzten Stelle)

1]'-------------------------------------------'
' Mikrocontroller/Chip '
'-------------------------------------------'
$regfile = "m32def.dat" 'ATMEGA32 Registerdatei
$crystal = 8000000 'Externer Quarz 8Mhz
$hwstack = 40 'HardwareStack
$swstack = 16 'SoftwareStack
$framesize = 32 'Framesize
$baud = 9600 'Baudrate

'-------------------------------------------'
' LCD Konfiguration '
'-------------------------------------------'
Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , _
Db7 = Portb.7 , E = Portb.0 , Rs = Portb.1
Config Lcd = 16 * 2


'-------------------------------------------'
' 1Wire Konfiguration '
'-------------------------------------------'
Config 1wire = Porta.1


'-------------------------------------------'
' Deklarationen '
'-------------------------------------------'
Declare Sub Initialisierung
Declare Sub Sensorsuche


'-------------------------------------------'
' Variablen '
'-------------------------------------------'
Dim Id(8) As Byte 'Arrsy für die ID der DS18S20
Dim I As Byte

Dim Anzahl As Word

Dim Sc(9) As Byte
Dim T As Integer
Dim T1 As Integer



'-------------------------------------------'
' Const '
'-------------------------------------------'
Const Vers_1 = "Ver. HE.1.0.0"
Const Vers_2 = "28.12.2011"

Cls
Cursor Off
Locate 1 , 2
Lcd Vers_1 : Print Vers_1
Locate 2 , 4
Lcd Vers_2 : Print Vers_2
Wait 2




' Die Adresse meines DS1820 die ich vorher ermittelt habe
'Dsid(1) = &H10 : Dsid(2) = &H45 : Dsid(3) = &HA7 : Dsid(4) = &H4D : _
'Dsid(5) = &H02 : Dsid(6) = &H08 : Dsid(7) = &H00 : Dsid(8) = &H43


'-------------------------------------------'
' Main '
'-------------------------------------------'
Cls
Cursor Off

Call Sensorsuche



Locate 1 , 1 : Lcd "Aktuelle Temp:" : Print "Aktuelle Temp:"

Do

' Alle angeschlossenen DS1820 zum Messen veranlassen
Call Initialisierung
' Den gewünschten Sensor auswählen
1wverify Id(1)
' Kommando READ SCRATCHPAD
1wwrite &HBE
Sc(1) = 1wread(9)
If Sc(9) = Crc8(sc(1) , 8) Then
T = Makeint(sc(1) , Sc(2))
T = T * 50
T = T - 25
T1 = Sc(8) - Sc(7)
T1 = T1 * 100
T1 = T1 / Sc(8)
T = T + T1
T = T / 10

Locate 2 , 1
Lcd T + Chr(223) : Print T
Else
' Wenn Fehler Scratchpad zur Kontrolle Hexadezimal ausgeben
Locate 2 , 1
' Es passen nur 8 Byte auf das Display
For I = 1 To 8
Lcd Hex(sc(i)) : Print Hex(sc(i))
Next
End If
' Ausgabe alle 0,5 Sekunden
Waitms 1000
Loop

End


'******************************************************************************'

'-------------------------------------------'
' Subroutinen '
'-------------------------------------------'

' vorhandene DS1820 initialisieren
Sub Initialisierung
1wreset ' Initialisierung
1wwrite &HCC ' Read ROM-Befehl
1wwrite &H44 ' Temperaturmessung anstoßen
Waitms 800 ' warten bis Messung fertig ca 750-800ms
End Sub


' Suche nach angeschlossenen Sensoren - DS18S20
Sub Sensorsuche


Id(1) = 1wsearchfirst()

' Überprüfen ob überhaut ein Gerät vorhanden ist
If Err = 0 Then
Do
' Ausgabe der ID.
Cls
Locate 1 , 1
For I = 1 To 8
Lcd Hex(id(i)) ; : Print Hex(id(i));
Next

' Nach weiteren Sensoren suchen
Id(1) = 1wsearchnext()

' suchen, bis kein weiteres Gerät sich mehr meldet
Loop Until Err = 1
End If
Wait 1

' Geräteanzahl zählen
Anzahl = 1wirecount()

Cls
Locate 2 , 1
Lcd "Gefunden: " + Anzahl : Print "Gefunden: " + Anzahl

End Sub1]

Anzeige: