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.

[AtMega32][Bascom] - Nie działa LCD Alfanumeryczny

micmys 20 Sty 2013 17:05 2331 8
  • #1 20 Sty 2013 17:05
    micmys
    Poziom 8  

    Witam Szanownych forumowiczów.
    Jakiś czas temu postanowiłem zbudować sobie stację meteo. Miała ona posiadać wyświetlacz LCD 20x4, pomiar temperatury wewnętrznej, zewnętrznej temperatury, wilgotności i prędkości wiatru (czujnik bezprzewodowy) oraz ciśnienia. Miała ona także pozwalać na zapis danych na kartę SD.
    Przystąpiłem więc do budowy. Zaprojektowałem i wykonałem płytkę, zakupiłem i wlutowałem elementy (na razie do samej stacji bez czujnika), a następnie przystąpiłem do pierwszych testów. I tu pojawił się problem.
    A mianowicie, procesor nie chce współpracować z wyświetlaczem LCD. Gdy włączam układ, na wyświetlaczu albo nie pojawia się nic, albo zaczynają po nim latać krzaki. Czasami, lecz bardzo rzadko, wyświetlacz zaczyna sam z siebie działać poprawnie i działa przez jakiś czas (również po wyłączeniu i ponownym włączeniu zasilania układu), by potem ponownie się "zakrzaczyć". Dodam, że w tym czasie procesor steruje jasnością podświetlenia ekranu przy użyciu trybu PWM w timerze 0 i to działa zawsze i bezbłędnie - zmienia jasność co określony czas, niezależnie od tego, czy LCD działa, czy nie. Podczas rzadkich sytuacji,w których LCD działał, próbowałem testować działanie czujnika temperatury DS18B20 i niestety, ani razu nie udało mi się go uruchomić - zawsze pokazywał temperaturę jako 0. Również próba odbioru danych bezprzewodowo przy użyciu odbiornika RRFQ1 od nadajnika RTFQ2 się nie powiodła (układ odbierał przypadkowe liczby, prawdopodobnie śmieci na 433,92MHz), pomimo, że ta para nadajnik-odbiornik działała mi wcześniej na płytce testowej. Dodam, że wyświetlacz jest na 100% sprawny - działał bezproblemowo z płytką testową.
    Moim zdaniem, za te problemy odpowiedzialne są jakieś zakłócenia uniemożliwiające łączność procesora z innymi podzespołami lub błędne działanie samego procesora. Kilkakrotnie sprawdzałem połączenie LCD z płytką (12-to żyłowa, 10-cio centymetrowa taśma), wylutowałem czujnik HP02S i moduł RRFQ1, zmieniłem kwarc 16MHz na inny 12MHz (próbowałem również z wbudowanym oscylatorem). Nic z tego nie pomogło. W załączniku dołączam schemat, projekt płytki oraz zdjęcia układu (z góry przepraszam za fatalną jakośc schematu, dopiero się uczę).
    P.S. Złącze oznaczone jako DCF to złącze do podłączenia modułu DCF77.
    Link do strony z opisem LCD: Link

    0 8
  • #2 20 Sty 2013 17:21
    BlueDraco
    Specjalista - Mikrokontrolery

    Zacznij od narysowania schematu tak, żeby dało się z niego coś odczytać - zgodnie z zaleceniami opisanymi tu na forum. Potem można zacząć przyglądać się oprogramowaniu.

    0
  • #3 20 Sty 2013 18:37
    netotron
    Poziom 26  

    Witam
    Wyświetlacz LCD 4x20 pracuje 4-bitowo DB4-DB7, co robisz z DB0-DB3?

    0
  • #4 20 Sty 2013 19:03
    micmys
    Poziom 8  

    Schemat poprawiony.
    DB0-DB3 nie są podłączone, wiszą w powietrzu. Do komunikacji używam DB4-DB7, RS, Enable i R/W podłączony na stałe do masy.
    Co do programu, to tutaj nie ma raczej problemu, bo wyświetlacz testuje, używając najprostszych polecenia

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    0
  • #5 22 Sty 2013 11:29
    BlueDraco
    Specjalista - Mikrokontrolery

    Na początek usuń grzałki R6..R11, bo znacznie obciążają one procesor. Wyświetlacz może być po prostu źle (niepewnie) podłączony, może też być problem z jego inicjowaniem - procedura inicjująca ma zależności czasowe, które zależą od częstotliwości procesora. nie wiem, jak to jest zrobione w samograju pt. Bascom.

    Schemat nie pokazuje przypisania linii wyświetlacza. Trudno stwierdzić, czy jest on poprawny - używaj nazw sygnałów w symbolach elementów, lub przynajmniej jako etykiet połączeń.

    0
  • #6 22 Sty 2013 15:45
    micmys
    Poziom 8  

    Usunąłem R6...R11, ale to nic nie pomogło.
    Co do wyświetlacza, to podłączenia od góry to:
    GND
    VCC
    Kontrast
    Rs
    R/W
    Enable
    DB4
    DB5
    DB6
    Db7
    + podświetlenia
    - podświetlenia

    0
  • #7 22 Sty 2013 18:50
    yokoon
    Poziom 28  

    micmys napisał:
    Schemat poprawiony.
    DB0-DB3 nie są podłączone, wiszą w powietrzu. Do komunikacji używam DB4-DB7, RS, Enable i R/W podłączony na stałe do masy.
    Co do programu, to tutaj nie ma raczej problemu, bo wyświetlacz testuje, używając najprostszych polecenia
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Ten programik użyj w pętli Do .... Loop.

    0
  • #8 22 Sty 2013 20:38
    micmys
    Poziom 8  

    Też nic nie daje.
    Testowałem z takim programem, zmieniającym dodatkowo jasność co określony czas:

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    Jasność zmienia się jak trzeba i kiedy trzeba, ale wyświetlacz nie działa :-(

    0
  • #9 27 Sty 2013 10:11
    micmys
    Poziom 8  

    Problem rozwiązany.
    Wystarczyło zrobić nowy przewód LCD - układ i już działa. W starym było prawdopodobnie jakieś przerwanie.
    Natomiast za problem z DS18B20 odpowiedzialny był brak rezystora podciągającego linię Data do plusa zasilania.

    0