Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Mikrokontroler a obraz na tv

13 Maj 2010 21:26 2578 18
  • Poziom 18  
    Chciałbym się dowiedzieć czy można za pomocą mikrokontorlera dostać się do tv aby móc wyświetlać obrazy 640*480 pikseli. Jeśli tak prosił bym was o pokazanie jak powinien wyglądać przykładowy kod w bascom'ie.( Kombinuje napisać jakąś prostą grę na mikrokontrolerze cztery przyciski sterujące i obraz jakiś statek który miałby się poruszać.)
  • Poziom 25  
    michalko12 napisał:
    No ale to na monitor a nie tv ;)


    Zajrzałeś do linka, czy tylko przeczytałeś? :P
  • Poziom 18  
    O wielkie dzięki o to mi chodziło. Jeszcze jedno pytanie chciałbym zadać. Jak wygląda sprawa z wyświetlaczami LCD. Tzn chodzi mi o matrycę żeby mieć dostęp do każdego piksela (aby móc wyświetlić jakieś kształty). Czy jest coś takiego w sprzedaży. Czytałem że można wyświetlacz bodajże od jakiejś noki zastosować ale niestety nie zadowala mnie on. Potrzebował bym czegoś większego, nie koniecznie kolorowego. Czy można takie coś kupić i dostać do tego dokumentację?
  • Poziom 27  
    prociomen007 napisał:
    Czytałem że można wyświetlacz bodajże od jakiejś noki zastosować ale niestety nie zadowala mnie on. Potrzebował bym czegoś większego, nie koniecznie kolorowego.
    A jaki by zadowalał? Różowy w niebieskie kropki? Napisz ile ma mieć pikseli, jaki rozmiar mechaniczny i czy ma mieć sterownik czy nie.
  • Moderator Mikrokontrolery Projektowanie
  • Poziom 18  
    Potrzebował bym wyświetlacza porównywalnego do tego używanego w PSP tam jest bodajże 480 x 272. Ale starczyło by coś w granicach 300 x 200 pikseli. Oczywiście wolał bym wyświetlacz z gotowym sterownikiem.

    Dodano po 30 [minuty]:

    Jeszcze jeśli można prosić o jakieś przykładowe kody w c sterowania taką matrycą. Chciałbym się zorientować w temacie. Zdecydowałem się na LGMBG320240F2BFW3V.
  • Pomocny post
    Poziom 43  
    To ma podświetlanie CCFL. Zdecydowaie odradzam.
    A do tego jest drogie.
    Że drogie to rozumiem. Ale jak już chcesz drogie, to weź to:
    http://www.artronic.pl/o_produkcie.php?id=1151?
    Mniej drogie a lepsze. Wszystkich bajerów nie musisz wykożystywać jak by co :D
    Choć trochę mniejsze. Może to dla Ciebie wada.
  • Poziom 18  
    Wielkie dzięki "atom1477" dokładnie o coś takiego mi chodziło (pełna dokumętacja i łatwy w obsłudze) jeszcze jak byś mógł polecić fajny mikrokontroler do tego. Zastanawiałem się nad atmegą128 i podłączyć to w taki sposub:

    LCD / mikrokontroler
    1 / GND
    2 / GND
    3 / +5V
    4 / -9V tu potencjometr
    5 / PORTC.0
    6 / PORTC.1

    7 / PORTC.2
    8 / PORTC.3
    9 / nie podłączone
    10 / PORTC.4
    11-18 / PA
    19 / PORTC.5
    20 / nie podłączone

    i do atmegi wgrywam taki kod:

    Code:


    #include <reg51.h>
    #define uint unsigned int
    #define uchar unsigned char

    sbit CS = P3^2;
    sbit RS = P3^3;
    sbit WRR = P3^4;
    sbit RDD = P3^5;
    sbit RST = P3^6;

    void wcomd(uchar ch)
    {
    CS=0;
    RDD=1;
    RS=0;
    P1=ch;
    WRR=0;
    WRR=1;
    CS=1;
    }

    void wdata(uchar ch)
    {
    CS=0;
    RDD=1;
    RS=1;
    P1=ch;
    WRR=0;
    WRR=1;
    CS=1;
    }
    unsigned char rdata(void)
    {
    uchar ch;
    CS=0;
    WRR=1;
    RS=1;
    P1=0xff;
    RDD=0;
    ch=P1;
    RDD=1;
    CS=1;
    return(ch);
    }
    void waddr(uint xdat,uint ydat)
    {
    uint xxh,xxl;
    xxh=xdat/256;
    xxl=xdat%256;
    wcomd(xxh);
    wcomd(xxl);
    wcomd(ydat);
    }
    void disp_all(uchar xsdata)
    {
    uint j,k;
    waddr(0x00,0x00);
    for(k=0;k<240;k++)
    {
    for(j=0;j<320;j++)
    {
    wdata(xsdata);
    }
    }
    }
    void main(void)
    {
    RST=0;
    delay(50);
    RST=1;
    delay(20);
    while(1)
    {
    disp_all(0xff); delay(200); //white
    disp_all(0x00); delay(200); //black
    disp_all(0xe0); delay(200); //red
    disp_all(0x1c); delay(200); //green
    disp_all(0x03); delay(200); //blue
    disp_all(0xfc); delay(200); //yellow
    }
    }


    Czy dobrze kombinuje?
  • Moderator Mikrokontrolery Projektowanie
    Weź pod uwagę, że to są złożone sterowniki graficzne, które wymagają dosyć skomplikowanej inicjalizacji. Jeśli myślisz, że ot tak wyślesz dane i on je od razu wyświetli to jesteś w błędzie. Poczytaj notę katalogową do użytego kontrolera LCD - nie przez przypadej jest to kilkaset stron.
  • Moderator Mikrokontrolery Projektowanie
    Fakt, wygląda podejrzanie prosto. Większość jakie widziałem miała sterownik ILxxxx, on ma zdecydowanie więcej funkcji, np. sterowanie kontrastem, tryby 8,16,24bpp itd. To miłe zaskoczenie, że ktoś jeszcze projektuje takie proste układziki.
  • Poziom 18  
    A powiedzcie czy istnieje jakaś możliwość przetestowania takich układów i kodów. Tzn. chciałbym sobie napisać kod stworzyć schemat na komputerze i on by zaczął takie urządzenie emulować a ja bym sobie sprawdzał czy należycie działa. Istnieje taka możliwość? Oczywiście cały czas mówię w kategoriach wyświetlaczy.
  • Poziom 27  
    tmf napisał:
    Fakt, wygląda podejrzanie prosto. Większość jakie widziałem miała sterownik ILxxxx, on ma zdecydowanie więcej funkcji, np. sterowanie kontrastem, tryby 8,16,24bpp itd. To miłe zaskoczenie, że ktoś jeszcze projektuje takie proste układziki.
    Akurat ten model przypomina pamięć dwuportową, kiedyś podobny obsługiwałem i rzeczywiście całość była tak bajecznie prosta jak w datasheecie. Jedyny "problem" to było przeliczyć (x,y) na adres komórki pamięci.

    Co do symulacji to proste układy potrafił kiedyś Proteus, ale czy może teraz dodali obsługę graficznych wyświetlaczy to nie wiem.
  • Poziom 9  
    Witam, po długiej przerwie podbijam temat.

    Akurat właśnie bawię się z wyżej wymienionym wyświetlaczem. Kod mam dokładnie taki jak w tym datasheet-cie ze strony artronica, z przeróbką portów aby działało pod Atmegą16. No i na pierwszy rzut oka wszystko ładnie śmiga, gdy używam funkcji wypełnij. Ale problem pojawia się gdy chcę użyć funkcji wypełnienia dowolnego piksela niezależnie. Jak chcę wypełnić pojedynczy piksel to też niby wszystko ok, ale jak już np. użyję pętle for aby wypełnił cały rząd/wiersz to zamiast pojedynczej - ciągłej linii mam pojedynczą linię przerywaną (odstępy mniej więcej jadnakowe). Co może być tego przyczyną i jak to zlikwidować?

    Przedstawię moje kody:

    Code:
    void writeinst(uint dana)
    
       {
          KIERUNEK = 0xff;
          PORTA CLR(CS);
          PORTA SET(RD);
          PORTA CLR(RS);
          
          DATA = dana;
          
          PORTA CLR(WR);
          PORTA SET(WR);
          PORTA SET(CS);
       }
       
       void writedata(uint dana)
       {
          KIERUNEK = 0xff;
          PORTA CLR(CS);
          PORTA SET(RD);
          PORTA SET(RS);
          
          DATA = dana;
          
          PORTA CLR(WR);
          PORTA SET(WR);
          PORTA SET(CS);
       }
    void writeaddr(uint x, uint y)
       {
          uint xh,xl;
          xh = x / 256;
          xl = x % 256;
          
          writeinst(xh);
          writeinst(xl);
          writeinst(y);
       }
       
       void putpixel(uint x, uint y , uint kolor)
       {
          writeaddr(x,y);
          writedata(kolor);
       
       }
    //właściwa funkcja:
          for(;;)
          {
                            for(l=0; l<240; l++)
             {
                putpixel(0, l, 0xff);
                _delay_ms(50);
             }
                    }


    PS: fragmenty typu PORTA CLR(CS); to moje własne napisane dyrektywy #define i one nadzwyczajnie działają (pojedyncze piksele i 1 razowe wypełnienie całości).

    EDIT: teraz dokładnie sprawdziłem ilościowo wyświetlanie pikseli i działa to tak, że kolejne piksele mi wyświetla a następne 4 nie.
  • Poziom 18  
    JkSabre Czy coś nowego w temacie tego LCD "rozgryzłeś" ??

    W temacie "gubienia" - dodaj testowo spowolnienie by wykluczyć zbyt szybkię wysyłanie danych i czy masz zgodnośś przebiegów ( przesunięcia czasowe) najpierw sterowanie - potem dane - jak pokazano w dataszicie tego LCD

    Też na niego się "zaczajam" :-)
  • Poziom 11  
    Mam dokładnie taki sam wyświetlacz. I mam problemy z komunikacją. Udało mi się podłączyć zasilanie i wyświetla mi jakiś szum. Zakładam, że to dobrze. Jednakże nie udało mi się wysłać żadnej komendy do sterownika. Nie udało mi się wywołać żadnej reakcji.
    Może kolega JkSabre byłby tak miły, żeby przesłać schemat Swojego układu łącznie z tym do których pinów przyporządkował sygnały sterujące? Może błędnie steruję sygnałami..
    Z góry dziękuję za pomoc.