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][BASCOM] obsługa lcd

moritz1986 20 Cze 2010 20:09 3052 22
REKLAMA
  • #1 8211307
    moritz1986
    Poziom 11  
    Witam wszystkich, mam problem z obsługą wyświetlacza lcd 16*1. Do tej pory bawiłem się bascomem 8051 i nigdy nie miałem problemu z lcd wszystko mi działało. Teraz postanowiłem przesiąść się na atmege8 i klops. Pisze prosty programik typu:

    
    $regfile = "m8def.dat"                                    
    $crystal = 11059200
    
    Config Lcd = 16 * 1
    Config Lcdpin = Pin , Db4 = Portd.5 , Db5 = Portd.6 , Db6 = Portd.7 , Db7 = Portd.4 , E = Portd.3 , Rs = Portd.2
    
    Do
       Cls
       Waitms 100
       Lcd "napis"
       Waitms 100
    Loop
    
    End
    


    po podłączeniu układziku na wyświetlaczu mam tylko osiem kwadratów. Dodam, że nie programuje przez Bascom'a , bo nie wiedzieć czemu niechce mi działać tylko przez ponyprog. Porty zmieniałem już kilka razy i nic nie pomaga ciągle to samo. Z góry dzięki za wszelkie podpowiedzi, pozdrawiam!
  • REKLAMA
  • #3 8211382
    moritz1986
    Poziom 11  
    niestety to nie to, wywala mi unknown lcd type
  • REKLAMA
  • REKLAMA
  • #5 8211436
    moritz1986
    Poziom 11  
    z tym 16 * 1a już też próbowałem i nie pomogło, jak kręce potencjometrem od kontrastu to poprostu kwadraciki świecą jaśniej albo ciemniej ;) może coś mam nie tak ustawione z bitami?

    potkiem? To poprawiłem, resztę proszę już samemu poprawić.
    Robak
  • #6 8211492
    Logan
    Poziom 30  
    Program wygląda OK, sprawdź część sprzętową, może pomyliłeś któryś z przewodów idących do LCD. Masz ustawiony zewnętrzny kwarc w FuseBits ?
  • #7 8211507
    Piotrek6984
    Poziom 13  
    Może masz źle nastawione parametry w zakładce LCD w Bascomie?

    [Atmega8][BASCOM] obsługa lcd
  • #8 8211542
    Logan
    Poziom 30  
    Piotrek6984 napisał:
    Może masz źle nastawione parametry w zakładce LCD w Bascomie?

    [Atmega8][BASCOM] obsługa lcd


    Przecież od tego jest Config Lcd !!!
  • #9 8211573
    moritz1986
    Poziom 11  
    o właśnie jakbyś mi coś więcej napisał o fusebitach, jak jest ustawić itp itd, bo tak myśle, że błąd właśnie w tym tkwi, a ja nigdy się nimi nie bawiłem :D
  • REKLAMA
  • #10 8211579
    Ture11
    Poziom 39  
    Bez schematu to ciężko powiedzieć, ale może spróbuj na próbę zamienić

    E = Portd.3 , Rs = Portd.2


    na:

    E = Portd.2 , Rs = Portd.3

    bo to wygląda jak brak zezwolenia na wyświetlanie. W miarę możliwości daj schemat, i konecznie sprawdź, czy na 5 pinie lcd także jest masa!!
  • #11 8211598
    Logan
    Poziom 30  
    moritz1986 napisał:
    o właśnie jakbyś mi coś więcej napisał o fusebitach, jak jest ustawić itp itd, bo tak myśle, że błąd właśnie w tym tkwi, a ja nigdy się nimi nie bawiłem :D


    Jeśli nie zmieniałeś "fusów" to procesor pracuje na wewnętrznym oscylatorze, wpisz
    $crystal = 1000000

    i sam się przekonaj.
  • #12 8211676
    moritz1986
    Poziom 11  
    zmieniłem tak jak pisałeś i nie pomogło, słuchaj ja kiedyś w tym procku pamiętam ustawiałem fusebity, bo zbudowałem na nim mjoya, który miał zew kwarc. Teraz chciałem coś innego popróbować. Tak więc gdybyś mógł mi napisać jak je ustawić w ponyprogu to byłbym wdzięczny :)
  • #13 8211786
    landy13
    Poziom 31  
    moritz1986 napisał:
    jak je ustawić w ponyprogu
    Zanim zaczniesz ustawiać najpierw odczytaj jakie są już ustawione.
  • #14 8211833
    moritz1986
    Poziom 11  
    odczytałem w ponyprogu i tylko ptaszka mam postawionego przy SPIEN, ale jego nawet sie chyba nie da odznaczyć, reszta jest nie zaznaczona
  • #15 8212665
    sorex86
    Poziom 15  
    $regfile = "m16def.dat"                                     ' INFORMACJA O PROCESORZE
    $crystal = 8000000
    $baud = 9600
    
    
    Config Lcdpin = Pin , Db4 = Porta.2 , Db5 = Porta.3 , Db6 = Porta.4 , Db7 = Porta.5 , E = Porta.1 , Rs = Porta.0       ' TAKTOWANIE PROC FABRYCZNE 1Mhz
    Config Lcd = 16 * 2
    Config Pind.7 = Output                                      ' informuje proc że PBD (PIN21) jako wyjście
    Config Pind.6 = Output
    Config Pind.5 = Output
    Config Pind.4 = Output
    Config Pind.3 = Output
    Config Pind.2 = Output
    
    Do
       Cls
       Lcd "1234567890123456"
       Print "tekst"
       Waitms 5                                                 ' początek pętli
       Set Portd.7
       Set Portd.6
       Set Portd.5
       Set Portd.4
       Set Portd.3
       Set Portd.2                                              ' włączenie diody
       Wait 1                                                   ' czekaj 1 sekunde
       Reset Portd.7                                            ' wyłączenie diody
       Reset Portd.6
       Reset Portd.5
       Reset Portd.4
       Reset Portd.3
       Reset Portd.2
       Wait 1
    
                                                  ' czekaj 1 sekunde
    Loop                                                        'koniec pętli i powrót na początek czyli do polecenia "Do"
    
    End      


    Przerób sobie ten kod. Sprawdź w ogóle czy działają Ci diody na pinach, które podłączasz do LCD.

    Reszta masz na:

    LCD
    http://radzio.dxp.pl/hd44780/hd44780_avr_4-bit_norw_c.htm

    FUSE
    http://www.engbedded.com/fusecalc/
  • #16 8212770
    moritz1986
    Poziom 11  
    Dzięki za linki, co do schematu o który ktoś pytał się niżej to wyświetlacz mam podłączony tak jak jest w linku od sorex86. Podłączałem piny które mają iść do lcd pod diody i jakoś migały, zrobiłem zmiane napisu na lcd przy wystąpieniu przerwania i diody zaczynały troszke inaczej migać. Teraz wlaczyłem z fusebitami i też nie pomogło, jakaś sierota chyba zemnie jest ;) Najdziwniejsze, że to samo mam z attiny2313. Jeszcze takie pytanie, jak korzystam z wew oscylatora, to moge mieć podlutowany kwarc zew? czy mam go wywalić? pozdrawiam i dzięki za podpowiedzi
  • #17 8212873
    sp3ots
    Poziom 38  
    Witam !
    Jeśli korzystasz z wewnętrznego oscylatora to rezonator zewnętrzny nie musisz wy lutować.
    Pozdrawiam. Stefan

    Fuse bity ustawione fabrycznie zostaw w spokoju nie tędy droga... !

    Powyżej napisałeś że " ledy jakoś migały " co to znaczy ? albo coś działa poprawnie tak jak chcemy albo nie działa.

    Radzę zacząć zabawę od ustawienia jednego portu jako wyjście podłączenie do niego jednej diody LED szeregowo z rezystorem np.1k do +5V i sprawdzać w ten sposób działanie nie tylko ATmega8 a przede wszystkim programatora.
    GG6293398
  • #18 8213764
    moritz1986
    Poziom 11  
    Troche źle mnie zrozumiałeś, jak napisze program żeby diody migały to wszystko działa jak należy, ja poprostu wyjście na lcd podpiąłem pod diode, żeby zobaczyć czy coś ten procek wysyła do lcdeka czy zmieniaja się stany na wyjściach. Programator jest napewno ok, bo programowałem nim procka do regulatora obrotów silniczka w modelu i wszystko pięknie działało. A fusebity już kiedyś były przestawiane więc nie mam pojęcia jak maja być ustawione fabrycznie.
  • #19 8213852
    sp3ots
    Poziom 38  
    Witam !
    Teraz rozumiem. Pod jeden z pinów gdzie jest podłączony LCD podłączyłeś LEDa,
    a program na LCD.
    Sprawdź podłączenia LCD - uP.
    Czy podłączałeś LCD do sprawdzonego układu, czy LCD działa poprawnie ?
    Pozdrawiam. Stefan
  • #20 8214426
    piotrva
    VIP Zasłużony dla elektroda
    1. sprawdź połączenia, czy nie masz gdzieś zimnych lutów, przerwanych kabelków (o ile kabelkami łączysz)
    2. sprawdź czy nie masz uszkodzonych wyjść procesora podłączając tam ledy (oczywiście wcześniej odłącz wyświetlacz, chodzi tylko o sprawdzenie czy piny uP działają poprawnie)
    3. poeksperymentuj z $crystal = 11059200 lub $crystal = 1000000
    4. zamiast config lcdpin=pin ... użyj ustawień w tym okienku, którego screeny masz w temacie (ja zawsze ustawiałem ten parametr w okienkach i nie miałem problemu ani na mega 1280, ani 90s2313)
    5. zamiast tej pętli daj po prostu:
    
    cls
    locate 1,1
    lcd "1234567890123456"
    end
    

    Napisz czy coś pomogło, jak nie to sprawdź wyświetlacz pod starym bascomem i procesorem (ja straciłem kiedyś cały dzień na sprawdzanie lcd 16x1a, po czym doszedłem, że był uszkodzony...) Na przyszłość, jak uda się odpalić ten 16x1a, polecam zakup lcd 16x2
  • #22 8217444
    moritz1986
    Poziom 11  
    Klops ciągle nie działa, już rożne cuda próbowałem i ciągle nic. Chyba kupie 16 * 2, bo coś mi sie wydaje, że ten się chyba zepsuł, a nie mam możliwości sprawdzenia czy jest ok.
  • #23 8237809
    piotrva
    VIP Zasłużony dla elektroda
    hmm, sprawdziłeś luty i napięcia zasilania?
    ustawiłeś kontrast, tak, że po włączeniu układu (procesor odłączony, podpięte samo zasilanie pod lcd) widać czarne prostokąty?
REKLAMA