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 odczytać dane z wyświetlacza JM12864C? Problemy z R/W i portami IO

Samuraj 13 Paź 2003 19:07 2733 6
REKLAMA
  • #1 360108
    Samuraj
    Poziom 35  
    Posty: 2792
    Pomógł: 286
    Ocena: 619
    Mam następujący problem z wyświetlaczem graficzny. Zapewne nie jest to związane z konkretnym typem (JM12864C), lecz z obsługą.
    Napisałem własne procedury obsługi wg pdf’a.
    Jeśli chodzi o wyświetlanie, adresowanie stron itp z tym nie mam problemu, ale procedury pisałem pomijają felg BUSY.
    Problem mam następujący nie mogę czytać wyświetlacza, mogę wysyłać do niego dane, ale nie mogę z niego nic odczytać. Próba odczytu statusu lub danych z wyświetlacza zawsze daje stan, w jakim zostawiłem port po ostatniej instrukcji.
    Dotychczas wyświetlając cokolwiek na displeyu nie martwiłem się, co na nim jest, w tym momencie potrzebuje te informacje do rysowania pojedynczych punktów, nie zamazując reszty.
    Schemat jest z pierwszej wersji gdzie R/W miałem zwarte do VCC, w tej chwili mam podpięte do PA4.
    Może mam problem z przełączaniem portu z wyjścia w wejście ???
    A może trzeba zastosować rezystory podciągające, ale do LCD ???
    Załączniki:
    • procedury.txt (677 Bajtów) Musisz być zalogowany, aby pobrać ten załącznik.
    • Jak odczytać dane z wyświetlacza JM12864C? Problemy z R/W i portami IO board.jpg (127 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #2 360124
    drops13
    Poziom 11  
    Posty: 8
    W jakim programie pisałeś program umożliwiający urochomienie LCD. Bo ja wraz z kumplami mamy JM12864a i za rzadną cenę nie morzemy wyświetlicz naim nawet napisu. Próbujemy zrobić to według instrukcji jaką posiadamy i tak i tak nie działa. Jak byś wiedział jak to zrobić odezwij się do dropsa13.
  • REKLAMA
  • #3 360148
    Samuraj
    Poziom 35  
    Posty: 2792
    Pomógł: 286
    Ocena: 619
    Mam ten sam wyświetlacz, co do sterowania nie mam najmniejszego problemu,gorzej jet z jego czytaniem.
    CodeVision
  • REKLAMA
  • #4 361506
    michalp33
    Poziom 12  
    Posty: 98
    Ocena: 2
    Witam, tego wyświetlacza nie znam ale sądząc po wyprowadzeniach jest podobny do tych na chipsecie ks0107 z którym nie mam żadnych problemów. Na 99% na złączu wyświetlacza oprócz sygnałow cs1,cs2,rs i enable powienien być rw który podłączyłeś na stałe (nie wiem w tym momencie czy do + czy do -) w każdym bądź razie musisz go zlokalizować i podpiąc do procesora i w zależności czy będziesz czytał czy zapisywał do lcd muszisz ustawiać tam odpowiedni stan.
  • #5 361656
    Samuraj
    Poziom 35  
    Posty: 2792
    Pomógł: 286
    Ocena: 619
    Jak zaznaczyłem RW jest na schemacie do Vcc (5 noga JP1) , aktualnie aby czytać z wyświetlacza podpiołem go do PA4. Trochę posiedziałem i moge juz czytac tyle nie otrzymuje tego co chce.
    Dla ułatwienia wpisałem do wyświetlacxa kolejne dane do wyświetlenia:
    06, 07, 08, 09. Ładnie wszytko sie wyświetliło ale jak czytam to robie tak
    kursor (czyli rejest Y) na początek (0) i czytam ale otrzymuje coś takiego:
    09, 06, 07, 08. I nie wiem co jest. Wygląda na to że nie ustawia na początek, tylko dopiero po odczytaniu pierwszej zmiennej.
    Wyświetlacz jest na KS107/108. Jak by ktoś miał sprawdzone procedury obsług to chętnie przyjme.
  • #6 361943
    Eagle
    Poziom 24  
    Posty: 536
    Pomógł: 57
    Ocena: 31
    Oto twój program



    void glcdControlWrite(const char command)
    //wysyła komendę do wyświetlacza
    {
    DDRD=0xFF; //port jako wyjście
    GLCD_RW=0;
    GLCD_RS=0;
    GLCD_DATA_OUT=command;
    GLCD_ENABLE=1;
    GLCD_CS1=1;
    GLCD_CS2=1;
    delay_us(5);
    GLCD_ENABLE=0;
    }

    char glcdControlRead(void)
    //czyta dane z wyświetlacza lewa połowa
    {
    char dane;

    DDRD=0x00; //port jako wejście
    GLCD_RW=1;
    GLCD_RS=1;
    GLCD_ENABLE=1;
    GLCD_CS1=1;
    GLCD_CS2=0;
    delay_us(5);
    dane=PINC;
    GLCD_ENABLE=0;
    return(dane);
    }


    Analizując twoje procedurki wygląda jasno !!!

    Ustawiasz port D jako wejscie
    Cytat:
    DDRD=0x00;//port jako wejście
    a następnie czytasz z portu C dane ?
    Cytat:
    dane=PINC;


    to chyba pewna niekonsekwencja!!!

    Interesujące że przy zapisie GLCD_CS2 = 1 a przy odczcie =0 ? to kolejna niekonsekwencja !!!
  • REKLAMA
  • #7 362439
    Samuraj
    Poziom 35  
    Posty: 2792
    Pomógł: 286
    Ocena: 619
    Rzeczywiście z tym portem to przesadziłem, ale to akurat zauważyłem wcześniej i poprawiłem, mimo to i tak nie chodzi jak powinno. Co do drugiej sugestii to sprawa wygląda następująco dlatego w glcdControlWrite jest glcd_cs1=1 i glcd_cs2=1 bo komendy zapisuje do obu stron wyświetlacza, a w glcdControlRead czytam tylko z jednej połowy.

Podsumowanie tematu

LABEL_AI_GENERATED
Dyskusja dotyczy problemów z odczytem danych z graficznego wyświetlacza JM12864C, szczególnie związanych z sygnałem R/W i konfiguracją portów IO. Autor napisał własne procedury sterowania wyświetlaczem, które poprawnie realizują zapis i adresowanie stron, jednak odczyt danych i statusu nie działa prawidłowo – odczytywany jest stan portu pozostawiony po ostatniej instrukcji, a nie aktualne dane z wyświetlacza. Początkowo sygnał R/W był na stałe podłączony do VCC, obecnie podłączony do portu PA4, co może wymagać odpowiedniego przełączania portu z wyjścia na wejście. W dyskusji zwrócono uwagę na konieczność prawidłowego sterowania sygnałem R/W oraz na poprawne ustawienie kierunku portów mikrokontrolera podczas odczytu i zapisu. Przykładowy kod pokazuje błędy w konfiguracji portów (np. ustawianie portu D jako wejścia, a odczyt z portu C) oraz różne stany sygnałów CS1 i CS2 podczas zapisu i odczytu, co jest uzasadnione ze względu na podział wyświetlacza na dwie połowy. Problem może także wymagać zastosowania rezystorów podciągających na liniach LCD. Wskazano, że wyświetlacz jest kompatybilny z chipsetem KS0107/KS0108, co może pomóc w znalezieniu sprawdzonych procedur obsługi.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA