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

PCF8833(LCD) + BASCOM + AVR

Piotrek6984 13 Lis 2010 20:48 2798 1
REKLAMA
  • #1 8739792
    Piotrek6984
    Poziom 13  
    Witam. Mam pewien problem .
    Do mikroprocesora ATMEGA8 podłączyłem wyświetlacz LCD od telefonu NOKIA 6100. Sterowaniem wyświetlacza zajmuje się program, napisany w BASCOM-ie. Do sterowania używam biblioteki Lcd-pcf8833.lbx, która jest zgodna z kontrolerem znajdującym się w wyświetlaczu. Wszystkie połączenia LCD z procesorem i dotyczące nich ustawienia w programie są wykonane/wybrane prawidłowo. Niestety, gdy próbuję wyświetlić dowolne znaki na owym wyświetlaczu, mają one nieprawidłowy kolor (niebieski) i są na różowym tle. Zmiana parametrów odpowiedzialnych za kolor tych elementów nic nie daje. Próbowałem zmieniać wartości w następującym parametrze -

    Glcdcmd &H36
    Glcddata &B10001000

    ale też nic to nie dało (kolory nadal były wyświetlane nieprawidłowo - czcionka jedynie zmieniła kolor na jaśniejszy, a tło na niebieski). Polecenia dotyczące inwersji kol. :
    Glcdcmd &H21 'Inversion_on
    Glcdcmd &H20 '... off
    także nic (poza zmianą koloru czcionki i tła na inny ) nie dały - kolory są nieprawidłowe (np. czcionka żółta w ogóle się na wyświetlaczu nie pojawia - puste miejsce, inne kolory - czerwony, czarny - są wyświetlane na LCD kolorem tym samym ...
    Co może być tego przyczyną?

    Poniżej zamieszczam przykładowy kod, gdzie te problemy występują:

    $lib "Lcd-pcf8833.lbx "                                    
    $regfile = "m8def.dat"                                  
    $crystal = 12000000                                   
                                        
    Config Graphlcd = Color , Controlport = Portb , Cs = 2 , Rs = 0 , Scl = 5 , Sda = 3
    
    
    Const Blue = &B00000011
    Const Yellow = &B11111100
    Const Red = &B11100000
    Const Green = &B00011100
    Const Black = &B00000000
    Const White = &B11111111
    Const Brightgreen = &B00111110
    Const Lightgreen = &B01111100
    Const Darkgreen = &B00010100
    Const Darkred = &B10100000
    Const Darkblue = &B00000010
    Const Brightblue = &B00011111
    Const Orange = &B00110000
    
    Wait 2
    Cls
    Box(1 , 1) -(132 , 132) , White
    Setfont Color8x8 
    Lcdat 5 , 1 , "NIEBIESKI" , Blue , White
    Lcdat 25 , 1 , "ZOLTY" , Yellow , White
    Lcdat 45 , 1 , "CZERWONY" , Red , White
    Lcdat 65 , 1 , "ZIELONY" , Green , White
    Lcdat 85 , 1 , "CZARNY" , Black , White 
    
    End
    
    $include "color8x8.font"
    
  • REKLAMA
  • #2 8770890
    Piotrek6984
    Poziom 13  
    Problem został rozwiązany. Należało dodać dodatkową procedurę inicjalizującą wyświetlacz LCD :

    Inicjalizacja_lcd:
       Portb.0 = 0                            'Inicjacja Reseta (pin, do którego podłączono reset)
       Waitms 50
       Portb.0 = 1                            'pin, do którego podłączono RESET
       Waitms 50
       Glcdcmd &H01                                             'software reset
       Glcdcmd &H11                                             'sleep out
       Glcdcmd &H03                                             'booster on
       Waitms 10
       Glcdcmd &H13                                             'normal mode on
       Glcdcmd &HBA
       Glcdcmd &H36                                             'Mem_control
       Glcddata &B00000000 'odpowiednio ustawić
       Glcdcmd &H3A                                             'color
       Glcddata &B00000010
       Glcdcmd &H25                                             'contrast
       Glcddata 55
       Glcdcmd &H2A                                             'column adres set
       Glcddata 0
       Glcddata 131
       Glcdcmd &H2B                                             'page adres set
       Glcddata 0
       Glcddata 131
       Glcdcmd &H38                                             'iddle mode off
       Glcdcmd &H29                                             'display on
    Return
    


    Gotowy, przykładowy, działający program znajduje się w załączniku.
    Załączniki:
REKLAMA