Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

HY-Smart STM32 - Biblioteka do rysowania

mikmas 04 Maj 2016 11:57 714 3
  • #1 04 Maj 2016 11:57
    mikmas
    Poziom 18  

    Teraz się porządnie wziąłem za przystosowanie tego urządzenia do mojej maszyny, także trochę będę teraz trochę zaśmiecać sobą forum :).

    Ogólnie wyświetlać będę raczej proste figury, jednak jak to zrobić optymalnie? Nie mogę znaleźć dobrego datasheetu, także trochę na ślepo lecę. Tym bardziej, że sterownik, który posiadam jest bardzo ubogi.
    W przypadku poziomej linii ustawiam SetCursor, a następnie walę po ramie lcd (x wyświetlacza jest automatycznie inkrementowany).
    Gorzej jest z linią poziomą - SetCursor, ustaw pixel, SetCursor, ustaw pixel, ... - marnotrawienie straszne. Pytanie:
    1. Jest może coś takiego jak "ustawienie rysowanego okna"? Powiedzmy, że pierwotnie 240x320 i mam dostęp do całego. Ja jednak zmienię na jakiś wycinek i tylko po nim rysuje - to by eliminowało potrzebę ciągłego SetCursorowania. Po przekroczeniu lewej krawędzi "okna" przechodziłoby do następnego wiersza, pierwszej kolumny.
    2. Jest może jakaś biblioteka, która jest naprawdę ładnie napisana (optymalnie) i wykorzystuje w mądry sposób wszystkie właściwości wyświetlacza?

    0 3
  • Pomocny post
    #2 04 Maj 2016 13:01
    2675900
    Użytkownik usunął konto  
  • #3 04 Maj 2016 15:47
    piotrva
    Moderator na urlopie...

    Sterownik ma zaimplementowane ustawienie okna rysowania - podaje się adres xy początku, xy końca i potem wysyłasz tylko kolory pikseli.

    Najlepiej poszukaj dokumentacji tego konkretnego LCD, dawno z tego nie korzystałem i nie pamiętam czy coś ciekawego miałem na ten temat.

    0
  • #4 04 Maj 2016 16:30
    mikmas
    Poziom 18  

    Wg tego co piszą w HY32D jest kontroler SSD1289. Tak więc przeszedłem do sekcji, gdzie są opisane komendy.
    Wśród nich znalazłem te, które opisał Piotrus_999:

    R44h Horizontal RAM address position
    R45h Vertical RAM address start position
    R46h Vertical RAM address end position

    to by wyglądało, że o to chodzi, jednak z tym Horizontal trochę dziwnie wyglądało. Dopiero jak pisałem ten post to mnie tknęło i się przyjrzałem temu Horizontalowi. Skurczybyki start position i end position upchnęli w 1 komendę, co mnie zmyliło. Cwane, bo współrzędne 2x320 by się w 16b nie zmieściło, natomiast 2x240 już tak, stąd pozwolili sobie upchać. Może przyda się potomnym:

    Kod: c
    Zaloguj się, aby zobaczyć kod

    i wywołanie (częściowe wypełnienie okna)
    Kod: c
    Zaloguj się, aby zobaczyć kod

    od razu jak jesteśmy przy rejestrach to chciałbym poruszyć temat zbliżonej komendy:
    First window start, First window end, Second window start, Second window end
    też coś z oknami, ale do czego to służy?
    1st Screen driving position (R48h-R49h)
    Cytat:
    SS1[8:0]: Specify the driving start position for the first screen in a line unit. The LCD driving starts from the set gate
    driver, i.e. the first driving Gate is G0 if SS1[8:0] = 00H
    SE1[8:0]: Specify the driving end position for the first screen in a line unit. The LCD driving is performed to the set gate
    driver. For instance, when SS1[8:0] = “07”H and SE1[8:0] = “10”H are set, the LCD driving is performed from G7 to
    G16, and non-selection driving is performed for G1 to G6, G17, and others. Ensure that SS1[8:0] ≤ SE1[8:0] ≤ 13FH.

    szczerze mówiąc nie rozumiem? Chociaż tak +/- czego to dotyczy?

    0