Pozwolę sobie nieco odgrzać temat. Podobnie jak Autor wątku natknąłem się w sieci na stronę radzio.dxp.pl w poszukiwaniu bibliotek do obsługi wyświetlacza z KS0108 - bo po co odkrywać koło na nowo jeśli inni już to zrobili.
Mój wyświetlacz też nie chciał działać. Dziesiątki prób, sprawdzanie poprawności podłączenia i ciągle nic. Nagle po dotknięciu palcem pinu 7 magistrali pokazał się długo oczekiwany obraz, mocno zakłócony ale zawsze coś. Początkowo podejrzewałem uszkodzenie wyświetlacza, bo pochodził z odzysku (pływał przez kilka dni pod wodą w okolicach Sandomierza) a podczas pierwszych prób przetrwał odwrotne podłączenie zasilania ale w końcu okazał się całkowicie sprawny. Nie uniknąłem straty czasu na przekopywania dokumentacji wyświetlacza i stodiowania funkcji sterujących z radzio.dxp.pl.
Niestety funkcja "void lcdWait(void)" ma poważny błąd. Dokonuje ona odczytu magistali wyświetlacza po tym, jak procesor wystawia stan niski na EN. W tym miejscu program zawsze się zatrzymywał, bo mimo iż wyświetlacz odpowiadał po DB7, że jest gotów, to informacja trafiała w próżnię. Stan logiczny L na wejściu KS0108 wymusza przejście magistrali w stan wysokiej impedancji. W tym miejscu wyjaśniły się czary po dotknięciu palcem DB7 - ładunek tej szyny został rozładowany i procesor mógł poprawnie odczytać gotowość wyświetlacza. Rozwiązanie tego problemu nie jest specjalnie trudne, wystarczy nieco zmodyfikować funkcję:
Zaloguj się, aby zobaczyć kod
Po w/w modyfkacji wyświetlacz działa stabilnie ale żeby nie było zbyt łatwo, ujawniły się kolejne błędy obsługi. Podczas próby użycia funkcji "lcdSetPixel", w efekcie której włączane były wszystkie piksele w obrębie sterownika. Ostatnia kolumna miała zapalony tylko co 8-my piksel. Problem też udało się rozwiązać, choć trwało to znacznie dłużej, niż w pierwszym przypadku. Mogę opisać rozwiązanie o ile znajdzie się ktoś potrzebujący takich informacji.