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

[asm]Atmega128, obsługa LCD

Lysoleq 13 Sie 2008 19:28 2708 5
REKLAMA
  • #1 5436186
    Lysoleq
    Poziom 17  
    Witam. Zwracam się z prośbą o pomoc do bardziej doświadczonych kolegów. Od kilku dni próbuję uruchomić wyświetlacz LCD w trybie 8 bitowym korzystając do tego z mikrokontrolera ATMEGA128 taktowanym kwarcem 16MHz. Jak do tej pory nie udało mi się uruchomićwyświetlacza i nie bardzo wiem gdzie popełniłem błąd. Proszę o rzucenie okiem na poniższe materiały pomoc w rozpracowaniu problemu.

    Nota katalogowa wyświetlacza HY-1602F:
    http://www.eleparts.co.kr/epdf/others/HY-1602F.pdf

    Dodatkowo załączam:
    - schemat połączenia LCD i ATMEGA128
    - kod programu który napisałem

    Bardzo zależy mi na znalezieniu błędu w tym programie.
  • REKLAMA
  • Pomocny post
    #2 5436597
    BoskiDialer
    Poziom 34  
    1/ Zamieszane są te bity od szyny danych, w kodzie wcale nie umieszczasz bitów na swoje miejsca (w ZAPISZ_LCD bit źródłowy i docelowy są sygnalizowane tą samą stałą, więc w efekcie bajt leci na opak)
    2/ Strasznie zagmatwany kod - wcięcia na różnych poziomach, zbędne (według mnie) odkładanie rejestrów na początku funkcji. Inicjalizację przecież można wrzucić bezpośrednio do kodu wykonywanego po resecie. Załączenie przerwań wyrzuć z pętli głównej - wystarczy raz załączyć (chociaż i tak z nich nie korzystasz)
    3/ W stanie jałowym na E powinien panować stan wysoki, dane są wpisywane zaraz na zboczu opadającym, tak więc przy inicjalizacji ustawiasz na E stan wysoki, przy zapisie wystawiasz dane czekasz parę cykli, ustawiasz niski na E, parenaście cykli i znów wysoki na E.
    4/ zrezygnuj z operowania na bitach rejestrów IO na korzyść operacji całymi bajtami.
    5/ Inicjalizacja wyświetlacza jest jakaś dziwna. Na samym początku musisz wpisać 0x30 3 razy w odstępach 5ms. Dalej kod jest dla mnie nie czytelny...
    6/ nie musisz zerować rejestru, jeśli zaraz w następnej instrukcji wpisujesz do niego jakąś wartość.
  • REKLAMA
  • Pomocny post
    #3 5437094
    adamwesola
    Poziom 24  
    Czesc , oto moj sposob na LCD, napisany wprawdzie na PIC-e ale z pewnoscia posluzy Ci jako przyklad i latwo go przerobisz na avr.
    Linie R/W mam podlaczona do masy i nie sprawdzam znacznika BF(w wyswietlaczu) , jesli trzeba daj stale opoznienie, jak widze u Ciebie jest dolaczona do procka lecz nie zauwazylem by program sprawdzal gotowosc wyswietlacza.
  • REKLAMA
  • #4 5441370
    Lysoleq
    Poziom 17  
    Napisałem nowy program do inicjalizacji, korzystając z rad które mi daliście. Postarałem się aby był czytelny co może pozwoli mi uzyskać odpowiedź czemu wyświetlacz dalej nie działa. Bardzo proszę o pomoc! Rozwiązuje już ten probem od kilku dni i nie wiem już gdzie szukać. Sprawdziłem wszystkie połączenia, zasilanie, napisałem kilka programów i nic :/
  • REKLAMA
  • #6 5442555
    Lysoleq
    Poziom 17  
    Nie twierdze że jestem biegły w assemblerze. Próbuje uruchomić wyświetlacz i nie wychodzi mi to najlepiej. Nie proszę o pochwały tylko o wytknięcie mi błędów, więc jeżeli jakiś widzisz to prosze powiedz mi o tym i miło by było gdyby dołączone do niego było jakieś wytłumaczenie dlaczego.

    Rozwiązałem problem :) okazały się nim czasy trwania poszczególnych impulsów, na co wcześniej nie zwróciłem uwagi. Dziękuje wszystkim za zainteresowanie moim problemem.
REKLAMA