Hi Dino
Bevor ich das Display in Betrieb genommen habe waren erst mal Lötarbeiten angesagt, die aber schnell erledigt waren.
Dann kam der teil mit dem Googeln, der ja wie schon bekannt ist , einiges an Lesezeit kostet; die sich aber gelohnt hat.
Siehe Bild.
Gruß Ralf
Bevor ich das Display in Betrieb genommen habe waren erst mal Lötarbeiten angesagt, die aber schnell erledigt waren.
Dann kam der teil mit dem Googeln, der ja wie schon bekannt ist , einiges an Lesezeit kostet; die sich aber gelohnt hat.
Siehe Bild.
Code:
$regfile = "m32def.dat"
$crystal = 3686400
' LCD konfigurieren Port auf Ausgabe setzten und Pin's entsprechend zuordnen
Ddrb = &HFF
Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.3 , E2 = Portb.2 , Rs = Portb.1
Config Lcd = 40 * 4
'Grad zeichen"°" chr(0)
Deflcdchar 0 , 6 , 9 , 9 , 6 , 32 , 32 , 32 , 32
' Pin für 1wire Schnittstelle festlegen
Config 1wire = Portd.4
Dim ___lcdno As Bit
Dim T1 As Integer 'hilfs Variable für die berechnung Temp1
Dim T2 As Integer 'hilfs Variable für die berechnung Temp1
Dim T3 As Integer 'hilfs Variable für die berechnung Temp2
Dim T4 As Integer 'hilfs Variable für die berechnung Temp2
Dim T5 As String * 5 'Variable für Temp1 zur anzeige auf dem LCD
Dim T6 As String * 5 'Variable für Temp2 zur anzeige auf dem LCD
Dim T7 As Single 'hilfs Variable für die berechnung Temp1
Dim T8 As Single 'hilfs Variable für die berechnung Temp2
Dim Id1(8) As Byte 'für die adresse Sensor 1
Dim Id2(8) As Byte 'für die adresse Sensor 2
Dim Ar1(9) As Byte
Dim Ar2(9) As Byte
Dim I As Byte , Tmp1 As Byte , Tmp2 As Byte
'Dim Crc As Byte
Dim W As Byte
'Unterprogramme
Declare Sub Con_temp
Declare Sub Temp1
Declare Sub Temp2
'1wire Bus absuchen
W = 1wirecount()
Print W
Id1(1) = 1wsearchfirst()
Id2(1) = 1wsearchnext()
'Ersten text aufs Display schreiben
___lcdno = 0 'Obere Displayhälfte initialisieren, für den ersten Controller
Initlcd
Cls
Home
Cursor Off
Locate 1 , 1
Lcd "Innen"
Locate 2 , 1
Lcd "Aussen"
___lcdno = 1 'Untere Displayhälfte initialisieren, für den zweiten Controller
Initlcd
Cursor Off
Cls
Home
Locate 1 , 1
Lcd "Standart aus dem Internet"
Locate 2 , 1
Lcd "(c) Ralf Neubert"
'Hauptprogramm
Do
Gosub Con_temp
Gosub Temp1
Gosub Temp2
'Temperaturen und °C aufs Display schreiben
___lcdno = 0 'Obere Displayhälfte initialisieren, für den ersten Controller
'Initlcd
Home
Cursor Off
Locate 1 , 8
Lcd T5 ; Chr(0) ; "C"
Locate 2 , 8
Lcd T6 ; Chr(0) ; "C"
Loop
'Temperaturen Convertieren
Sub Con_temp
1wreset
1wwrite &HCC
1wwrite &H44
Waitms 1800
1wreset
End Sub
'Temperatur 1 Berechnen
Sub Temp1
1wreset
1wwrite &H55
1wwrite Id1(1) , 8
1wwrite &HBE
Ar1(1) = 1wread(9)
1wreset
Tmp1 = Ar1(1) And 1
If Tmp1 = 1 Then Decr Ar1(1)
T1 = Makeint(ar1(1) , Ar1(2))
T1 = T1 * 50
T1 = T1 - 25
T2 = Ar1(8) - Ar1(7)
T2 = T2 * 100
T2 = T2 / Ar1(8)
T1 = T1 + T2
T1 = T1 / 10
T7 = T1 / 10
T5 = Fusing(t7 , "###.#" )
End Sub
'Temperatur 2 Berechnen
Sub Temp2
1wreset
1wwrite &H55
1wwrite Id2(1) , 8
1wwrite &HBE
Ar2(1) = 1wread(9)
1wreset
Tmp2 = Ar2(1) And 1
If Tmp2 = 1 Then Decr Ar2(1)
T3 = Makeint(ar2(1) , Ar2(2))
T3 = T3 * 50
T3 = T3 - 25
T4 = Ar2(8) - Ar2(7)
T4 = T4 * 100
T4 = T4 / Ar2(8)
T3 = T3 + T4
T3 = T3 / 10
T8 = T3 / 10
T6 = Fusing(t8 , "###.#" )
End Sub
End
Gruß Ralf