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

Jak podłączyć i skonfigurować LCD 162x64 S1D15705 z AT89S52?

Awake 12 Kwi 2008 12:28 8128 15
REKLAMA
  • #1 5021557
    Awake
    Poziom 11  
    Posty: 14
    Witam!

    Posiadam wyświetlacz graficzny LCD 162x64 z kontrolerem S1D15705 (krótki opis znajduje się w załączniku). Podłączyłem go do mikrokontrolera AT89S52. Niestety nie mogę nic wyświetlić. Stosuję komendy, które są podane w opisie wyświetlacza, ale nic z tego nie wychodzi. Czy mógłby pomóc ktoś, kto używał już takiego wyświetlacza, lub podobnego z tym samym kontrolerem?

    Z góry dziękuję za wszelkie odpowiedzi.
    Załączniki:
    • S1D157xx_Manual.pdf (354.95 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #2 5270529
    kacperpk
    Poziom 14  
    Posty: 87
    Pomógł: 3
    Ocena: 3
    Witam

    Czy udało Ci się coś zdziałać z tym wyświetlaczem, mam podobny S1D15710 (zakupiony na allegro) i też zaczyna mi kończyć się cierpliwość.
    Może powalczymy razem z tym sterownikiem??
    Pozdrawiam
  • REKLAMA
  • #3 5273125
    Warhard
    Poziom 12  
    Posty: 109
    Pomógł: 1
    Ocena: 1
    Witam kiedyś bawiłem się z SED1520
    i też mi nic nie wychodziło.

    Później okazało się że miałem JTAGA włączonego.


    pozdrawiam
  • REKLAMA
  • #5 5273265
    Warhard
    Poziom 12  
    Posty: 109
    Pomógł: 1
    Ocena: 1
    To był akurat atmega8
  • REKLAMA
  • #7 5276018
    GrEG0
    Poziom 14  
    Posty: 65
    Pomógł: 8
    Jeżeli was interesuje, to mam kod do SED1565 (LCD 128x64) . W prawdzie napisany w C pod Atmega16, ale moze sie uda wam cos z tego wykorzystać.
  • #8 5276046
    Balu
    Poziom 38  
    Posty: 4397
    Pomógł: 323
    Ocena: 48
    Myślę, że jak się kolega podzieli publicznie wszyscy będą zadowoleni i nie będą mieli kiedyś powodów do odkopywania:)
    A i ja chętnie obejrzę:)
  • #9 5276693
    Awake
    Poziom 11  
    Posty: 14
    Udało mi się już uruchomić ten wyświetlacz. Miałem wcześniej napisać jak to zrobiłem, ale wyleciało mi. Dziękuję w tym miejscu moderatorowi, który umieścił ten temat w koszu, bo dzięki temu przypomniał mi o nim.

    Wyświetlacz do mikrokontrolera podłączyłem w ten sposób (pomijam resztę podłączeń niezbędnych do zadziałania mikrokontrolera):

    Jak podłączyć i skonfigurować LCD 162x64 S1D15705 z AT89S52?

    Kod programu w asemblerze (inicjalizacja + funkcje wysyłające dane + wyswietlanie LITER, itp.):

    
            ORG     0H
    
            CS      BIT     P3.7
            AO      BIT     P3.6
            WRLCD   BIT     P3.5
            RDLCD   BIT     P3.4
            RESET   BIT     P3.3
    
            LJMP    START
    
            ORG     100H
    START:
            CALL    INICJUJ_WYSWIETLACZ
            SJMP    $
    
    INICJUJ_WYSWIETLACZ:
            CLR     RESET
            SETB    RESET
            SETB    CS
            SETB    RDLCD
            SETB    WRLCD
            SETB    AO
            MOV     P2,#0E2H        ;RESET
            CALL    LCD_WRC
            MOV     P2,#0ABH        ;OSCILATOR ON
            CALL    LCD_WRC
            MOV     P2,#02BH        ;POWER CONTROL SET
            CALL    LCD_WRC
            MOV     P2,#026H        ;5V VOLTAGE
            CALL    LCD_WRC
            ;MOV     P2,#0A7H       ;INWERSJA KOLORU WYLACZONA
            ;CALL    LCD_WRC
            MOV     P2,#0C8H        ;LUSTRZANE ODBICIE WYLACZONE
            CALL    LCD_WRC
            MOV     P2,#040H        ;LINIA STARTOWA
            CALL    LCD_WRC
            CALL    CZYSC_WYSWIETLACZ
            MOV     P2,#0AFH        ;LCD ON
            CALL    LCD_WRC
            RET
            
    LCD_WRD:                        ;ZAPIS DANYCH DO WYSWIETLACZA
            CLR     CS
            CLR     WRLCD
            SETB    WRLCD
            SETB    CS
            RET
    
    LCD_WRC:                        ;ZAPIS KOMENDY DO WYSWIETLACZA
            CLR     AO
            CLR     CS
            CLR     WRLCD
            SETB    WRLCD
            SETB    CS
            SETB    AO
            RET
            
    CZYSC_WYSWIETLACZ:
            MOV     B,#0B0H
    ZMIEN_STRONE:
            MOV     P2,B            ;WYBOR STRONY
            CALL    LCD_WRC
            MOV     P2,#00010000B   ;WYBOR KOLUMNY
            CALL    LCD_WRC
            MOV     P2,#00000011B
            CALL    LCD_WRC
            MOV     R0,#162
            MOV     P2,#0H
    CZYSC_STRONE:
            CALL    LCD_WRD
            DEC     R0
            MOV     A,R0
            JNZ     CZYSC_STRONE
            INC     B
            MOV     A,B
            CJNE    A,#0B9H,ZMIEN_STRONE
            RET
    
    WYSWIETL_LITERE:                                ;WYSWIETLA NA EKRANIE LITERĘ Z ZADEKLAROWANEJ TABLICY
            MOV     A,#0B0H                         ;TRZEBA USTAWIC:
            ADD     A,STRONA                        ;LITERA, STRONA, KOL_H, KOL_L
            MOV     P2,A
            CALL    LCD_WRC
            MOV     A,#00010000B
            ADD     A,KOL_H
            MOV     P2,A
            CALL    LCD_WRC
            MOV     A,KOL_L
            MOV     P2,A
            CALL    LCD_WRC
            MOV     A,LITERA
            MOV     B,#5
            MUL     AB
            MOV     B,A
            MOV     DPTR,#LITERY
            MOV     R0,#5
            CALL    WYSWIETL_BAJT
            POP     ACC
            MOV     R0,A
            POP     B
            POP     ACC
            RET
    
    WYSWIETL_BAJT:
            MOV     A,B
            MOVC    A,@A+DPTR       ;POBRANIE BAJTU
            MOV     P2,A
            CALL    LCD_WRD         ;WYSWIETLANIE BAJTU
            INC     B
            DEC     R0
            MOV     A,R0
            JNZ     WYSWIETL_BAJT
            RET
    
    LITERY:
        DB 00100000B        ;A
        DB 01010100B
        DB 01010100B
        DB 01010100B
        DB 01111000B
    
  • #10 5277848
    GrEG0
    Poziom 14  
    Posty: 65
    Pomógł: 8
    Dla tych co chcieli, w załączniku znajduje się przykładowa biblioteka dla SED1565 (128x64).
    Załączniki:
    • sed1565.zip (1.51 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #11 10243524
    ersmoku
    Poziom 11  
    Posty: 21
    Witam

    Obecnie staram się wyświetlić coś na takim ekranie i mam kilka pytań:

    1. Które komendy minimalnie trzeba przesłać do LCD, żeby można było zacząć coś na nim wyświetlać?
    2. Czy konieczne jest sterowanie sprzętowym resetem wyświetlacza? W moim przypadku podpiołem go do VCC przez rezystor podciągający, ale we wszystkich kodach programu znajduje na początku resetowanie sprzętow? Czy jest ono konieczne?
    3. Jak wygląda wyświtlacz po samym podpięciu zasilania? W moim przypadku wszystkie piksele się świecą? To dobry czy zły znak?

    Z góry dzięki za odpowiedź.
  • #12 10720031
    sebas86
    Poziom 2  
    Posty: 3
    Mam do was kilka pytań odnośnie tego sterownika, a w sumie jego bliskiego kuzyna S1D15710, który różni się tylko kilkoma detalami i chyba jedną komendą podczas inicjalizacji.

    Jak wygląda start tego wyświetlacza? Chodzi mi o to co się z nim dzieje po podłączeniu samego zasilania oraz po wprowadzeniu komend. Mój wyświetlacz w ogóle nie reaguje na komendy. Ściągnąłem już wszystkie przykłady programów dla S1D15705, przeanalizowałem dokumentację dołączoną od producenta oraz skrócony opis dostępny po polsku, przygotowałem również swój kod wzorując się na funkcjach napisanych w Asemblerze dla mikrokontrolera '51 (z dołączonej dokumentacji) ale za cholerę nie chce ruszyć chociażby komenda inwersji wyświetlacza, nawet mimo naniesienia poprawek do procedury inicjalizacji (zmiana 0x2b na 0x2f). Nie działają również gotowe demka zamieszczane na forum. Jedyne co działa to podświetlenie, które załącza się wraz z podaniem napięcia, sam wyświetlacz jest w całości zaczerniony.

    Jeśli dobrze rozumiem wyprowadzenia ze sterownika wystarczy podłączyć bezpośrednio pod piny mikrokontrolera? Może to być wina za mało wydajnego źródła prądu? Wyświetlacz zasilam bezpośrednio z programatora USBAsp (dokładnie taki: http://allegro.pl/programator-usbasp-avr-atmel-isp-tasma-win7x64-pl-i2202700183.html), teoretycznie powinien być w stanie dostarczyć 500mA, więc spokojnie powinno starczyć na zasilenie tego wyświetlacza i Atmegi8a-pu, z której korzystam.
  • #13 11045843
    sebas86
    Poziom 2  
    Posty: 3
    Przykładowy program, którym usiłowałem przetestować wyświetlacz (oprócz pozostałych dostępnych na forum) wygląda tak:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Wyświetlacz zasilany jest z programatora (+5V), piny sterujące podłączone bezpośrednio do mikrokontrolera Atmega8a: portd na dane, pierwsze dwa piny portb jako debug output ;), portc do sterowania wg oznaczeń na wyświetlaczu c0->rd c1->wr c2->a0 c3->res c4->cs1. Jeśli coś robię źle to możecie mnie zjechać jak burego pas, utknąłem w martwym punkcie i brakuje mi pomysłów już co mogę robić źle chyba, że rzeczywiście wyświetlacz, który dostałem jest walnięty...

    Dla przypomnienia kontroler to S1D15710 ale po zmianie flagi CONTROLLER_S1D17710 na 0 powinno śmiglić również na bliźniaczym S1D15705 (przynajmniej wg dokumentacji).

    Na czuja kod ten powinien powodować na przemian włączanie i wyłączanie wszystkich punktów na ekranie, u mnie niestety nic takiego się nie dzieje.
  • #14 11416913
    dodiraf
    Poziom 11  
    Posty: 9
    Pomógł: 1
    Ocena: 2
    Potwierdzam "sebas86" twój kod działa. U mnie lcd się odpalił (Atmega32 - 8MHz)
    Mruga jednak losowymi pikselami
  • #15 11661323
    nept00n
    Poziom 1  
    Posty: 1
    Witam,

    różnica między S1D17705 a S1D15710 nie polega tylko na zmianie Power Control Set z 2B na 2F. Jest jeszcze trochę inne adresowanie pamięci obrazu
    pierwszych czterech linii. Mam wyświetlacz na sterowniku S1D15710 219x60 pikseli. Jak do tej pory jestem zadowolony z postępów nad jego rozpracowaniem.
    Ma nawet dobrą rozdzielczość i nie jest taki drogi (ok. 40 PLN).
    Wszystkim którzy się zniechęcili do tego wyświetlacza radzę do niego wrócić
    bo warto. Nie warto wysyłać go do śmietnika.
    Jak dokończę bibliotekę w C do niego to udostępnię na forum.
    Wstawiam kilka fotek. W rzeczywistości wyświetlacz jest jednak trochę ciemniejszy.
    Jak podłączyć i skonfigurować LCD 162x64 S1D15705 z AT89S52? Jak podłączyć i skonfigurować LCD 162x64 S1D15705 z AT89S52? Jak podłączyć i skonfigurować LCD 162x64 S1D15705 z AT89S52? Jak podłączyć i skonfigurować LCD 162x64 S1D15705 z AT89S52?
  • #16 11714922
    sebas86
    Poziom 2  
    Posty: 3
    Dzięki za odpowiedź.

    O tych różnicach również wiem, jednak nie były istotne dla tego problemu. W między czasie kupiłem dwa inne wyświetlacze żeby sprawdzić czy przypadkiem problem nie znajduje się między krzesłem a monitorem i udało się je uruchomić. Jeszcze powalczę z tym wyświetlaczem, bo szkoda wywalić 40zł w błoto ale nadziei już sobie nie robię... No i na odsyłanie na gwarancję jest już chyba również za późno, chyba, że Lispol udziela na nie więcej czasu niż pół roku.

Podsumowanie tematu

LABEL_AI_GENERATED
Dyskusja dotyczy podłączenia i konfiguracji graficznego wyświetlacza LCD 162x64 z kontrolerem S1D15705 do mikrokontrolera AT89S52. Użytkownik miał problem z wyświetlaniem danych pomimo stosowania komend z dokumentacji. W trakcie rozmowy pojawiły się sugestie dotyczące możliwych przyczyn problemów, takich jak włączony JTAG (choć nie dotyczy to AT89S52), oraz porównania z podobnymi kontrolerami S1D15710 i SED1565. Autor ostatecznie podał schemat podłączenia i fragment kodu w asemblerze inicjalizującego wyświetlacz, co pozwoliło mu uruchomić wyświetlacz. W dyskusji pojawiły się pytania o minimalny zestaw komend do inicjalizacji, konieczność sprzętowego resetu oraz zachowanie wyświetlacza po podłączeniu zasilania (np. czy wszystkie piksele świecą się na biało). Użytkownicy wymieniali się przykładami kodów i bibliotekami, głównie dla mikrokontrolerów AVR (Atmega16, Atmega32), oraz zwracali uwagę na różnice w adresowaniu pamięci obrazu i komendach między S1D15705 a S1D15710. Wspomniano o problemach z uruchomieniem wyświetlacza, które mogą wynikać z błędów w inicjalizacji lub uszkodzenia sprzętu. Jeden z uczestników zapowiedział udostępnienie biblioteki w języku C dla S1D15710. Dyskusja zawierała także przykładowe fragmenty kodu i zdjęcia działających wyświetlaczy.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA