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

[ASM][Atmega8]Wyświetlacz graficzny

Jozeph92 22 Kwi 2011 21:44 3903 19
  • #1 9429636
    Jozeph92
    Poziom 10  
    Witam! Chcę uruchomić wyświetlacz: ABG128064H05-YHY-R, http://www.av-display.com.cn/ProductFile/20080804023109.pdf . Posiadam do niego notę katalogową i próbuje go odpalić poprzez atmege8. Wiem, że nie ma do niego gotowego sterownika, więc chcę napisać własny jednak coś nie wychodzi :( podłączyłem go do uC, włącznie z potkiem i jest ok, wyświetlacz ładnie świeci i wszystkie piksele zapalone. Jednak nie wiem jak przeprowadzić jego inicjalizację? żeby np zapalić tylko jedną połowę wyświetlacza (odpowiada za to nóżka CS1 i CS2). W nocie pisze, że ustawiając stan niski na CS1 lub CS2 otrzymam jedną połowę wyświetlacza aktywną jednak nic się nie dzieje.. Nie wiem czy w ogóle atmega ma jakiś wpływ na wyświetlacz.. DB0-DB5 podłączone do PC0-PC5, DB6 i 7 do PB6 i PB7. CS1-PD0, CS2-PD1 RST-PD2, RW-PD3, RS-PD4, E-PD5. oto kod:

    
    ustawienie:
    ldi R16, 0b00111111
    sts PORTC, R16
    ser R16
    sts PORTD, R16
    ldi R16, 0b00000000
    sts PORTB, R16
    cbi PORTD, 0
    rcall wait
    cbi PORTD, 4
    cbi PORTD, 3
    rcall strobe
    ret
    
    wait:
    nop
    nop
    nop
    ret
    
    strobe:
    sbi PORTD, 5
    rcall wait
    cbi PORTD, 5
    ret
    
  • #2 9430786
    kamyczek
    Poziom 38  
    Wyświetlacz który posiada sterownik KS108. Nie posiada generatora znaków, więc wszystko trzeba zrobić samodzielnie . Trzeba go traktować jak dwa odrębne wyświetlacze 64*64 piksele dlatego ma dwa wyjścia CS0 i CS1.
  • #3 9431302
    Jozeph92
    Poziom 10  
    Wiem, że są dwa odrębne i są to CS1, CS2, a nie CS0, CS1. Z tego co czytałem w internecie to nie ma on sterownika KS108 i posiada generator znaków? Więc nie wiem czy ja czy kolega się myli. O to mi chodzi, że trzeba napisać samemu tylko jak się za niego zabrać? Jak zapalić konkretny piksel? lub jedną połowe wyświetlacza?
  • #4 9431610
    kamyczek
    Poziom 38  
    W linku nie ma nic co mogło by wskazywać na inny niż ks108 sterownik . Dodatkowo dwa wejścia CS1 i CS2 mogą sugerować że właśnie tego typu sterownik lub jego zbliżony odpowiednik znajduje się w tym wyświetlaczu (kolejność i nazewnictwo innych wyprowadzeń też jest zbliżone do wyprowadzeń magistrali typu 6800.
  • Pomocny post
    #5 9431634
    michalko12
    Specjalista - Mikrokontrolery
    KS0108 family = KS0107/KS0108, HD61202/HD61203, AX6108/AX6107, PT6608/PT6607, KS0708, S6B0708, S6B0108A, S6B2108, S6B0108, SBN0064 / SBN6400, ST7548, ST7588, NT7108, RA8808, RW1065
  • #6 9432074
    Jozeph92
    Poziom 10  
    michalko12 rządzi :D S6D0108 - to jest sterownik tego wyświetlacza :) dzięki. Poszukam na elektrodzie coś w asemblere pod KS108. Chyba, że ktos ma sprawdzony temat to będę wdzięczny?
  • #7 9432235
    asembler
    Poziom 32  
    Jeżeli uważasz że ten programik na początku ma cokolwiek zrobić z tym wyświetlaczme to jestes w błedzie - mnie mówi tylko to że czekasz na gotowca, a jezeli tak to sobie go poszukaj juz raz zamieciłem rozwiazanie.
  • #8 9432531
    kamyczek
    Poziom 38  
    Przecież napisałem w pierwszej odpowiedzi KS108 i w zasadzie znaczenie ma tylko to że jest to odpowiednik innego producenta tego samego układu. Za to napisanie kodu w asemblerze nie skończy się na tych kilku linijkach jak napisał kolega asembler . Ale tu już kolega rządzi i zobaczymy jak to będzie łatwo napisać "Witaj Świecie"
  • #9 9433821
    Jozeph92
    Poziom 10  
    Raczej nie będzie łatwo.. Mam coś takiego i wyświetlacz, gdy jest podłączony do zasilania, swieci i wszystkie piksele są zapalone, po zaprogramowaniu atmegi gaśnie oświetlenie i piksele i włącza się na nowo. Nie mogę jednak zgasić jego połowy... próbuje przez wyczyszczenie i ustawienie odpowiedniego bitu ale nic nie daje. I nie czekam na gotowca!!
    
    start:
    
    
    ldi R16, HIGH(RAMEND)
    out SPH, R16
    ldi R16, LOW(RAMEND)
    out SPL, R16
    
    ldi R16, 0b11111111
    out DDRB, R16
    out PORTB, R16
    
    out DDRC, R16
    out PORTC, R16
    
    out DDRD, R16
    out PORTD, R16
    
    cbi PORTB, PB6
    cbi DDRB, PB6
    rcall wait
    
    cbi PORTB, PB7
    cbi DDRB, PB7
    rcall wait
    
    cbi PORTD, PD3
    cbi DDRD, PD3
    rcall wait
    
    cbi PORTD, PD4
    cbi DDRD, PD4
    rcall wait
    
    cbi PORTD, PD0
    cbi DDRD, PD0
    rcall wait
    
    
    cbi PORTD, PD1
    cbi DDRD, PD1
    rcall wait
    rcall whatever
    
    wait:
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    ret
    
    whatever:
    nop
    rjmp whatever
    
    petla:
     ldi R16, 200
      mov R20, R16
      A:
      ldi R21, 10
      A0:
      ldi R22, 100
      A1:
      nop
      dec R22
      brne A1
      dec R21
      brne A0
      dec R20
      brne A
      ret
    


    PS. Gdy podłączony jest sam wyświetlacz, bez atmegi, do zasilania, włącznie z oświetleniem i potencjometrem do kontrastu to wszystkie piksele są zapalone. Jak powinienem ustawić potencjometr? Żeby cały czas były widoczne wszystkie piksele? raczej nie, więc jak dobrać ten parametr?
  • #10 9434081
    asembler
    Poziom 32  
    1.Najpierw przeczytaj notę od procesora a dopiero bierz się za LCD.
    To co że po angilesku wystarczy zrozumieć obrazki.
    2. Po raz kolejny i chyba już ostatni pisze "Bez schematu to analiza kodu jest bez sens" Dla ciebie tonaturalne bo masz schemat w góowie a dla kogoś kto chcialby ewentualnie pomóc jest niezbędne i oczywiście jak w kilkunastu poprzednich podobnych tematach po wielu wileu postach i tak w końcu padnie "Pokaż schemat" , to czemu nie od razu ułatwić podpowiadaczom.
    3.Nie czekasz na gotowca to napisz coś wiecej bo taki program do obsługi tego wyświetlacza to kilka stron w ASM
    4. Twojego program wymaga jeszcze dodatkowo pokazanie ustawień fuse bits.
    5. Dobrze by było aby ewentualni podpowiadacze mieli możliwość zaglądnięcia do twojej głowy bo nie zawsze to co piszesz zgadza sie z tym co chcesz napisać, a od tego są komentarze których brak czyli nie wiem co poeta miał na myśli.

    Pozdrawiam ASM
  • #11 9434253
    kamyczek
    Poziom 38  
    Analizując zachowanie LCD mogę śmiało napisać że kod nie robi nic. Prawidłowo zainicjowany wyświetlacz pokaże to co ma w pamięci czyli śmieci. Ciemny czy jasny lcd świadczy jedynie o działaniu regulacji kontrastu. Komplikacja użycia tego LCD z AVR polega na tym że wyświetlacz używa magistrali danych typu 6800 a AVR takowej nie posiada i trzeba jej działanie zrealizować programowo. Proponuje dobrze przeczytać PDF-y od AVR i LCD bo efektu długo nie będzie ...
  • #12 9434261
    asembler
    Poziom 32  
    Czyżby pan josef przesiadł sie z bascom lub C na ASM? bo konstrukcja jego programu tak mi cos podpowiada.
    Temat jest śmieciowy ale pogadać mozna o niczym.
    Program jest chyba przekopiowany z global śmietnika bo nawet początkujący programista chyba takich bzdur by nie napisał.
    Mylisz sie kamyczak program robi bardzo wiele na przykład wiesza sie.
  • #13 9434271
    Jozeph92
    Poziom 10  
    1. jakbym miał czas to bym ją wkuł do głowy na pamięć w trzech językach, a że nie mam więc muszę sobie jakoś radzić...
    2. To podłączenie jest banalnie proste..

    PINY WYŚWIETLACZA --- PINY uC:

    DB0 --- PC0
    DB1 --- PC1
    DB2 --- PC2
    DB3 --- PC3
    DB4 --- PC4
    DB5 --- PC5
    DB6 --- PB6
    DB7 --- PB7

    CS1 --- PD0
    CS2 --- PD1
    RST --- PD2
    RW --- PD3
    RS --- PD4
    E --- PD5

    To są najważniejsze piny. Zasilanie 5V.
    3. Ok, więc zacząłem coś robić i chce to dokończyć... Z pomocą..
    4. Fusów w atmedze nie ruszałem. Więc są oryginalne ustawienia.
    5. hę? ;d

    edit:

    Tak przesiadłem się z bascom'a. Oh Panie asembler, twoja pomoc i wypowiedzi są na wagę złota. Dobrze wiedzieć, że w asemblerze "takich" rzeczy nie można pisac.. zwłaszcza, że działają.. Program się nie zawiesza.. a fakt, że za wiele nie robi..
  • #14 9434385
    asembler
    Poziom 32  
    Jozeph92 napisał:

    Tak przesiadłem się z bascom'a. Oh Panie asembler, twoja pomoc i wypowiedzi są na wagę złota. Dobrze wiedzieć, że w asemblerze "takich" rzeczy nie można pisac.. zwłaszcza, że działają.. Program się nie zawiesza.. a fakt, że za wiele nie robi..


    Bzdura - skąd wiesz że cos robi dobrze skoro nic nie robi?
    Aby można zobaczy czy się program zawiesza najpierw musi być napisany - czytaj cokolwiek robić.

    Ad 5 Nie he? tyklo dopisz poprostu komentarze.

    W ogóle nie przeczytałes PDF od LCD a tym bardziej od Atmegi, ale skoro uważasz że nie jest to konieczne to gratuluje.
    Ja uczyłem sie aASM AVR miesiąc zanim coś zaczęło wychodzic a ty chcesz bez nauki i czytanie od razu wiedziec wzystko - no ale jak widac ja tępy jestem.

    Proponuję temat do kosza ze względu na regulamin poprostu.
  • #15 9434413
    Jozeph92
    Poziom 10  
    Ten drugi program, który zamiściłem jest przecież bardzo prosty.. jest tylko ustawienie stosu i konfiguracja wyprowadzeń pinów w atmedze.. Tak bardzo są tu potrzebne komentarze? Znalazłem lepszego pdf-a w necie:

    http://www.datasheetcatalog.org/datasheet/SamsungElectronic/mXyzytqy.pdf

    i zgodnie z nim do włączenia wyświetlacza powinienem tak skonfigurować porty (strona 19):
    
    RS = 0
    R/W = 0
    DB7 = 0 
    DB6 = 0
    DB5 = 1
    DB4 = 1 
    DB3 = 1 
    DB2 = 1 
    DB1 = 1 
    DB0= 1 
    

    mam tak, ale prawdopodobnie i tak nie powinno się nic wyświetlić.. Zastanawia mnie: "DISPLAY START LINE (Z ADDRESS)" z tej samej strony.. według tego powinny byc wyświetlone jakie dane na górze LCD tylko co podstawić za AC0-AC5?
  • #16 9434476
    asembler
    Poziom 32  
    Dlaczego komentarze w twoim przypadku są konieczne to wyjaśniałem wyżej, ale powtórze prościej.
    Musisz skomentować każdą linię tak aby czytający wiedział co kazdy rozkaz ma zrobić według cebie a czytający dopiero skontroluje czy to prawda.
  • #17 9434551
    Jozeph92
    Poziom 10  
    
    start: 
    
    
    ldi R16, HIGH(RAMEND)  ;
    out SPH, R16                 ;inicjalizacja stosu
    ldi R16, LOW(RAMEND)  ;
    out SPL, R16                  ;
    
    ldi R16, 0b11111111 ;ustawienie rejestru r16
    out DDRB, R16  ;wpisanie do rejestru portu b wartosci z r16
    out PORTB, R16 ;ustawienie całego portu b jako wyjście (stan wysoki)
    
    out DDRC, R16 ;wpisanie do rejetru portu c wartosci z r16
    out PORTC, R16 ;cały portc jako wyjscie (stan wysoki)
    
    out DDRD, R16 ;wpisanie do rejetru portu d wartosci z r16
    out PORTD, R16 ;cały port d jako wyjscie (stan wysoki)
    
    cbi PORTB, PB6 ;ustawienie(wyczyszczenie bitu) zera na pinie PB6 w procesorze
    cbi DDRB, PB6 ;to samo tylko w rejestrze portu b (Jest to DB6 w wyświetlaczu)
    rcall wait ;odczekanie kilku cykli
    
    cbi PORTB, PB7 ;ustawienie(wyczyszczenie bitu) zera na pinie PB7 w procesorze
    cbi DDRB, PB7 ;to samo tylko w rejestrze portu b (Jest to DB7 w wyświetlaczu)
    rcall wait 
    
    cbi PORTD, PD3 ;wyczyszcze PD3 (RW w wyświetlaczu)
    cbi DDRD, PD3 
    rcall wait 
    
    cbi PORTD, PD4 ;wyczyszczenie PD4 (RS w wyświetlaczu)
    cbi DDRD, PD4 
    rcall wait 
    
    cbi PORTD, PD0 ;wyczyszczenie PD0 (CS1 w wyświetlaczu - pierwszy kontroler wyswietlacza)
    cbi DDRD, PD0 
    rcall wait 
    
    
    cbi PORTD, PD1 ;wyczyszczenie PD1 (CS2 w wyświetlaczu - drugi kontroler)
    cbi DDRD, PD1 
    rcall wait 
    rcall whatever ;skok do petli nieskonczonej
    
    wait: 
    nop 
    nop 
    nop 
    nop 
    nop 
    nop 
    nop 
    nop 
    nop 
    nop 
    ret 
    
    whatever: 
    nop 
    rjmp whatever 
    

    ?
  • #18 9437342
    kamyczek
    Poziom 38  
    Mam dla kolegi Józefa propozycje :
    Lektura podstawowa
    Lektura uzupełniająca
    Dodatkowo warto przeczytać i posiadać:
    AVR mega
    AVR tinny
    Jak szanowny kolega przeczyta ze zrozumieniem chwile posiedzi i pobawi się znacznie szybciej dojdziemy do chwili ,w której pomoc z naszej strony zacznie być możliwa i skuteczna . Trzeba znać składnię asemblera przeznaczenie nazewnictwo rejestrów oraz wyniki wykonywanych operacji . W tej chwili żaden przykład nie będzie dla kolegi wystarczająco zrozumiały. Tu nie ma lcd "Witaj Świecie"
    Tu się trzeba nagłowić zanim na lcd pokaże się kropka ...
  • #19 9437384
    asembler
    Poziom 32  
    ....i kropka.
  • #20 9438024
    Jozeph92
    Poziom 10  
    Panowie zastanawiałem się nad tymi książkami już z tydzień temu.. ale nie mam czasu na to bo za parenaście dni mam oddać projekt.. Myślę, że jakbym dostał jakiś przykład to był by on dla mnie zrozumiały. Ale.. trudno.
REKLAMA