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.

HD44780 + 89s52 + bascom. Testowanie wyświetlacza.

kubiaczek1982 18 Lut 2009 12:54 1844 11
  • #1 18 Lut 2009 12:54
    kubiaczek1982
    Poziom 11  

    Witam.

    Kolejny problem z wyświetlaczem LCD 2*16 (HD44780).

    Układ połączeń:
    1 - masa
    2 - +5
    3 potencjometr
    rs - p0.0
    R/W - masa
    E - p0.1
    D0-D3 - masa
    D4 - p0.2
    D5 - p0.3
    D6 - p0.4
    D7 - p0.5

    Programie bascom są odpowiednio w opcjach pozaznaczane porty, dodatkowo w programie configi porobione na porty, na mode=4.

    rozumiem że uruchomieniem LCD zajmuje sie komenda czyszczenie ekranu i ona też jest zaraz po ustawieniach (z odstępem wait 1). Dodatkowo ktoś z formumowiczów zamieścił własną komendę startującą i też wypróbowana. Próbowałem podciągania do masy i plusa (przy plusie miga "coś"). Zmieniałem rs i E na porty odpowiednio na p0.6 i p0.7, też nic.
    Wyświetlacz na starcie zapala 1 linie w kwadraty i chyba tak mu sie podoba.
    Przy dotykaniu palcem wyprowadzeń, czasem przy dotknięciu E zapalają sie wszystkie pola i później przy liniach przytykając jakieś znaczki po kolei na ekran wywala (z tąd chyba można wnioskować że moduł lcd jest sprawny).

    Co do samego uC to mam kwarca 12MHz (deklaracja w bascomie jak i w programie), do kwarca są kondziory 10pF i do masy. +5 jest także kondziorem z masą połączony. Długość przewodów do LCD nie przekracza 3cm. Całą resztę od procka odkleiłem obecnie. Sam uC jest sprawny, ponieważ podłączyłem do innego urządzenia z innym programem i działa.

    Może ktoś by mógł podesłać jakiś pliczek HEX z testem wyświetlacza na moich liniach. Na pewno by mi to ułatwi wsio.

    0 11
  • #2 18 Lut 2009 13:34
    Balu
    Poziom 38  

    A dałeś podciąganie na portach?:>

    0
  • #3 18 Lut 2009 15:13
    elektryk
    Poziom 42  

    kubiaczek1982 napisał:
    D0-D3 - masa
    A to cudo skąd wytrzasnąłeś? Według mnie to powoduje problemy.

    0
  • #4 18 Lut 2009 15:23
    kubiaczek1982
    Poziom 11  

    Podciąganie do plusa, do minusa, d0-d3 luzem, i do minusa. Już mi sie pomysły skończyły. Czy to możliwe żeby na p0 nie było można tego zrobić??

    0
  • #5 18 Lut 2009 16:09
    Balu
    Poziom 38  

    Zacytuję się sam...

    Cytat:

    A dałeś podciąganie na portach?:>


    Dodano po 1 [minuty]:

    Mówiąc dałeś, to czy dałeś podciąganie d4....d7 do plusa jak i RW/E/CD?

    0
  • #6 18 Lut 2009 16:26
    kubiaczek1982
    Poziom 11  

    podciąganie jest na wszystkim co nie ma połączenia z masą (pomijając zasilanie oczywiście) przez rezystory 4k3 (a może inna wartość potrzebna, w jakiejś nocie czytałem że może być pomiędzy 2k a 5k). Ale widzę że problem tkwi gdzie indziej. Mianowicie: pomiędzy każdą komendę dałem włączenie innego portu i wykryłem że klocek sie wiesza na Cls (przed tą komendą jeszcze jest sygnał a po niej już nie ma. W tej chwili kod wygląda następująco:

    Code:

    $regfile = "89s8252.dat"

          P2.0 = 1
          Waitms 200
          P2.0 = 0
    Rem
    Config Lcdpin = Pin , Db4 = P0.2 , Db5 = P0.3 , Db6 = P0.4 , Db7 = P0.5 , E = P0.7 , Rs = P0.6

          P2.0 = 1
          Waitms 200
          P2.0 = 0
    Config Lcd = 16 * 2
          P2.0 = 1
          Waitms 200
          P2.0 = 0
    $lcd = P0.7
          P2.0 = 1
          Waitms 200
          P2.0 = 0
    Config Lcdbus = 4
          P2.0 = 1
          Waitms 200
          P2.0 = 0
    Cls
          P2.0 = 1
          Waitms 200
          P2.0 = 0
    wait 1
    P0.5 = 0 : P0.4 = 0 : P0.3 = 1 : P0.2 = 0 : P0.6 = 0
    P0.7 = 1 : Waitms 1 : P0.7 = 0 : Waitms 1
    P0.5 = 0 : P0.4 = 0 : P0.3 = 0 : P0.2 = 0 : P0.6 = 0
    P0.7 = 1 : Waitms 1 : P0.7 = 0 : Waitms 1
          P2.0 = 1
          Waitms 200
          P2.0 = 0
    Locate 1 , 1
          P2.0 = 1
          Waitms 200
          P2.0 = 0
    wait 1
    Lcd "linia1"
          P2.0 = 1
          Waitms 200
          P2.0 = 0
    Wait 1
    Locate 2 , 3
          P2.0 = 1
          Waitms 200
          P2.0 = 0
    wait 1
    Lcd "linia2"
          P2.0 = 1
          Waitms 200
          P2.0 = 0


    dopisałem przed Cls komendę LCDinit i na niej sie zwiesił. Zaraz go nakrzyczę :cry:

    0
  • #7 18 Lut 2009 17:05
    Balu
    Poziom 38  

    No to chcesz lcdbus? czy lcdpin?

    Dodano po 15 [sekundy]:

    Wywal lcdbus.

    0
  • #8 18 Lut 2009 20:19
    kubiaczek1982
    Poziom 11  

    Chciałem zrobić komunikacje na d4-d7. Naczytałem sie tyle, że zaraz będę głupszy niż na początku i nic nie przynosi oczekiwanego skutku

    0
  • #9 18 Lut 2009 21:06
    Balu
    Poziom 38  

    No i tak masz zrobić. Zostaw WISZĄCE d0...d3.
    Podciągnij przez 4k7 d4...d7 do plusa, podobnie podciągnij E i RS(czy co tam jest w hd44780) przez 4k7!
    RW podłacz do masy.
    W Bascomie zostaw Config LCDPIN i wywal config lcd bus.
    Jak to nie działa => Sorrry. Coś skopałeś? (Kwarc, podłączenia, zwarcia?, procka?) COKOLWIEK!.

    0
  • #10 19 Lut 2009 12:34
    kubiaczek1982
    Poziom 11  

    Niestety tak też już miałem i się wieszał przy poleceniu cls (bez LCD też, przy zmianie pinów z LCD i bez też.

    Ale mam inny problem. Czy można wywalić jakoś standardowe procedury obsługi LCD z kompilacji?? Zrobiłem sobie swoje procedury na 8bit i wsio działa (d0-d7 do p2 e p0.6 rs p0.7). Tylko jest kwestia, że kompilator wywala ponad 4k pliku wynikowego hex i to by było na tyle. Skrócić się już nie da a jeszcze trochę kodu jest do wpisania. Dobrze by było też usunąć inne procedury takie jak rs czy rc5, które są mi całkowicie zbędne a zajmują miejsce.

    0
  • #11 19 Lut 2009 20:04
    adamwesola
    Poziom 24  

    Nie wiem o ile , ale na pewno hex będzie mniejszy jeśli połączysz :
    D0-D3 - wisi w powietrzy
    D4 - p0.4
    D5 - p0.5
    D6 - p0.6
    D7 - p0.7
    lub 8-bit sterowanie, będzie jeszcze mniejszy, albo całe sterowanie lcd w asemblerze.
    "waitms 200" (milisekund?) pomiędzy impulsem na lini E o wiele za duży.

    0
  • #12 21 Lut 2009 14:46
    kubiaczek1982
    Poziom 11  

    A jak zadeklarować które piny do całego sterowania?

    config lcdbus=8
    config lcd=16*2

    a co z pinami? config lcdpin wystarczy mimo ze tam są db3-cd7 +E i rs ??

    ---

    a tak przy okazji może ktoś zna odpowiedź na pytanie dlaczego mi na początku nie działało jak e i rs były podłączone do p0.0 i p0.1 a szyna do p0.2 - p0.5 ?? Wystarczyło mi zmienić e i rs na port 3

    0