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

AT8928253 + LCD 2 * 16. LCD nie chce nic przesłać.

pan_rob 04 Cze 2007 19:59 1262 5
REKLAMA
  • #1 3953488
    pan_rob
    Poziom 10  
    Posty: 21
    Witam mam taki problem..

    Do mikrokontrolera at89s8253 mam podłaczony LCD (2*16 zgodny z HD44780) poprzez port p2

    P2.0 - D7
    P2.1 - D6
    ..
    P2.7 - D0

    P0.1 - RS
    P0.0 - E
    P0.2 - R/W

    I problem polega na tym,że LCD nie chce mi nic przesłać i nawet sie zainicjalizować. Napisałem dla niego program wg EdW z różnymi delay'ami i ciągle to samo - w 1 wierszu same czarne kwadraty - błąd inicjalizacji. Nawet flaga Busy jest ciągle na "1". Podpiąłem rezystory pull-up do pinów P0.1 , P0.2, P0.0 - 1k miedzy pin a zasilanie - no i to samo. Połączenia sprawdzałem kilka razy .. wszystkie OK. Możliwe, że coś przeoczyłem w budowie mikrokontrolera..

    Za wszelkie odpowiedzi wielkie dzięki!!
  • REKLAMA
  • Pomocny post
    #2 3953550
    elektroziom
    Poziom 20  
    Posty: 337
    Pomógł: 40
    Ocena: 122
    Podłacz R/W na stałe do GND (minusa zasilania). W jakim języku piszesz?? pozdrawiam ;)
  • REKLAMA
  • #3 3954046
    pan_rob
    Poziom 10  
    Posty: 21
    Ok sprawdzę to, ale wydaje mi sie ze za wiele to nie da. Jednak jest to propozycja godna uwagi - no i w sumie o jedną nóżkę mniej do sterowania. A pisze w asemblerze..
  • REKLAMA
  • Pomocny post
    #4 3954171
    szod
    Poziom 33  
    Posty: 1663
    Pomógł: 215
    Ocena: 120
    Skoro piszesz w asemblerze to zwróć uwagę jak masz podłączone linie D0 - D7.
    Powinieneś sobie podłączyć D0 - P2.0 do D7 - P2.7
    Przy 4 bitach wystarczy D4 - P2.4 do D7 - P2.7
    Tak jak masz teraz, to jak podasz jakąś daną na port, to na liniach D0 - D7 będzie
    coś zupełnie innego niż chciałeś... No chyba że obrabiasz jeszcze te dane przed
    wysłaniem ale to niepotrzebna kombinacja programu i prościej to inaczej podłączyć.
  • REKLAMA
  • #5 3954513
    pan_rob
    Poziom 10  
    Posty: 21
    Na dane sterujące oczywiście wprowadzam poprawkę w programie.
  • #6 3955719
    pan_rob
    Poziom 10  
    Posty: 21
    Dzięki elektroziom i szod !! LCD zaczął działać !! Dokonałem przeróbki układu tak, żeby była zgodność miedzy pinami LCD i mikrokontrolera:
    D0 = P2.0 D1 = P2.1 itd.
    Zmieniłem
    RS - P3.5
    E - P3.4
    oraz RW "przyczepiłem" do masy. Dodatkowo w programie uaktywniłem timery jako zliczające wewnętrzny zegar ze względu na to, ze P3.5 i P3.4 to opowiednio nóżki timer'ów T0 i T1 do zliczania zewnętrznych impulsów
    SETB EA
    MOV A,#00010001B
    MOV TMOD,A

    No i działa. To tyle na ten temat.
REKLAMA