logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Niezrozumiałe paskowate rozjaśnienia na LCD 3510i

krzysztofo 06 Paź 2010 14:19 1813 1
REKLAMA
  • #1 8589581
    krzysztofo
    Poziom 11  
    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.

    Niezrozumiałe paskowate rozjaśnienia na LCD 3510i

    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
  • REKLAMA
  • #2 8589760
    flapo213
    Poziom 21  
    Witaj,

    Chyba wyświetlacz ma problem z kontrastem, nie każdy egzemplarz musi mieć te same ustawienia, spróbuj zmienić kontrast na mniejszy oczywiście softwarowo.

    Pozdrawiam
REKLAMA