Witam.
Problem dotyczy zmiany koloru paska na całej długości wyświetlacza w miejscu zmiany pikseli (w tym wypadku liczby)
Najlepiej zobrazuje to zdjęcie.
Problem dotyczy tylko tego konkretnego przypadku, gdzie następuje szybka zmiana wartości wyświetlanych na lcd.
Co dziwne słowa "Temperatura" oraz "IN" i "OUT" wyświetlane są tylko raz w tym samym czasie, a paski występują tylko przy IN OUT.
LCD jest podłączony pod atmege8 8MHz przez stabilizator 3,3v, czujniki temperatury ds18b20, oczywiście plus pełen zestaw kondensatorków.
Jeszcze kod:
Będę bardzo wdzięczny za pomoc.
Pozdrawiam
Krzysztof
Problem dotyczy zmiany koloru paska na całej długości wyświetlacza w miejscu zmiany pikseli (w tym wypadku liczby)
Najlepiej zobrazuje to zdjęcie.
Problem dotyczy tylko tego konkretnego przypadku, gdzie następuje szybka zmiana wartości wyświetlanych na lcd.
Co dziwne słowa "Temperatura" oraz "IN" i "OUT" wyświetlane są tylko raz w tym samym czasie, a paski występują tylko przy IN OUT.
LCD jest podłączony pod atmege8 8MHz przez stabilizator 3,3v, czujniki temperatury ds18b20, oczywiście plus pełen zestaw kondensatorków.
Jeszcze kod:
$lib "lcd-pcf8833.lbx"
$regfile = "m8def.dat"
$crystal = 8000000
$hwstack = 128
$swstack = 128
$framesize = 128
Config Graphlcd = Color , Controlport = Portc , Cs = 4 , Rs = 5 , Scl = 2 , Sda = 3
Config 1wire = Portb.0
Config Portd.2 = Input
Set Portd.2
Config Int0 = Low Level
On Int0 Przycisk
Enable Int0
Const Blue = &B00000011
Const Black = &B00000000
Const White = &B11111111
Dim Adresy(16) As Byte
Dim Temp As Byte
Dim Temp_str As String * 6
Dim W As Byte
Dim T As Integer
Dim Wew(9) As Byte
Dim Zew(9) As Byte
Dim Swiatlo As Byte
Glcdcmd &H21
Swiatlo = 0
Adresy(1) = 1wsearchfirst()
Adresy(9) = 1wsearchnext()
W = 1wirecount()
Do
Gosub Wybor
Loop
End
Wybor:
Incr Swiatlo
If Swiatlo = 2 Then
Swiatlo = 0
End If
If Swiatlo = 0 Then
Gosub Ciemno
Else
Gosub Jasno
End If
Return
'---------------------------------
Ciemno:
Box(0 , 0) -(97 , 67) , Blue
Setfont Color8x8
Lcdat 8 , 5 , "TEMPERATURA" , White , Blue
Lcdat 30 , 5 , " IN" , White , Blue
Lcdat 50 , 5 , "OUT" , White , Blue
Do
Disable Interrupts
1wreset
1wwrite &H55
1wwrite Adresy(1) , 8
1wwrite &HBE
Wew(1) = 1wread(9)
1wreset
1wwrite &H55
1wwrite Adresy(9) , 8
1wwrite &HBE
Zew(1) = 1wread(9)
1wreset
1wwrite &HCC
1wwrite &H44
Waitms 500
T = Makeint(wew(1) , Wew(2))
T = T * 10
T = T / 16
Temp_str = Str(t)
Temp_str = Format(temp_str , "0.0")
Setfont Color16x16
Lcdat 24 , 30 , Temp_str , White , Blue
If W = 1 Then
Lcdat 50 , 10 , "err" , White , Blue
Elseif Err = 0 Then
T = Makeint(zew(1) , Zew(2))
T = T * 10
T = T / 16
Temp_str = Str(t)
Temp_str = Format(temp_str , "0.0")
Setfont Color16x16
Lcdat 44 , 30 , Temp_str , White , Blue
End If
Enable Interrupts
Loop
Return
'------------------------------------------------
Jasno:
Box(0 , 0) -(97 , 67) , White
Setfont Color8x8
Lcdat 8 , 5 , "TEMPERATURA" , Black , White
Lcdat 30 , 5 , " IN" , Black , White
Lcdat 50 , 5 , "OUT" , Black , White
Do
Disable Interrupts
1wreset
1wwrite &H55
1wwrite Adresy(1) , 8
1wwrite &HBE
Wew(1) = 1wread(9)
1wreset
1wwrite &H55
1wwrite Adresy(9) , 8
1wwrite &HBE
Zew(1) = 1wread(9)
1wreset
1wwrite &HCC
1wwrite &H44
Waitms 500
T = Makeint(wew(1) , Wew(2))
T = T * 10
T = T / 16
Temp_str = Str(t)
Temp_str = Format(temp_str , "0.0")
Setfont Color16x16
Lcdat 24 , 30 , Temp_str , Black , White
If W = 1 Then
Lcdat 50 , 10 , "err" , Black , White
Elseif Err = 0 Then
T = Makeint(zew(1) , Zew(2))
T = T * 10
T = T / 16
Temp_str = Str(t)
Temp_str = Format(temp_str , "0.0")
Setfont Color16x16
Lcdat 44 , 30 , Temp_str , Black , White
End If
Enable Interrupts
Loop
Return
'---------------------------------
Przycisk:
Gosub Wybor
Return
'---------------------------------
$include "color8x8m.font"
$include "color16X16m.font"
Będę bardzo wdzięczny za pomoc.
Pozdrawiam
Krzysztof