Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ARM и OLED display
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
glebka
Надо заставить работать связку SAM7 и OLED дисплей с внутренностями Solomon SSD0323.Если кто встречался, порекамендуйте направление, а то даташит на дисплей не дает полной инфомации что и как.
a3r3
Это не Pictiva, часом? Цеплял их модуль 96x64 к LPC2106. Если есть вопросы - обращайтесь.
glebka
Да это PICTIVA, OLED я написал , чтобы побольше людей заглянуло smile.gif .Сражаюсь третий день, Не могу точку нарисовать точку, получается какой-то снег.Как инициализировать взял из даташита, всё что можно найти в интернете по поводу SSD0323, вроде всё делаю правильно.Если не жалко поделится кодом буду весьма признателен.
a3r3
Вот мой код:

Код
u_char frame0[0xc00];


void disp_refresh(void)
{
    u_int a;
    u_char *fptr = frame0;

    disp_write(0x00, 0x15);        // Set Column Address
    disp_write(0x00, 0x00);        // 0
    disp_write(0x00, 0x2f);        // +1 = 96/2

    disp_write(0x00, 0x75);        // Set Row Address
    disp_write(0x00, 0x00);        // 0
    disp_write(0x00, 0x3f);        // +1 = 64
    
    IOCLR = DISP_RW + DISP_E;
    IOSET = DISP_RS;
    IODIR |= DISP_DBUS;
    a = 0x00;
    do
    {
        IOCLR = DISP_DBUS + DISP_CS;
        IOSET = ((*fptr++ & 0xff) << 0x10) + DISP_E;
        IOCLR = DISP_E;
        IOSET = DISP_CS;
    } while(++a != 0xc00);
}

void disp_clear(void)
{
    u_int a;

    a = 0x00;
    do
    {
        frame0[a] = 0x00;
    } while(++a != 0xc00);
}

void disp_ini(void)
{
    u_int a;

    IOCLR = DISP_RS + DISP_RW + DISP_E + DISP_RST;
    IOSET = DISP_CS + DISP_PEN;
    IODIR |= DISP_CTL + DISP_DBUS;

// Delay
    a = 0x00;
    while(++a != 0x10000);

    IOSET = DISP_RST;

// Delay
    a = 0x00;
    while(++a != 0x10000);

    disp_write(0x00, 0xa8);        // Set Multiplex Ratio
    disp_write(0x00, 0x3f);        // 64 Lines

    disp_write(0x00, 0x15);        // Set Column Address
    disp_write(0x00, 0x00);        // 0
    disp_write(0x00, 0x2f);        // +1 = 96/2

    disp_write(0x00, 0x75);        // Set Row Address
    disp_write(0x00, 0x00);        // 0
    disp_write(0x00, 0x3f);        // +1 = 64

    disp_write(0x00, 0xa0);        // Set Re-map
    disp_write(0x00, 0x40);        // Enable COM Split Odd Even

#ifdef    HIGH_BRIGHTNESS
    disp_write(0x00, 0x86);        // Set Full Current
    disp_write(0x00, 0x81);        // Set contrast
    disp_write(0x00, 0x7f);        // 127
#endif

/*
    disp_write(0x00, 0xb3);        // Set freq.
    disp_write(0x00, 0x02);        //
*/

    disp_clear();            // Clear Display Data
    disp_refresh();

    disp_write(0x00, 0xaf);        // Display ON
}

void disp_write(u_int addr, u_int data)
{
    IOCLR = DISP_DBUS + DISP_RS + DISP_RW + DISP_E;
    if(addr) IOSET = DISP_RS;
    IODIR |= DISP_DBUS;
    IOCLR = DISP_CS;
    IOSET = ((data & 0xff) << 0x10) + DISP_E;
    IOCLR = DISP_E;
    IOSET = DISP_CS;
}


Экран полностью хранился в ОЗУ, так что процедуры "нарисовать точку" нет, можно только обновить все.
glebka
Спасибо, очень интересная идея.Попробую где-нибудь использовать.Нашел устройство с таким же дисплеем, но с микро от SilLab. Сражался весь день, но добился зажигать и тушить по пикселе(ю?) smile.gif ,вообщем пока плата с SAM прийдёт, будем хоть что-то иметь.Осталось понять принцип работы вывода буквы, а потом текста smile.gif
RES-
Здравствуйте!

А не подскажете где Pictiva покупали? Что-то не могу найти в розницу, всё какие то промышленные масштабы кругом..
a3r3
По-моему, в КТЦ-МК. Но покупал не я, и это было довольно давно.
Otto Stirliz
Цитата(glebka @ Jun 21 2007, 21:04) *
Спасибо, очень интересная идея.Попробую где-нибудь использовать.Нашел устройство с таким же дисплеем, но с микро от SilLab. Сражался весь день, но добился зажигать и тушить по пикселе(ю?) smile.gif ,вообщем пока плата с SAM прийдёт, будем хоть что-то иметь.Осталось понять принцип работы вывода буквы, а потом текста smile.gif


Вообще-то, точки тоже можно выводить. Стандартно, т.е. вычитав с памяти дисплея байт и заменив в нем пиксель.
А играться можно и в Протеусе - есть модель для OLED:
http://www.tanu-sha.narod.ru/photoalbum.html
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.