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

[Atmega8+LCD2x16][Bascom] Obsługa LCD 2x16

skater156 23 Cze 2009 11:40 14981 23
REKLAMA
  • #1 6692107
    skater156
    Poziom 14  
    Witam, niedawno zakupiłem sobie wyświetlacz LCD2x16.Znalazłem na elektrodzie taki schemat:
    [Atmega8+LCD2x16][Bascom] Obsługa LCD 2x16

    Teraz mam kilka pytań:
    1.Czy program poniżej do wyświetlania jakiegoś napisu jest dobry?
    
    $regfile = "m8def.dat"
    $crystal = 8000000
    Dim A As Byte
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portb.3 , Db5 = Portb.2 , Db6 = Portb.1 , Db7 = Portb.0 , E = Portb.6 , Rs = Portb.7
    Cls
    Lcd "Hello world."
    Wait 1
    Lcd Chr(0) ; Chr(1)
    _temp1 = 1
    !rCall _write_lcd
    End


    2.Po co jest ten potencjometr przy LCD?
    3.Czy można dać 22pf zamiast 27pf?
    4.Do czego są wyjścia w LCD L- i L+?

    Za wszystkie odpowiedzi dzięki:)
  • REKLAMA
  • #2 6692203
    kuuczoo
    Poziom 26  
    1. Program jest zły - nie ta konfiguracja pinów. Zajrzyj do schematu, potem do pomocy bascomu i "lcd config".
    2. Potencjometr jest do regulacji kontrastu wyświetlacza
    3 tak 22p może być (wg datasheeta powinno)
    4. L+ i L- to wejścia do podłączenia np 5V dla podświetlania wyswietlacza (jeśli posiada)
  • #3 6692214
    PIOTOM0
    Poziom 20  
    Teraz mam kilka pytań:
    hej
    1.Czy program poniżej do wyświetlania jakiegoś napisu jest dobry?
    
    $regfile = "m8def.dat" 
    $crystal = 8000000 
    Dim A As Byte 
    Config Lcd = 16 * 2 
    Config Lcdpin = Pin , Db4 = Portb.3 , Db5 = Portb.2 , Db6 = Portb.1 , Db7 = Portb.0 , E = Portb.6 , Rs = Portb.7 
    
    Cls 
    Lcd "Hello world." 
    Wait 1 
    End 



    Teraz powinien być ok.
    Dla tego układu na schemacie musisz zmienić konfigurację pinów wejściowych do wyświetlacza.

    2. Potencjometr jest do ustalenia kontrastu wyświetlacza - ważny, bez niego nie ustalisz kontrastu. W docelowym układzie można go zastąpić dzielnikiem napięcia.

    3. można zamienić
    4. Podświetlenie wyświetlacza - folia z tyłu matrycy lcd

    Pozdrawiam
    Piotom0
  • REKLAMA
  • #4 6692272
    yokoon
    Poziom 29  
    Witam.
    Na schemacie sterowanie LCD jest z portu C, więc nie wiem czemu podajecie port B.
  • #5 6692575
    skater156
    Poziom 14  
    Dzięki za odpowiedzi, ale sie pogubiłem:)
    Jak konkretnie mam skonfigurować te porty?
    Czy jeszcze coś trzeba zmienić w kodzie?
  • #6 6692731
    dawid512
    Poziom 32  
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 
  • #7 6692783
    skater156
    Poziom 14  
    Czy program poniżej nie ma już żadnych błędów?
    Czy trzeba zmieniać fuse bit?
    
    $regfile = "m8def.dat" 
    $crystal = 8000000 
    Dim A As Byte 
    Config Lcd = 16 * 2 
    Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5  
    Cls 
    Lcd "Hello world." 
    Wait 1 
    End 


    Dodano po 12 [minuty]:

    Czy ten potencjometr trzeba dawać?
  • #8 6692844
    snow
    Poziom 31  
    Ja zawsze zwieram VEE do masy. Poza tym wgraj program do procesora i zobaczysz czy kod jest poprawny. Jak nie zmieniałeś fusebit to $crystal=1000000
  • #9 6695683
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #10 6700068
    rpal
    Poziom 27  
    Jedna rada o której nie napisano. Kiedy kupisz już sobie LCD zwróć uwagę na konkretny typ aby nie popełnić tego co mi się przydarzyło. Milcząco założyłem że ma zgodne ze standardem wyprowadzenia a okazało się że jednak ktoś dla jaj (LCD było dość niestandadowe ale bardzo duże i dość tanie) pozamieniał zasilanie więc najpierw popatrz w notę katalogową czy jest on zgodny z ogólnie przyjętymi standardami.
  • REKLAMA
  • #11 6700814
    *zaba*
    Poziom 13  
    Powiem jedno ja podłączałem z tej strony i wszystko okey
    Link
  • #12 6713670
    skater156
    Poziom 14  
    Czyli to podłączenie będzie dobre?
    [Atmega8+LCD2x16][Bascom] Obsługa LCD 2x16
    Czy jak nie dam potencjometru to:
    VSS do GND?
    VVC do Plusa?
    VVE do GND?

    Czyli D0;D1;D2:D3 nie musze dawać do GND?
  • #13 6713694
    dawid512
    Poziom 32  
    Potencjometr daj lub dobierz odpowiedni rezystor. Linii D0-D3 nie musisz spinać z masą. Połączenie jak najbardziej poprawne.
  • #14 6714769
    skater156
    Poziom 14  
    Dzięki za odpowiedz, ale jak nie dam tego potencjometru to co sie stanie?
    Jeżeli trzeba dać ten potencjometr lub opornik to jakiej muszą być wartości?
  • #15 6714988
    kuuczoo
    Poziom 26  
    Musisz je dobrać doświadczalnie do swojego wyświetlacza. Tak jak koledzy pisali wcześniej napięcie potrzebne do dobrego kontrastu z reguły jest w okolicach 0. Możesz na początek dać dzielnik z rezystorów 10k i 1k (10k do Vcc, 1k do masy), a potem ewentualnie zmniejszyć lub zwiększyć w razie potrzeby ten opornik 1k.
  • #16 6715221
    skater156
    Poziom 14  
    A jak nie dam tych oporników to co sie stanie?
  • #17 6715300
    dawid512
    Poziom 32  
    skater156 napisał:
    A jak nie dam tych oporników to co sie stanie?


    Możesz nic nie zobaczyć bo kontrast będzie nieodpowiedni ale to zależy od wyświetlacza. Dla świętego spokoju daj potencjometr 10k.
  • #18 6715536
    skater156
    Poziom 14  
    Czy od L- i L+ trzeba dać opornik 10k?
    Gdzie to L- i L+ podłączyć
    Na wyświetlaczu mam + i - do podłączenia, czy to wystarczy by zasilić go(jakie napięcie musze dać LCD 2x16)
  • #19 6715872
    dawid512
    Poziom 32  
    L+ i L- to podświetlanie w zależności od wyświetlacza możesz dać bezpośrednio do 5V ale lepiej dobrać rezystor. Wyświetlacz zasilasz takim samym napięciem co uc czyli 5V.
  • #20 6716678
    skater156
    Poziom 14  
    Czy uc i LCD mogę zasilić z jednego tarafa?
    Ale gdzie te L- i L+ podłączyć?

    Dodano po 2 [minuty]:

    Czy ten kod jest dobry?
    
    $regfile = "m8def.dat" 
    $crystal = 8000000 
    Dim A As Byte 
    Config Lcd = 16 * 2 
    Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 
    Lcd "Hello world." 
    End


    do tego schematu?
    [Atmega8+LCD2x16][Bascom] Obsługa LCD 2x16
  • #21 6717085
    dawid512
    Poziom 32  
    Możesz ale nie bezpośrednio z trafa tylko ze stabilizatora 7805. Jak chcesz mieć podświetlanie do lcd to L+ podlacz do 5V a L- przez rezystor(np. taki jak na schemacie) do gnd(masy). Program:
    
    $regfile = "m8def.dat"
    $crystal = 1000000
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5
    cls
    Lcd "Hello world."
    End 
  • #22 6742425
    skater156
    Poziom 14  
    Witam :)
    Na wstępie dziękuje wszystkim za pomoc.Odpaliłem LCD, i nawet działa :D
    Teraz zamierzam zrobić sobie termometr na LCD z DS18b20.Tutaj zaczynają sie schody.Napisałem program(zlepek różnych).
    Skorzystałem z tego schematu:
    [Atmega8+LCD2x16][Bascom] Obsługa LCD 2x16
    DS18b20 dodałem do nóżki Atmegi 8 do PD5.Program ma działać tak że, po włączeniu LCD temperatura wyświetli mi sie na środku LCD pierwszej linijki.
    Program wygląda tak:
    
    $regfile = "m8def.dat"
    $crystal = 1000000
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5
    Config 1wire = Portb.0
    Declare Sub Odcz_temp
    Dim Temperatura(2) As Byte
    Deflcdchar 0 , 7 , 5 , 7 , 32 , 32 , 32 , 32 , 32
    Do
    Cursor Off
    Call Odcz_temp
    Cls
    If Temperatura(2) = 0 Then
    Lcd "Temp: " ; Temperatura(1) ; Chr(0) ; "C"
    Else
    Lcd "Temp: -" ; Temperatura(1) ; Chr(0) ; "C"
    End If
    Loop
    End
    Sub Odcz_temp
    1wreset
    1wwrite &HCC
    1wwrite &H44
    Waitms 750
    1wreset
    1wwrite &HCC
    1wwrite &HBE
    Temperatura(1) = 1wread(2)
    1wreset
    If Err = 1 Then
    Cls
    Lcd "Brak ukladu"
    Do
    Loop
    End If
    If Temperatura(2) > 0 Then
    Temperatura(1) = 256 - Temperatura(1)
    End If
    Temperatura(1) = Temperatura(1) / 2
    End Sub

    Czy napisany program jest dobry?

    Dodano po 1 [godziny] 33 [minuty]:

    Przepraszam za pomyłkę, DS18b20 jest podłączony do PB0.Zaprogramowałem Atmege8 tym programem powyżej i nie działa.
    Bardzo proszę o pomoc.
  • #23 6743858
    kuuczoo
    Poziom 26  
    Co oznacza nie działa? Przede wszystkim w programie nie masz inicjacji LCD (polecenie CLS).
  • #24 6744762
    skater156
    Poziom 14  
    Dzięki za wszystkie odpowiedzi już sobie poradziłem.
    Temat zamykam.
REKLAMA