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.

Wyświetlacz LCD 2*16 i Bascom

Piotrek.pxf 16 Paź 2005 17:08 2735 19
  • #1 16 Paź 2005 17:08
    Piotrek.pxf
    Poziom 27  

    Witam!

    Chciałem ostatnio nauczyć się obsługi wyświetlacza alfanumerycznego LCD za pomocą procka AVR (ATmega8). Kupiłem sobie taki wyświetlacz zgodny z Hitachi.
    Zrobiłem układ testowy (taki jak na załączonym schemacie). Zasilanie dałem ok. 5V. Kod napisałem w Bascomie (na początek to jest chyba najprostsze). Wszystko zrobiłem według opisu z Bascom Help.

    Wszystko jest pięknie, ale po włączeniu na wyświetlaczu nic nie widać. Świeci się tylko podświetlenie. Nie wyświetlają się żadne znaki. Gdzie zrobiłem błąd? Czy może mi ktoś powiedzieć, dlaczego to nie działa?


    Code:
     $lib "lcd4.lbx"
    
    $crystal = 4000000
    Config Portb = Output
    Config Lcd = 16 * 2

     Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.4 , Rs = Portb.5

    Cls

      Lcd "Piotrek_PxF"

    End

    0 19
  • #2 16 Paź 2005 17:59
    McRancor
    VIP Zasłużony dla elektroda

    A może poszukasz na forum? Przecież to już było tyle razy, że na pewno znajdziesz rozwiązanie tego problemu.

    0
  • #3 16 Paź 2005 18:08
    Piotrek.pxf
    Poziom 27  

    Chodzi o to, że nie mogę znaleźć odpowiedzi. Przepatrzyłem większość z tematów o LCD i Bascom. Zrobiłem wszysto tak "podręcznikowo", a nie działa. Czy może ktoś dać linki, jeśli temat był już na forum?

    0
  • Pomocny post
    #4 16 Paź 2005 19:07
    Samuraj
    Poziom 35  

    Nie podałes symbolu wyświetlacza.
    Niektóre potrzebują ujemnego napięcia dla kontrastu, natomiast jeszcze inne mają zamienione + z - np. WM-C1602
    A i jeszcze jedno napisałes ze dałes ok.5V - mało to precyzyjne.
    No i ten reset na schemacie mi się nie podoba, ja bym to podpioł do +5V przez rezystor 10kΩ.
    Napisz czy udało ci się prawidłowo zaprogramowac procesor, czy weryfikacja przebiegła prawidłowo.
    Razasumując za mało danych. Napisz coś więcej to będziemy kombinowac.

    0
  • #5 16 Paź 2005 19:31
    Piotrek.pxf
    Poziom 27  

    Wyświetlacz kupiłem na tej aukcji:
    http://www.allegro.pl/show_item.php?item=65271185

    Na jest naklejka: HMC 1622SY-PY

    Nie jest to na chipie tylko taka czarna "kupa". Nie pisze nic na płytce więcej.
    Zrobiłem zgodnie z opisem jaki jest w tej aukcji (są tam opisu wyprowadzeń).

    Zasilam to z zasilacza stabilizowanego 4,5V (nie symetryczny). Procek chodzi przy tym zasilaniu. Na wyświetlaczu nie widać żeby ruszał (jak jest włączony to zarys ciekłych kryształów widać pod kątem).
    Próbowałem to z kilkoma prockami (jeden całkiem nowy) i na żadnym nie rusza. Wszystkie połączenia w układzie sprawdzałem kilka razy.
    Może coś ominąłem w programie, bo ten Help z Bascoma jest dziwny? Czy napewno RW trzeba dać do masy? Mam skany z książki, gdzie ten RW jest używany do wydawania poleceń (czyszczenie, wgrywanie fontów i takie tam).

    0
  • #6 16 Paź 2005 20:33
    dzik84
    Poziom 17  

    RW do masy
    spr procek czy jest ok (miganie ledem :)
    lcd bez sygnałów (czyli z samym zasilaniem) sterowania powinien zapalić jedną linijke tekstu (wszystkie punkty)
    może ten lcd jest walnięty, ja polecam lcd od kolesia z allegro Mirtek
    kupiłem już u niego kilka lcd i wszystkie są ok (nówki i bardzo tanio)

    0
  • Pomocny post
    #7 16 Paź 2005 21:10
    Bonmis
    Poziom 21  

    Moim zdaniem nie zadeklarowałeś proca w programie czyli:

    $regfile = "m8def.dat"

    Ale mogę się mylić bo jestem początkujący w tym temacie :D

    Bonmis

    0
  • #8 16 Paź 2005 21:37
    ggrunge
    Poziom 17  

    RW mogloby byc do masy jesli transmisja bylaby 8-mio bitowa, z tego co wiem przy 4 liniach danych RW jest uzywane do sprawdzania flagi zajetosci lini danych.

    Mam ten sam wyswietlacz i dziala bez problemu. Steruje go 8-mioma liniami. Pin 1 do GND, Pin2 tez do GND, Pin3 do +5V. Linie danych mam na jednym porcie, a linie sterujacych na drugim.

    Nie znam sie na bascomie, ale czy w bascomie nie ma moze jeszcze jakiejs procedury, ktora wlancza wyswietlacz?

    Pozdrawiam,
    Michal

    0
  • #9 16 Paź 2005 21:54
    Piotrek.pxf
    Poziom 27  

    Witam ponownie!

    Znalazłem już pierwszego winowajcę - jest nim potencjometr do redulacji kontrastu (pochodził z demontarzu i dawał za duży opór). Wymieniłem go na nowy i przy ustawieniu na największy kontrast świeci się cała górna linijka. Po regulacji widać pojedyncze znaki.
    Przy włączaniu niektóre znaki są całe zamalowane (wszystkie piskale), a niektóre są "pomazane". Po chwili się zmienia i staje w miejscu. Ogółem nie wyświetlają się żadne normalne napisy.

    W helpie Bascoma było napisane, że linia RW ma być podłączona do masy nawet przy 4-bitowej szynie danych.

    Ustawienia procka (model itd.) zdeklarowałem w ustawieniach Bascoma. Tam też można deklarować ustawienia pinów wyświetlacza LCD - ale nie ma linii RW.

    0
  • Pomocny post
    #10 16 Paź 2005 22:11
    dzik84
    Poziom 17  

    Ztego co wiem to RW to ReadWrite
    I zwieramy to do masy bo chcemy tylko zapisywać dane do lcd
    A RS i E plus szyna danych (4 lub 8 bitów) zawsze podłączamy

    0
  • #11 16 Paź 2005 22:31
    ggrunge
    Poziom 17  

    Z noty HD44780 wynika ze RW trzeba ustawic na 1 w momencie sprawdzania zajetosci. Wiec uzywa sie go nie tylko do okreslania zapisu/odczytu.

    Wyświetlacz LCD 2*16 i Bascom

    Sproboj jeszcze 8mioma liniami go podlaczyc.

    0
  • Pomocny post
    #12 16 Paź 2005 22:32
    marcinkwa
    Poziom 14  

    Code:

    $regfile = "m8def.DAT"
    $crystal = 4000000

    Config Lcdmode = Port
    Config Lcd = 16 * 2
    Config Lcdbus = 4

    Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.4 , Rs = Portb.5

    do
    lcd " CGYYICG"
    loop
    end.


    i cz napewno procek chodzi na zewnętrznym kwarcu, może chodzi na wewnętrznym zegarze 1Mhz. Zmień $crystal = 4000000 na 1000000 i zobacz. RW na stałe do masy (to BASCOM).

    pozdr.
    -=Marcin=-

    0
  • #13 16 Paź 2005 22:44
    hunterhouse
    Poziom 26  

    ja bym jeszcze d0-d3 podpioł do masy.
    nie zaszkodzi a moze to o to chodzi.

    0
  • #14 16 Paź 2005 23:22
    Piotrek.pxf
    Poziom 27  

    Wykorzystałem kod, który podał marcinkwa i działa!

    Chyba błędem było nie podanie Lcdbus oraz Lcdmode.

    Nie wiem czy można Portb dać na Outport? Bo ja nie dałem, ale chcę jeszcze sterować podświetleniem (włączenie/wyłączenie) - podepnę to pod pin 6 z Portb.

    0
  • Pomocny post
    #15 17 Paź 2005 08:22
    hunterhouse
    Poziom 26  

    hunterhouse napisał:
    ja bym jeszcze d0-d3 podpioł do masy.
    nie zaszkodzi a moze to o to chodzi.


    chodziło mi o piny wyświetlacza żeby było jasne

    0
  • #16 17 Paź 2005 11:31
    marcinkwa
    Poziom 14  

    Piotrek.pxf napisał:

    Nie wiem czy można Portb dać na Outport? Bo ja nie dałem, ale chcę jeszcze sterować podświetleniem (włączenie/wyłączenie) - podepnę to pod pin 6 z Portb.


    W Bascomie nie musisz deklarować całego portu, wolne piny (te których nie ma w LCDCONFIG) możesz zadelarować dowolnie (część jako uotput, część jako input).

    Pozdr.
    -=Marcin=-

    0
  • #17 17 Paź 2005 12:04
    Piotrek.pxf
    Poziom 27  

    Wyświetlacz już śmiga :)

    hunterhouse napisał:
    chodziło mi o piny wyświetlacza żeby było jasne


    No to to wiadomo. Zawsze lepiej tam, gdzie ma być stan niski podać ten stan, niż zostawić go "nieustalonym".

    Dziękuję za pomoc.
    Temat już jest chyba off-topic - do zamknięcia.

    0
  • #18 17 Paź 2005 23:57
    Bonmis
    Poziom 21  

    To ja się tu podłączę. Również walczę z wyświetlaczem, odpaliłem go w trybie 4-bitowym ale nie chce mi ruszyć w trybie 8-bit. Co robię źle?

    Listing tryb 4-bit

    Code:

    $regfile = "8515def.dat"
    $crystal = 3579545

    Config Pinc.6 = Output
    Reset Portc.6

    Config Pina.0 = Output
    Config Pina.1 = Output
    Config Pina.2 = Output
    Config Pina.3 = Output
    Reset Porta.0
    Reset Porta.1
    Reset Porta.2
    Reset Porta.3

    Wait 1

    Config Lcdmode = Port
    Config Lcd = 16 * 2
    Config Lcdbus = 4
    Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Portc.7 , Rs = Portc.5

    Config Pinb.1 = Output
    Reset Portb.1

    Initlcd
    Waitms 100
    Set Portb.1
    Do
       Cls
       Waitms 500
       Cursor Off
       Upperline
       Lcd " ***Bascom*** "
       Waitms 500

    Loop
    End


    Listing tryb 8-bit

    Code:

    $regfile = "8515def.dat"
    $crystal = 3579545

    Config Pinc.6 = Output
    Reset Portc.6

    Config Lcdmode = Port
    Config Lcd = 16 * 2
    Config Lcdbus = 8
    Config Lcdpin = Pin , Port = Porta , E = Portc.7 , Rs = Portc.5

    Config Pinb.1 = Output
    Reset Portb.1

    Initlcd
    Waitms 100
    Set Portb.1
    Do

       Cls
       Waitms 500
       Cursor Off
       Upperline
       Lcd " ***Bascom*** "
       Waitms 500
    Loop
    End


    Bonmis

    0
  • #19 18 Paź 2005 08:02
    hunterhouse
    Poziom 26  

    nigdy nie robiłem wyświetlacza w trybie 8 bitowym bo to było niepotrzebne skoro 4bitiwe też działa. ale program wygląda sensowne.
    może coś ze schematem jest nie tak ???

    0
  • #20 18 Paź 2005 08:14
    Bonmis
    Poziom 21  

    Schemat podłączeń na pewno OK. Dochodzą tylko 4 przewody D0-D3 podłączone do młodszych pinów portu a czyli a.0 do a.3

    Bonmis

    0