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

Atmega8 LCD 2x16 - podświetlenie

luke_dra 16 Gru 2008 15:56 7633 13
  • #1 5866627
    luke_dra
    Poziom 10  
    Witam

    Mam pytanie dotyczące zasilania załączonego poniżej LCD 2x16. Zrobiłem sobie płytkę testową wg schematu z "Programowanie mikrokontrolerów w BASCOM" Sterowania dwoma układami DS1820 dołączonymi
    'do tej samej magistrali 1-Wire. Atmega8 zasilana jest przez stabilizator 7805 który na wyjściu wystawia ok 5,12V. Postanowiłem sprawdzić jak dział podświetlenie mojego LCD więc podłączyłem je do opisanego układu no i niestety czerwone podświetleniu poszło z dymem. Przerobiłem więc wyjście 7805 dodając diodę 1N4148 dzięki czemu uzyskałem 4,8V i wtedy podświetlenie już było ok (były jeszcze dwa w zapasie zielone i niebieskie). Idąc tym śladem bałem się zasilic samego lcd napięciem 5,12 więc teraz jest tak że Atmega działa na 5,12 a LCD na 4,8.

    Niestety układ ten nie działa poprawnie do LCD wyświetla w 1 linii tylko prostokąty i nic po za tym. Przeanalizowałem wszystkie wyprowadzenia Atmegi do LCD i są ok. Co jest nie tak. Jakim napięciem mogę zasilać LCD a jakim jego podświetlenie.

    Taki LCD posiadam
    Atmega8 LCD 2x16 - podświetlenie
  • #2 5866710
    tokrzych
    Poziom 16  
    Sprawdz w dokumentacji wyświetlacza.
    Ja mam dla przykładu wyświetlacz 1x8 niebieski a jego nota katalogowa podaje napięcie zasilania 5V dla elektroniki a 4.5V dla podświetlenia więc nalezy dobrać rezystor 5V-4.5 V podzielone przez prąd jaki bierze podświetlenie Np.dla 20 mA = 25 ohm , poza tym sprawdz w programie czy umieściłeś komendę LCD która inicjalizuje wyświetlacz.
  • #3 5866712
    dawid512
    Poziom 32  
    LCD jak i uc zasilasz 5V oczywiście podświetlanie podłącza się przez rezystor. Jeżeli połączenia masz ok to zapytam czy masz: pin R/W do masy? Czy do 3 nóżki lcd masz podłączony potencjometr do kontrastu?
  • #4 5867061
    luke_dra
    Poziom 10  
    Tak to wygląda.
    Układ wyjścia JP5 jest zgodny z kolejnością wyjść na LCD + dwa dodatkowe do zasilenia podświetlenia - razem 16 pin

    Atmega8 LCD 2x16 - podświetlenie


    A to początek kodu
    
    'Program  sterowania dwoma układami DS1820 dołączonymi
    'do tej samej magistrali 1-Wire
    
    $regfile = "m8def.dat"                                      'informuje kompilator o pliku
          'dyrektyw mikrokontrolera
    $crystal = 16000000                                         'informuje kompilator
          'o częstotliwości oscylatora
          'taktującego mikrokontroler
    Config Pinb.1 = Input                                       'linia PB1 jako wejściowa
    Config Lcd = 16 * 2                                         'konfigurowanie typu
          'wyświetlacza LCD
    Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5       'konfigurowanie linii
          'mikrokontrolera, do których
          'jest dołączony wyświetlacz LCD
    Config 1wire = Portb.0                                      'konfigurowanie linii magistrali
          '1-Wire
    Declare Sub Odcz_temp(czujnik As Byte)                      'procedura odczytu temperatury
          'z układu DS1820 z parametrem,
          'który wskazuje numer czujnika
          'temperatury
    Declare Sub Zapisz_id                                       'procedura zapisu numeru ID do
          'układu DS1820
    Dim Temperatura(2) As Byte                                  'tablica dwóch zmiennych typu
          'Byte na zmierzoną temperaturę
    Dim Id(8) As Byte                                           '8-elementowa tablica na numer
          'ID
    Dim I As Byte                                               'zmienna licznikowa
    Dim J As Byte                                               'zmienna licznikowa
    Dim K As Byte                                               'zmienna licznikowa
    Dim Liczba_ukl As Byte                                      'zmienna, do której wpisywana
          'jest liczba układów dołączonych
          'do magistrali 1-Wire
    S1 Alias Pinb.1                                             'przypisanie nazwie Pinb.1
          'nazwy S1
    
          'definicja znaku stopnia
    Deflcdchar 0 , 7 , 5 , 7 , 32 , 32 , 32 , 32 , 32
    
    Set Portb.1                                                 'dołączenie do linii PB1
          'rezystora podciągającego
    Cls                                                         'czyszczenie LCD
    Liczba_ukl = 1wirecount()                                   'odczytanie liczby układów
          'dołączonych do magistrali
          '1-Wire
    If S1 = 0 Then                                              'jeśli przycisk S1 naciśniety,
          'to
     Lcd "Liczba ukladow: " ; Liczba_ukl
    
  • #5 5867509
    tokrzych
    Poziom 16  
    Coś mi się wydaje że masz błędy na płytce przy podłączeniu wyświetlacza.
    Nózkę tam gdzie jest masa wyswietlacza powinieneś podłaczyć z 5 czyli RW a masz podłaczoną do E. No i dalei sie sypie - wyjście potencjometru masz podł. do 4 a nie do 3 itd. sprawdz jeszcze raz ze schematem.

    Dodano po 38 [minuty]:

    Jeśli natomiast noga wyswietlacza oznaczona jako 1 ma byc pierwszą to powinien na niej być minus a jest plus no i do niej trzeba też podłaczyć nog ę 5 czyli RW a potencjometr jest wtedy dobrze.
  • #6 5868551
    ilmenauer
    Poziom 14  
    Jeżeli LCD wyświetla tylko prostokąty w 1 linii to oznacza, że jest on sprawny!
    Nie otrzymał natomiast poprawnych instrukcji inicjacji, które by go m.in. wyczyściły.
    Winy szukaj po stronie połączeń między uC a LCD, o ile jesteś pewien poprawności kodu.
  • #7 5868799
    luke_dra
    Poziom 10  
    tokrzych nie do końca mogę się zgodzić bo numery nieparzyste są po prawej stronie JP5 czyli wyjście potencjometru jest na 3. :) Plus na 1 a masa na 2 zgodnie z dokumentacją
  • Pomocny post
    #8 5869082
    mirekk36
    Poziom 42  
    Tak mi się wydaje, że kolega autor namieszał do potęgi czwartej i do sześcianu z tynm swoim wyświetlaczem.

    Większość a w zasadzie wszystkie tego typu wyświetlacze na nóżce nr.1 w takim 2-rzędowym 16-to pinowym złączu mają GND a na nóżce nr.2 mają VCC (no chyba że twój jest jakimś dziwolągiem). Jednak coś mi tu pachnie, że kolega po prostu skrosował sobie te kabelki po stronie wyświetlacza (tzn wiadomo - inaczej założył wtyczkę itp) bo skoro wyświetlają się kwadraciki w górnej linijce to znaczy, że zasilanie w cudowny sposób udało się prawidłowo podłączyć i być może pozostałe piny też. (inaczej wyświetlacz by się powoli smażył i nic nie wyświetlał) Jednak na przyszłość radzę się trzymać standardu to i łatwiej będzie się rozmawiało i dyskutowało na forum zamiast godzinami wyjaśniać sobie o co chodzi z kabelkologią, to po pierwsze, a dalej ....

    2. jeśli ścieżki na rzeczywistej twojej płytce mają takie same rozmiary i tak samo wyglądają jak na tej płytce tu przedstawionej - to wg mnie masz zwarcie masy na nóżkach - 2,3,4. A jeśli takie zwarcie jest to aż dziw bierze, że nie spalił ci się jeszcze potencjometr przy skręceniu go na maxa w jedną stronę - sprawdź to. (poza tym lepiej by było jak byś pokazał dokładny schemat tego swojego ustrojstwa to łatwiej i szybciej byłoby wskazać ci gdzie popełniłeś inne babole o czym dalej ...

    3. Stosujesz 4-bitowe podłączenie, to dlaczego niewykorzystane bity D0..D3 podłączyłeś do GND ???? one mają wisieć w powietrzu !!!

    4. kolejna kicha to ZASILANIE - co kolega wyczyniasz z tymże zasilaniem. Widzę, że VCC podane jest do procka na Nogę nr. 7 - a gdzie zasilanie na NODZE NR.20 AVCC ???? to już jest kuriozum bo widzę, że z kolei noga 20 doprowadzona jest do złącza JP3 które służy do programowania przez STK200 do pinu, który zasila programator. Czyli kolega zasila sobie programator przez procek (bo akurat w Atmega8 pin7 i pin20 jest zwarty wewnątrz - ale TAK SIĘ NIGDY NIE ROBI! napraw to, podłącz normalne zasilanie czyli VCC do nogi nr.7 do nogi nr.20 oraz do nogi VCC złącza programatora ISP. (UWAGA! programator STK200 normalnie zasilamy tym samym napięciem jak procka)

    podobnie GND podaj normalnie do nogi nr.8 do nogi nr.22 oraz do zdaje się pinu nr2. złącza JP3 . A jak masz teraz???? to już masakra ;) .... pin nr2. złącza JP3 (o ile ten podłączony do AVCC procka ma nr.1) - jest podłączony GDZIE???? do nogi AVREF procka - zamiast do GND !!!! - dziwię się, że ci w ogóle procek się programował - ale tak podłączając różne rzeczy będziesz duuuużo palił - scalaków oczywiście

    5. Niech kolega nie wymyśla teorii z kosmosu n/t innego napięcia zasilania procka np że może ono wynosić 5,1V natomiast napięcie dla wyświetlacza może już wynosić tylko 4,8V bo to całkowita bzdura!. Jeśli w jakiejś dokumentacji miałeś podane, że spadek napięcia na podświetlaniu wyświetlacza wynosi 4,8V to po pierwsze nie jest to zasilanie układów cyfrowych wyświetlacza bo ona ma być normalnie +5V, a po drugie oznacza to, że podświetlanie też zasilasz z +5V tyle że musisz dobrać rezystor . A jak?

    skoro I = U/R

    to

    R = U/I czyli twoje U = 5V - 4,8V = 0,2V I dalej R = 0,2V / 0,02A = 10R

    czyli dajesz jakiś rezystorek ok 10 ohm w szereg z podświetlaniem normalnie podłączonym do +5V. Naucz się dobierania i obliczania rezystorów dla diod LED bo będziesz je jarał do updłego - tymczasem ta wiedza to podstawa - jakby prawo Ohma I = U/R ;)

    Inne co uderza na tej twojej płytce to brak kondensatora ceramicznego 100nF jak najbliżej przy nogach VCC i GND procka oraz jakiegoś elektrolita np 47uF do 100uF też przy nogach zasilania. Nie zapominaj nigdy o tym na przyszłość.

    ..... ok ale się rozpisałem - jeśli się zastosujesz do wskazówek powyżej to na 1000% wyświetlacz ładnie ci ruszy, podświetlanie także i to w każdym wyświetlaczu (jeśli będziesz obliczał sobie potrzebny rezystor) To musi działać bo to jest zbyt prosty układ żeby nie działał

    ciekawy jestem skąd ty wziąłeś schemat połączenia LCD z prockiem, czy w necie nie widziałeś ???? jest tego na hektolitry
  • #9 5869139
    Seba319
    Poziom 24  
    Chciałem tylko dodać że mi się trafił model wyświetlacza (też 2x16 jednak z inaczej ułożonymi wyprowadzeniami), który miał już zamontowany rezystor i zasilanie podświetlania podłączało sie bezpośrednio do +5V. Tak swoją droga to się nie przejmuj, jak uwalisz ze 2 uC to się nauczysz co i gdzie podłączyć :) Zrób to co napisał mirekk36, a wszystko powinno działać.
  • #10 5869155
    tokrzych
    Poziom 16  
    Jeśli numery nieparzyste masz z prawej strony to napewno masz tam podłączyc do końcówki numer 1 minus a masz plus a z lewej strony do końcówki 2 podłącz plus, natomiast do końcówki 5 czyli 3pozim pod minusem RW musisz podłączyć masę i tu masz błąd bo w tej chwili masz ją podłączoną do plusa. W tym układzie potencjometr pozostaje bez zmian.
    Przykładowy rozkład końcówek masz tu :
    http://www.artronic.pl/o_produkcie.php?id=889?
  • #11 5869470
    luke_dra
    Poziom 10  
    A więc tak. Wszystko już działa porwanie.
    Atmega8 LCD 2x16 - podświetlenie

    mirekk36 poproszę o trochę litości jestem bardzo początkującym elektronikiem :) a to jest tylko płytka testowa

    1) tak wygląda opis tego LCD. Z tego co się zorientowałem VDD to 5V a VSS to GND. I jeszce jedno zamieszanie JP1 ma + po lewej a JP2 po prawej
    Atmega8 LCD 2x16 - podświetlenie

    2) tu faktycznie był błąd ale wyeliminowany na samym początku po wytrawieniu płytki (drugiej już nie robiłem bo to tylko test)

    3) tak było w literaturze :)

    4) uC programuję w zewnętrznej podstawce a JP3 to tylko wyprowadzenie np na dodatkowe przyciski

    5) tu faktycznie przy czarowałem - dziękuję za poradę

    Całość dział już na tym samym zasilaniu z 7805, podświetlenie na razie przez tę diodę ale już tak więcej robił nie będę :). Co pomogło - sam jestem zadziwiony bo jak widać na załączonym obrazku (na samym początku) masa przebiega przez 2, 5, 6, 7, 8 i 9 zgodnie z literaturą no i jeszcze 16 do zasilenia LCD. Zmieniłem to tak że masa jest tylko na 2, 5 i na 16 pozostałe niepołączone i działa !! ??
  • Pomocny post
    #12 5869544
    mirekk36
    Poziom 42  
    luke_dra napisał:
    poproszę o trochę litości jestem bardzo początkującym elektronikiem :) a to jest tylko płytka testowa


    ależ właśnie z tego powodu postanowiłem tak się rozpisać, żeby zwrócić twoją uwagę na kilka istotnych rzeczy i mam nadzieję, że przynajmniej niektóre uwagi pomogły ? ;)

    odnośnie jeszcze tej diody, którą dałeś w szereg z podświetlaniem - to chyba orientujesz się czy nie? dlaczego to akurat w tym przypadku ci działa? Dioda tu nie działa jako rezystor tylko wprowadza kolejny spadek napięcia co powoduje, że nie trzeba użyć rezystora ale nie w każdym przypadku tak musi być. Wszystko zależy od tego jaki akurat spadek napięcia ma ta dioda razem z podświetleniem. To jest podobnie jak w sytuacji gdy np niebieską czy białą diodę możez bez rezystora podłaczyć do bateryjki 3V ;) bo akurat jest taki sam spadek napięcia diody jak napięcie baterii.

    jeszcze jedno - polecam ci jak najszybciej jednak zacząć programować procesory bezpośrednio w układzie dzięki takiemu złączu jak ISP - oszczędzisz wtedy sobie ogromne ilości roboty, oszczędzisz procka i jego nogi, które mogą i często się wyginają przy wachlowaniu pomiędzy podstawkami a co najważniejsze zobaczysz jak szybko i fajnie pisze się i testuje na żywo prawie - swoje programy. Sam się kiedyś będziesz z tego śmiał jak wspomnisz stare czasy gdy wachlowałeś AVRkami ;)

    a odnośnie tej dziwnej literatury, która tobie nakazywała podłączać nieużywane piny LCD do GND - to sam przyznaj - o ile prosćiej i szybciej i łatwiej podłącza się LCD do procka - jeśli nie trzeba szaleć z dodatkowymi ścieżkami czy kabelkami do tych pinów - a i tak wszystko ładnie działa
  • Pomocny post
    #13 5869743
    tokrzych
    Poziom 16  
    Witam
    Przegladałem przed chwilą kilka kart katalogowych wyświetlaczy dostepnych na różnych aukcjach i w większości z nich minus jet na pierwszej nodze a plus na 2 , ale trafił się też taki który ma dokładnie odwrotnie podłaczone zasilanie (choć jest ich bardzo mało) więc wniosek z tego że należy uważać gdyby przyszła teraz chęć zamontowania w to miejsce innego.Teraz wiem dlaczego ciągle mi nie pasowało podłączenie końcówki 5 R/W do 2 pinu ale tak to jest jak ma się mało danych technicznych o elemecie pytającego a wtedy też trudno doradzic.
    pozdr. i życzę miłej zabawy.
  • #14 5869915
    zumek
    Poziom 39  
    Temat uważam za wyczerpany - zamykam.
REKLAMA