Witam ponownie wrescie po dluzszej przerwie zaczynam modernizowac piec. Obecnie dziala na czasowkach i ciepelko jest, czas na sterowanie elektroniczne.
Zmodyfikowalem sterownik i zrobilem wstepne meni ktora mialo czytac temperature z 2 czujnikow ds1820 wszysko dziala dobrze pod warunkiem ze jest podpiety jeden czujnik jak wepne drugi i zmieniam w meni to na temperaturze t1 i t2 sa takie same temperatury.
Prawdopodobnie czyta tylko z jednego nie potrafie znalesc bledu moze ktos zerknie i wylapie szybciej niz ja.
program do sterowania 2 czujnikami ds
///////////////////////////////////////////////////////////////////////////////////
$large
Config Lcdpin = Pin , Db7 = P1.5 , Db6 = P1.4 , Db5 = P1.3 , Db4 = P1.2 , E = P1.1 , Rs = P1.0
Config Lcd = 16 * 2
Deflcdchar 0 , 238 , 234 , 238 , 224 , 224 , 224 , 224 , 224
Dim Is_device As Bit
Dim Number(8) As Byte
Dim T(2) As Byte
Dim X As Byte
Dim R As Byte
Dim Temp As Single
Dim Str_temp As String * 5
Declare Sub Read_numbers
Declare Sub Pomiar_temp
Declare Sub Match_rom
Declare Sub Wysw_temp
Declare Sub 1w_reset
Declare Sub Menu
Declare Sub Podmenu
Declare Sub T1
Declare Sub T2
Declare Sub T3
S4 Alias P2.7
S3 Alias P2.6
S1 Alias P2.5
S2 Alias P2.4
Const Kom_0 = "STEROWANIE PIECA"
Const Kom_1 = "WERSJA - V001"
Const Kom_2 = "WYBIERZ MENI"
Const Kom_3 = "| 1 | 2 | 3 | 4|"
Const R_rom = &H33
Const Con_t = &H44
Const M_rom = &H55
Const R_src = &HBE
Const Temp_0 = "TEMP. PIECA C.O."
Const Minus = "-"
Const Celcj = "C"
Const Err_1 = "Error: "
Const Err_2 = "No Device !"
Cursor Off
Cls
Home
Lcd Kom_0
Lowerline
Lcd Kom_1
Wait 2
Cls
Call Menu
Sub Menu
Cls
Home
Lcd Kom_2
Lowerline
Lcd Kom_3
Do
Set S1
If S1 = 0 Then
Call Podmenu
End If
Loop
End Sub
Sub Podmenu
Cls
Wait 1
Home
Lcd "= TEMPERATURY ="
Lowerline
Lcd " |T1|T2|T3|"
Do
Set S1
If S1 = 0 Then
Call T1
End If
Set S2
If S2 = 0 Then
Call T2
End If
Set S3
If S3 = 0 Then
Call T3
End If
Set S4
If S4 = 0 Then
Cls
Call Menu
End If
Loop
End Sub
Sub T1
Cls
Is_device = 1
Home
Lcd "TEMPERATURA |T1|"
Lowerline
Config 1wire = P2.3
'Cls"
'Cursor Off
'Lcd Kom_1
'Wait 1
'Cls
'Cursor Off
'Lcd Kom_2
Do
1w_reset
If Err = 1 Then
Is_device = 0
Cls
Lcd Err_1 ; Err_2
Waitms 250
Else
Call Read_numbers
Call Pomiar_temp
Call Wysw_temp
Set S4
If S4 = 0 Then
Call Menu
End If
End If
Loop
End Sub
Sub T2
Cls
Is_device = 1
Home
Lcd "TEMPERATURA |T2|"
Lowerline
Config 1wire = P2.2
End Sub
Sub T3
Cls
Home
Lcd "TEMPERATURA |T3|"
Lowerline
Do
1w_reset
If Err = 1 Then
Is_device = 0
Cls
Lcd Err_1 ; Err_2
Waitms 250
Else
Call Read_numbers
Call Pomiar_temp
Call Wysw_temp
Set S4
If S4 = 0 Then
Call Menu
End If
End If
Loop
End Sub
Sub Read_numbers
If Is_device = 0 Then
Cls
Lcd Temp_0
Is_device = 1
End If
1wwrite R_rom
For R = 1 To 8
Number(r) = 1wread()
Next R
End Sub
Sub Pomiar_temp
1w_reset
Call Match_rom
1wwrite Con_t
Waitms 250
Waitms 250
1w_reset
Call Match_rom
1wwrite R_src
T(1) = 1wread()
T(2) = 1wread()
1w_reset
End Sub
Sub Wysw_temp
Locate 2 , 2
If T(2) = 0 Then
Temp = T(1) / 2
Else
X = 256 - T(1)
Temp = X / 2
Lcd Minus
End If
Str_temp = Fusing(temp , ###.&)
Lcd Str_temp ; Chr(0) ; Celcj ; " "
End Sub
Sub 1w_reset
1wreset
End Sub
Sub Match_rom
1wwrite M_rom
For R = 1 To 8
1wwrite Number(r)
If Err = 1 Then
Is_device = 0
Cls
Lcd Err_1 ; R
Wait 1
End If
Next R
End Sub
//////////////////////////////////////////////////////////////////
przepraszam ze wszystko ale fragmenty nie oddadza wszystkiego pozdrawiam i dziekuje