Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

LCD od S65 sterowany przez ATmega16.

pmichniewski 30 Nov 2011 17:54 166550 366
Texa Poland
  • Texa Poland
  • #332
    User removed account
    Level 1  
  • #333
    snnaap
    Level 25  
    Rozumiem o co Ci chodzi, faktem jest że przy takiej rozdzielczości ciężko byłoby przy szeregowym interfejsie zmieniać zawartość całego wyświetlacza w rozsądnym czasie.

    Zależy kto do czego używa takiego wyświetlacza. Jeżeli chcesz zapełniać jego całość danymi to wiadomo że interface równoległy jest tu zbawienny.
    Ja natomiast zazwyczaj nie zmieniam dużej powierzchni wyświetlacza naraz dlatego kieruje się bardziej oszczędnością wyprowadzeń jakie muszę zużyć na jego podłączenie.
  • Texa Poland
  • #334
    J_Bravo
    Level 27  
    Pozostaje ci wyświetlacz z S65 albo z nokii 6610. Oba mają interface szeregowy i oba są dobrze opisana na elektrodzie.
  • #335
    kred
    Level 19  
    Witam,

    Bawię się teraz wyświetlaczem z LS020 podłączonym do STM32F103 i taka uwaga dla potomnych którzy mają problem z prawidłowym odpaleniem: w moim egzemplarzu przy zmianie RS z COMMAND na DATA trzeba też przepinać linię CS. Bez tego sterownik nie chciał wyegzekwować przesłanej komendy.
    Na początku zakładałem że komendy i dane da się wysłać za jednym zamachem mając CS w stanie niskim, ale niestety nie da rady.
  • #336
    J_Bravo
    Level 27  
    Dane
    Code: cpp
    Log in, to see the code

    Komenda
    Code: cpp
    Log in, to see the code


    i wszystko hula.
  • #337
    sweter_007
    Level 14  
    Przesiadłem się na mikrokontroler atmega32u4 i mam problem z prawidłowym ustawieniem podświetlenia (generacja PWM), cewka 1mH.
    Przy ustawieniu:
    DDRB|=(1 << PB7);
    TCCR0A = (1<<WGM01) | (1<<WGM00) | (1<<COM0A1);
    TCCR0B = (1<<CS00);
    OCR0A = 120;

    działa jednak podświetlenie miga, i przy tym ustawieniu nie wiadomo dlaczego jak zmieniam wartość rejestru OCR0A zmienia się(jasność) podświetlenia a jednak TOP = 0xFF

    a powinno być tak ale nie chce działać:
    DDRB|=(1 << PB7);
    TCCR0A = (1<<WGM01) | (1<<WGM00) | (1<<COM0A1);
    TCCR0B = (1<<CS02) | (1<<WGM02);
    OCR0A = 120;

    czyli :
    - Clear OC0A on Compare Match, set OC0A at TOP
    - Fast PWM, TOP = OCR0A
    - clock = clk/256 (From prescaler)

    EDIT:
    eh. problem ma związek z bootloaderem. Zaprogramowany układ odłączony i podłączony do prądu działa. Zresetowany również. Przy programowaniu flipem, jak kliknę "start application" oraz zaznaczony jest reset, program najprawdopodobniej wpada w jakąś pętle(co chwile reset), jak odznaczony jest reset wszystko działa:
    Jednak działa to pierwsze ustawienie, druga konfiguracja PWM bez efektu.. dlaczego?
  • #339
    User removed account
    Level 1  
  • #340
    snnaap
    Level 25  
    atom1477 wrote:
    To chyba ślepy jesteś. Ja wszystko widzę.



    HEHEH

    Nie o to chodzi.
    Chodzi o to że nie mogę odczytać jaki kolor ma dany piksel. Brakuje funkcji odczytu poszczególnych pikseli tak jak masz funkcję odczytu z w hd7.. jaki znak znajduje się na danym polu za pomocą odpowiedniej komendy i piny R/W.
    Łapiesz?

    Problem polega na tym że jak coś przykryje kursorem to muszę wiedzieć co pod nim było aby to nie znikło, nie ma takiej możliwości ponieważ nie mogę tego odczytać z pamięci wyświetlacza. No chyba że jest taka funkcja a jedynie ja o niej nie wiem?!
  • #341
    User removed account
    Level 1  
  • #342
    Mars1990
    Level 11  
    Witam,
    Czas na moje trzy grosze w tym temacie :)

    Otóż...z drobną pomocą (dzięki snnaap!) udało mi się przebrnąć przez inicjację LCD, model LS020(z końcówką 5, czyli bez zielonej "wstawki" z tyłu w sterowniku). Jednakże mam problem z użytecznymi komendami.

    Na początek chciałbym oczywiście wypełnić cały wyświetlacz jakimś kolorem, ale...wypełnia się tylko do połowy:
    http://img442.imageshack.us/img442/4016/ls0202.jpg
    Również, gdy pobawię się funkcją wypełniającą, uzyskuję zerwanie ciągłości obrazu w środku wyświetlacza:
    http://img834.imageshack.us/img834/332/ls0201.jpg
    Co dziwne, udaje się wypełnić cały...ale to chyba ze względu na cykliczne wysyłanie tej funkcji w pętli for (sprawdzić muszę jak to będzie wyglądało przy wysłaniu tylko raz).
    Gdy wyślę dwie komendy fill_screen (dla sprawdzenia o różnym kolorze), to druga połowa wypełnia się drugim kolorem. Więc wygląda na to, że 132*176 w pętli for to połowa. No ale jak dam 132*176*2, to nic się nie rysuje (random screen po inicjacji pozostaje).
    Natomiast gdy miałem w pętli po kolei zapełnianie kolorami 0-255 (można inny zakres?) to...polecam filmik:
    http://www.youtube.com/watch?v=ytKgHUcygOU
    Czyli kolory niby prawidłowo się scrollują(taki efekt wychodzi ;)), ale mają dwa "odcienie", bo znów coś jest nie tak przy przejściu przez środek. Jakieś pomysły?

    Nie działają również komendy do włączania i wyłączania LCD. Sekwencja ostatecznie odłączająca LCD działa, aczkolwiek nie udaje jej się w pełni wygasić wyświetlacza przed odcięciem zasilania (ale lepsze to od ręcznego rozłączenia).

    Mam jeszcze pytanie odnośnie trybów wyświetlania. 8 bit, 16 bit, 8 color, 65k color. O co w nich chodzi? 65k to nie 16 bit? Jakieś objaśnienia mile widziane. Bo w sumie póki co nie korzystam z nich (nawet nie wiem czy działają u mnie).

    To chyba wszystko. Załączam oczywiście kod:
    http://pastebin.com/R4zBKssR

    Korzystam z Arduino UNO. W zasadzie nic to nie zmienia w uC, którym jest ATMEGA328. Kwestia gotowych bibliotek do obsługi (to tak dla informacji, żeby nikt się nie czepiał "co to jest?!")

    Info: funkcja initialization() jest napisana przeze mnie, setup() to funkcja Arduino, która wykonuje się RAZ po starcie, natomiast loop() jest również funkcją od Arduino, ale działa ona w pętli (czyli taki zwykły while).

    [EDIT]
    Ok. Znów dzięki pomocy kolegi snnaap udało się ogarnąć sprawę. Wszystko przez to, że próbowałem słać po SPI dwa bajty, a nie jeden...
    No ale świeżak jestem - mam prawo być debilem : D
  • #343
    inspector_electro
    Level 22  
    Witam
    Posiadam LCD zmontowany wg. tej strony
    http://www.superkranz.de/christian/S65_Display/DisplayIndex.html
    Wgrywam pliki do atmegi także z tej strony plik simple.hex
    Niestety nic sie na lcd nie dzieje,mruga tylko dioda przy atmedze.Dodam że to jest atmega 8 ,posiadam Bascoma ale kompletnie nie wiem od czego zacząć.
    Pliki wgrywam MKavrCALCulatorem.
    Mam jeden pliczek .bas co nieco w nim pozmieniałem ,ale lcd nie startuje.Ma ktoś może z Was jakiś start pod megę8 i lcd siemensa?(epson).
  • #344
    Freddy
    Level 43  
    Napisz jeszcze który masz wyświetlacz, bo wróżki są jeszcze na urlopie.
  • #346
    Freddy
    Level 43  
    inspector_electro wrote:
    Jakie wróżki? :| przecież napisałem że to epson.Jego symbol to: L2F50126.

    ... a gdzie użyta biblioteka ? - komendy w Bascomie nie wyrobią się.
    Masz w załączniku sprawdzoną bibliotekę i przykład użycia.
    Code: vbnet
    Log in, to see the code
  • #347
    inspector_electro
    Level 22  
    Kurcze, chyba nie sprawdzę tego. Podejrzewam, że ubiłem megę :cry: .
    Niepotrzebnie zaznaczyłem fusebity i teraz mam brak odzewu od procka.

    Znalazłem fusebit doctora. Mam pytanie - czy do naprawy fusebitów wystarczy zmontowanie wtyczki pod COM1 i MAX232?

    Już z tym sobie poradziłem.
    Gdy próbuję skompilować tą bibliotekę, wywala mi dwa błędy w pierwszym wierszu.
    Nie bardzo wiem czemu...

    LCD od S65 sterowany przez ATmega16.
  • #349
    mariuz
    Level 31  
    Skasuj cały początek aż do wiersza History (razem z nim).

    Chociaż jak wrzuciłem do folderu LIB bibliotekę bez żadnych zmian i skompilowałem przykład to jedyny błąd jaki mi wyskoczył to ograniczenie kodu wynikowego do 4kB...
  • #351
    mariuz
    Level 31  
    Ale właściwie dlaczego próbujesz kompilować bibliotekę? To wrzucasz do folderu LIB Bascoma i zapominasz. Potem używasz w programie tylko jej poleceń jak w przykładzie Freddy'ego z postu #346
  • #352
    inspector_electro
    Level 22  
    Ehhh chodzi mi oto ,że nie ogarniam na razie programowania.Chciałbym odpalić ten lcd ,aby po tym zmieniać odpowiednio komendy itd. a do tego potrzebna mi jest startowa biblioteka np. >bas ,aby potem zrobić konwersję na hexa.Po prostu jestem zielony.Naukę chcę podjąć w sposób prób i błędów , dodając odejmując w wierszach komend i.t.d.Wcale nie sugeruję aby ktoś na siłę DAŁ mi gotowca.Ja tylko chcę odpalić lcd i się uczyć na próbach.
  • #353
    mariuz
    Level 31  
    No to jeżeli nie ogarniasz to nie rzucaj się od razu na głęboką wodę. Zrób tak jak napisałem - wrzuć bibliotekę do odpowiedniego folderu, potem albo skompiluj kod od Freddy'ego, albo na jego podstawie pisz po kawałku własny. Niskopoziomową obsługą lcd jeszcze zdążysz się zająć. I zapewne do tego czasu porzucisz bascoma na rzecz C.
  • #356
    Freddy
    Level 43  
    Człowieku, zróbże wreszcie według moich i innych wskazówek i nie kombinuj.
    Kazałem Ci zastosować bibliotekę, którą dostarczyłem, inni radzą to samo - i co ? dalej nic. Nie raczyłeś zrobić nic !
  • #358
    inspector_electro
    Level 22  
    Freddy ten kod od Ciebie wklejam w okno jako nowy plik.Tworzy mi się noname.bas .
    Noname.bas kompiluję. Czy prawidłowo? czy cały czas coś paprzę? aha i ten plik który mi podałeś LCD_epson.....LBX wrzuciłem do katalogu LIB.
    Nie wiem co robię nie tak.
    Eh w końcu coś wyświetlił ten lcd.ekran jest cały w kolorowych pixelach ,po zapodaniu tego kodu testowego:

    ' ------------------------------------------------------------------------------
    ' TEST lcd siemens s65
    ' ------------------------------------------------------------------------------
    $lib "LCD-EPSON_L2F50_C.LBX"
    $regfile = "m8def.dat"
    $crystal = 8000000

    $baud = 19200


    Config Graphlcd = Color , Controlport = Portc , Cs = 3 , Rs = 5 , Scl = 2 , Sda = 1 , Reset = 4

    Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Disconnect , Prescale = 1
    Pwm1a = 240
    Dim Ya As Long


    '16Bit Color -> RRRRRGGGGGBBBBB
    Const Lila = &B1111100000011111
    Const Blue = &B0000000000011111
    Const White = &HFFFF
    Const Black = &H0000
    Const Rot = &B1111100000000000
    Const Gruen = &B0000011111100000
    Const Cyan = &B0000011111111111
    Const Gold = &B1111111111100000
    Const Grau = &B1111111111110110
    Const Hgelb = &B1111011110101000
    Const Dgelb = &B1111011111010000

    Const X = 176
    Const Y = 132

    Cls

    Ggg:

    Showpic 0 , 22 , Plaatje
    Wait 2
    Showpic 0 , 22 , Plaatje1
    Wait 2
    Goto Ggg
    End

    Plaatje:
    $bgf "mcse.bgc"

    Plaatje1:
    $bgf "Font8x8.font"

    Powiedzcie co jest nie tak ,i jak wyświetlić jakiś text ,jak wstawić pod ten kod?
  • #359
    Freddy
    Level 43  
    Obrazek masz ?
    Fonty 8x8 masz ?
    Pokaż schemat podłączenia, tylko nie link do strony, tylko rzeczywisty Twój.
  • #360
    inspector_electro
    Level 22  
    Witam
    W końcu sobie jakoś poradziłem.Lcd miałem podpięty wg.strony:
    http://www.superkranz.de/christian/S65_Display/DisplayIndex.html
    Niestety dla mojego lcd to zła konfiguracja.
    Rezystory 470 miałem ,ale 610 om już nie więc dałem takie jakie miałem czyli SMD 820 om.Przy tej konfiguracji miałem kolorowy śnieg.Odpiąłem te 810 om od masy i dałem je bezpośrednio zn. szeregowo do lcd ,bez dzielenia napięcia.Lcd wstał ,wyświetla.Teraz spróbuję zrobić jakąś przetworniczkę z 5v na powiedzmy 11, 12v do podświetlenia lcd.Oprogramowaniem zajmę sie, jak zrobie podświetlenie.
    LCD od S65 sterowany przez ATmega16. LCD od S65 sterowany przez ATmega16.