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

Wyświetlacz LCD 2X16 CBC016002E29-YLY-R-01

pawel_na_chwile 12 Maj 2011 14:19 3846 7
REKLAMA
  • #1 9498123
    pawel_na_chwile
    Poziom 11  
    Witam, tworzę pracę dyplomową, w skład której wchodzić ma coś na wzór prostego programowalnego sterownika, własnego projektu, coś jak EASY, w każdym razie sam sterownik działa obsługuje wyjścia analogowe, cyfrowe itd, jednak mam problem z obsługą LCD jak w temacie, a dokładnie to z upewnieniem się czy problem tkwi w programie czy w wyświetlaczu, otóż program ma komunikować się z wyświetlaczem po 4 liniach, napisałem program, przetestowałem na symulatorze Picsimulator i tam jest ok, zresztą program sam w zaprogramowanym układzie także działa tylko wyświetlacz milczy, i tu rodzi się moje pytanie, czy nie jest uszkodzony wyświetlacz, otóż nie mam drugiego do sprawdzenia, a ten był kupiony na allegro jako nówka, zresztą był dokładnie zapakowany, mimo iż podłączenie jest na 100% ok, sprawdzane kilka razy, napięcie zasilania w normie to mimo iż kręcę potencjometrem od kontrastu to w ogóle nie zapalają się czarne kwadraciki w górnej linii, z praktyki jak pracowałem z wyświetlaczami, to po podłączeniu zasilania i kontrastu przez potencjometr to zawsze w jednym skrajnym położeniu chyba na +5V pojawiały się same kwadraciki, a tu nic, tylko działa podświetlenie, mikrokontroler, coś wystawia na port, bo pojawiają się tam jakieś napięcia, całością steruje PIC16F877A, jednak wyświetlacz milczy, nic się nie zapala, może się mylę ale zdaje mi się że padł lcd, prosze o wyprowadzenie mnie z błędu lub potwierdzenie mojego przypuszczenia
  • REKLAMA
  • #2 9498158
    gts1991
    Użytkownik obserwowany
    Może jakiś schemat, zdjęcia , kod programu?
  • REKLAMA
  • #3 9498826
    piotrva
    VIP Zasłużony dla elektroda
    1. swego czasu w Polsce pojawiła się seria lcd z czyszczeniem zaraz po podłączeniu, ale poza tym LCD działały zupełnie normalnie, także to raczej nie to
    2. załącz schemat, zdjęcia z pracy, bo bez tego to potrzebna raczej wróżka
    3. skoro jesteś na uczelni to poproś o pożyczenie innego LCD - tam na pewno mają takich tony, ewentualnie przetestuj swój w innym układzie, w którym działa inny LCD na tym samym sterowniku
  • #4 9500504
    pawel_na_chwile
    Poziom 11  
    W załączniku schemat podłączenia wyświetlacza, ale raczej tutaj błędu nie ma, zaraz podeślę kod z obsługą wyświetlacza, może akurat gdzieś coś tkwi czego nie zauważyłem
  • #5 9500519
    pawel_na_chwile
    Poziom 11  
    Co do programu to jest zaczerpnięty z książki Tomasza Jabłońskiego "Mikrokontrolery PIC16F8X", i tak jak pisałem przy kompilacji 0 błędów, i na symulatorze wszystko działa prawidłowo

    Najpierw przeprowadzam inicjalizację wyświetlacza
    
    INICJALIZACJA_LCD
    
    MOVLW.50		        ;WPISANIE CZASU OPOZNIENIA 50MS
    CALL OPOZNIENIE		
    BCF RS			;WYBOR REJESTRU IR W WYSWIETLACZU, W CELU ADRESOWANIA PAMIECI RAM W WYSWIETLACZU
    
    BSF E			;ZEZWOLENIE DLA KOMUNIKACJI PROCESORA Z WYSWIETLACZEM
    MOVLW.3			;WARTOSC DO WYSLANIA, DO ZAADRESOWANIA PAMIECI RAM W WYSWIETLACZU
    MOVWF PORTB		;WYSLANIE DANYCH NA PORTB DO REJESTRU IR W WYSWIETLASCZU, ZAADRESOWANIE PAMIECI TRAM W WYSWIETLACZU
    
    BCF E			;WYLACZENIE ZEZWOLENIA DLA WYSYLANIA DANYCH DO WYSWIETLACZA
    MOVLW.5			;WPISANIE CZASU OPOZNIENIA 5MS
    CALL OPOZNIENIE		;IDZ DO PODPROGRAMU OPOZNIENIE
    BSF E			;ZEZWOLENIE DLA KOMUNIKACJI PROCESORA Z WYSWIETLACZEM
    NOP			;CZAS POTRZEBNY NA PONOWNE WPISANIE MODULU 3
    NOP
    NOP
    NOP
    BCF E			;KONIEC KOMUNIKACJI PROCESORA Z WYSWIETLACZEM
    CALL OPOZNIENIE_100u	;IDZ DO PODPROGRAMU OPOZNIENIE 100uS
    BSF E			;ROZPOCZECIE KOMUNIKACJI PROCESORA Z WYSWIETLACZEM
    NOP
    NOP
    NOP			;KOLEJNE WPISANIE MODULU 3
    NOP
    BCF E			;KONIEC KOMUNIKACJI WYSWIETLACZA Z PROCESOREM
    CALL OPOZNIENIE_100u	;IDZ DO POZNIENIE 100uS
    
    MOVLW 28H		;URUCHOMIENIE W WYSWIETLACZU INTERFEJSU 4 BITOWEGO
    CALL WYSLIJ_DANE	;IDZ DO PODPROGRAMU WYSLIJ DANE, W TYM PRZYPADKU ROZKAZ
    
    MOVLW.8			;ROZKAZ WYŁĄCZENIE WYSWIETLACZA
    CALL WYSLIJ_DANE	;WYSLANIE ROZKAZU
    MOVLW.1			;ROZKAZ CZYSZCZENIE WYSWIETLACZA
    CALL WYSLIJ_DANE	;WYSLANIE ROZKAZU
    MOVLW.6			;ROZKAZ USTAWIENIA PRZESYWANIA KURSORA KIEDY DANE SA WYSWIETLANE
    CALL WYSLIJ_DANE	;WYSLANIE ROZKAZU
    MOVLW 0CH		;ROZKAZ WŁĄCZENIE WYSWIETLACZA
    CALL WYSLIJ_DANE	;WYSLANIE ROZKAZU
    
    GOTO GLOWNY
    
    ;***********************************************WYSYLANIE NAPISU****************************************************
    
    WYSWIETL_NAPIS
    BSF RS			;WYBOR REJESTRU DR
    GOTO PRZESKOCZ		;JEZELI WYSYLANIE NAPISU PRZESKOCZ NASTEPNY ROZKAZ
    
    Teraz podprogram wysyłania napisu
    
    WYSLIJ_DANE
    BCF RS			;WYBOR REJESTRU IR
    
    PRZESKOCZ
    MOVWF TMP		;PRZESYLANIE INSTRUKCJI DO REJESTRU POMOCNICZEGO TMP
    BSF E			;ZEZWOLENIE NA KOMUNIKACJĘ Z WYSWIETLACZEM
    SWAPF TMP,F		;ZMIANA TETRAD
    
    MOVLW 0F0H		;JEDYNKI NA BARDZIEJ ZNACZACYM POLBAJCIE
    IORWF TMP,W		;SUMA LOGICZNA ZAWARTOSCI REJESTRU W I TEMP, WYNIK DO W
    MOVWF PORTB		;WYSLANIE BARDZIEJ ZNACZACEGO POLBAJTU DO WYSWIETLACZA
    BCF E			;KONIEC KOMUNIKACJI Z WYSWIETLACZEM
    NOP			;CZEKAJ NA WPISANIE
    NOP
    NOP
    NOP
    BSF E			;URUCHOMIENIE KOMUNIKACJI Z WYSWIETLACZEM
    SWAPF TMP,W		;PONOWNA ZAMINA POLBAJTOW I WYSLANIE DO W
    IORLW 0F0H		;SUMA LOGICZNA I ZAPISANIE WYNIKU DO W
    MOVWF PORTB		;WYSLANIE MNIEJ ZNACZACEGO POLBAJTU DO WYSWIETLACZA
    BCF E			;KONIEC KOMUNIKACJI Z WYSWIETLACZEM
    BTFSC RS		;TEST LINI RS
    GOTO OPOZNIENIE_X	;JEŻELI RS PRAWIDŁOWY SKOCZ DO OPOZNIENIEX
    MOVLW.4			;WPISANIE CZASU OPOZNIENIA
    CALL OPOZNIENIE		;IDZ DO OPOZNIENIE
    RETURN
    OPOZNIENIE_X
    CALL OPOZNIENIE_100u
    RETURN
    
    Dalej podprogramy opóźnień
    
    ;***************************************PODPROGRAM OPOZNIENIA RZEDU 100uS***************************
    
    OPOZNIENIE_100u					;WYBOR BANKU PAMIECI
    BSF STATUS, RP0					;WYBOR BANKU PAMIECI
    MOVLW 0X4					;DANA KONFIGURACYJNA DO W
    MOVWF OPTION_REG				;USTAWIENIE REJESTRU OPTION REG
    BCF STATUS, RP0					;POWROT DO POPRZEDNIEGO BANKU PAMIECI
    CLRF TMR0					;ZEROWANIE LICZNIKA TMR0
    
    CZAS100
    MOVLW 0X64					;WPISANIE MIERZONEGO CZASU
    BCF STATUS, RP0
    SUBWF TMR0,W
    BTFSS STATUS,C					;TESTUJ BIT C JEZELI USTAWIONY OMIN NASTEPNY ROZKAZ
    GOTO CZAS100
    BSF STATUS,RP0
    CLRF OPTION_REG					;POWTÓRNE USTAWIENIE REJESTRU OPTION_REG
    BCF STATUS,RP0
    RETURN
    
    ;***************************************PODPROGRAM OPOZNIENIA RZEDU MS***************************
    OPOZNIENIE
    MOVWF MSEK					;PRZEPISANIE ODMIERZANEGO CZASU Z W DO REJESTRU
    BSF STATUS, RP0					;WYBOR BANKU PAMIECI
    MOVLW 0X1
    MOVWF OPTION_REG
    
    CZAS1
    BCF STATUS, RP0
    CLRF TMR0
    
    CZAS2
    MOVLW.125
    BCF STATUS, RP0
    SUBWF TMR0,W
    BTFSS STATUS,C
    GOTO CZAS2
    DECFSZ MSEK,F
    GOTO CZAS1
    BSF STATUS,RP0
    CLRF OPTION_REG					;POWTÓRNE USTAWIENIE REJESTRU OPTION_REG
    BCF STATUS,RP0
    
    Teraz wysyłam konkretne napisy na wyświetlacz
    
    ;***************************************WYWOŁYWANIE POSZCZEGÓLNYCH EKRANÓW  ********************
    
    EKRAN1
    MOVLW 80H		;ADRS 40, WYSWIETL W DRUGIEJJ LINII
    CALL WYSLIJ_DANE
    CALL EKRAN1.1
    MOVLW 0C0H		
    CALL WYSLIJ_DANE
    CALL EKRAN1.2
    RETURN
    
    No i zdefiniowanie ekranów
    
    EKRAN1.1
    MOVLW "Z"
    CALL WYSWIETL_NAPIS
    MOVLW "A"
    CALL WYSWIETL_NAPIS
    MOVLW "S"
    CALL WYSWIETL_NAPIS
    MOVLW "I"
    CALL WYSWIETL_NAPIS
    MOVLW "L"
    CALL WYSWIETL_NAPIS
    MOVLW "A"
    CALL WYSWIETL_NAPIS
    MOVLW "N"
    CALL WYSWIETL_NAPIS
    MOVLW "I"
    CALL WYSWIETL_NAPIS
    MOVLW "E"
    CALL WYSWIETL_NAPIS
    MOVLW " "
    CALL WYSWIETL_NAPIS
    MOVLW "S"
    CALL WYSWIETL_NAPIS
    MOVLW "I"
    CALL WYSWIETL_NAPIS
    MOVLW "E"
    CALL WYSWIETL_NAPIS
    MOVLW "C"
    CALL WYSWIETL_NAPIS
    MOVLW " "
    CALL WYSWIETL_NAPIS
    MOVLW " "
    CALL WYSWIETL_NAPIS
    RETURN
    
    
    ;**************************************************************************************************************************
    ;********************************************************  EKRAN1.2  ******************************************************
    ;**************************************************************************************************************************
    
    
    EKRAN1.2
    MOVLW "N"
    CALL WYSWIETL_NAPIS
    MOVLW "A"
    CALL WYSWIETL_NAPIS
    MOVLW "P"
    CALL WYSWIETL_NAPIS
    MOVLW "I"
    CALL WYSWIETL_NAPIS
    MOVLW "E"
    CALL WYSWIETL_NAPIS
    MOVLW "C"
    CALL WYSWIETL_NAPIS
    MOVLW "I"
    CALL WYSWIETL_NAPIS
    MOVLW "E"
    CALL WYSWIETL_NAPIS
    MOVLW " "
    CALL WYSWIETL_NAPIS
    MOVLW "2"
    CALL WYSWIETL_NAPIS
    MOVLW "3"
    CALL WYSWIETL_NAPIS
    MOVLW "0"
    CALL WYSWIETL_NAPIS
    MOVLW "V"
    CALL WYSWIETL_NAPIS
    MOVLW " "
    CALL WYSWIETL_NAPIS
    MOVLW " "
    CALL WYSWIETL_NAPIS
    MOVLW " "
    CALL WYSWIETL_NAPIS
    RETURN
    

    Całego kodu nie będę załączał tu jest tylko obsługa samego LCD, do tego ja piszę w asemblerze, język c odpada, przypuszczam jednak że coś nie tak jest z wyświetlaczem, a dodam jeszcze że kwarc ma 2MHz

    Dodano po 5 [minuty]:

    Jeszcze muszę dodać że port D jest prawidłowo skonfigurowany, gdyż bity w TRISE, decydują także o tym czy port D może pracować jako zwykły port czy jako port równoległy, i wszystko jest ustawione że pracuje jako zwykły port, w załączniku przesyłam specyfikację mikrokontrolera
  • REKLAMA
  • #7 9505379
    pawel_na_chwile
    Poziom 11  
    Problem udało mi się rozwiązać, okazało się że jednak był uszkodzony wyświetlacz, teraz mam trochę kłopotów z kodem bo pokazują się na dwóch pozycjach głupoty, na razie dziękuję za pomoc. Dodam że regulując kontrastem przy sprawnym wyświetlaczu, raz pojawiają się same kwadraty, następnym razem znikają, może ten objaw być przydatnym dla innych do wstępnego testu wyświetlaczy
  • REKLAMA
  • #8 9507869
    pawel_na_chwile
    Poziom 11  
    Problem z wyświetlaczem rozwiązany, uszkodzony był wyświetlacz, teraz mam inny problem, ale już z programem, a tu nie miejsce na rozwiązywanie programowych problemów, nie ten dział, dziękuję za pomoc
REKLAMA