реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> ARM и OLED display
glebka
сообщение Jun 20 2007, 15:42
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 199
Регистрация: 22-06-05
Пользователь №: 6 217



Надо заставить работать связку SAM7 и OLED дисплей с внутренностями Solomon SSD0323.Если кто встречался, порекамендуйте направление, а то даташит на дисплей не дает полной инфомации что и как.
Go to the top of the page
 
+Quote Post
a3r3
сообщение Jun 20 2007, 22:47
Сообщение #2


Частый гость
**

Группа: Новичок
Сообщений: 84
Регистрация: 24-05-07
Пользователь №: 27 947



Это не Pictiva, часом? Цеплял их модуль 96x64 к LPC2106. Если есть вопросы - обращайтесь.
Go to the top of the page
 
+Quote Post
glebka
сообщение Jun 21 2007, 06:00
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 199
Регистрация: 22-06-05
Пользователь №: 6 217



Да это PICTIVA, OLED я написал , чтобы побольше людей заглянуло smile.gif .Сражаюсь третий день, Не могу точку нарисовать точку, получается какой-то снег.Как инициализировать взял из даташита, всё что можно найти в интернете по поводу SSD0323, вроде всё делаю правильно.Если не жалко поделится кодом буду весьма признателен.
Go to the top of the page
 
+Quote Post
a3r3
сообщение Jun 21 2007, 08:28
Сообщение #4


Частый гость
**

Группа: Новичок
Сообщений: 84
Регистрация: 24-05-07
Пользователь №: 27 947



Вот мой код:

Код
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;
}


Экран полностью хранился в ОЗУ, так что процедуры "нарисовать точку" нет, можно только обновить все.
Go to the top of the page
 
+Quote Post
glebka
сообщение Jun 21 2007, 17:04
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 199
Регистрация: 22-06-05
Пользователь №: 6 217



Спасибо, очень интересная идея.Попробую где-нибудь использовать.Нашел устройство с таким же дисплеем, но с микро от SilLab. Сражался весь день, но добился зажигать и тушить по пикселе(ю?) smile.gif ,вообщем пока плата с SAM прийдёт, будем хоть что-то иметь.Осталось понять принцип работы вывода буквы, а потом текста smile.gif
Go to the top of the page
 
+Quote Post
RES-
сообщение Jul 11 2007, 09:46
Сообщение #6





Группа: Новичок
Сообщений: 1
Регистрация: 11-07-07
Пользователь №: 29 056



Здравствуйте!

А не подскажете где Pictiva покупали? Что-то не могу найти в розницу, всё какие то промышленные масштабы кругом..
Go to the top of the page
 
+Quote Post
a3r3
сообщение Jul 11 2007, 10:16
Сообщение #7


Частый гость
**

Группа: Новичок
Сообщений: 84
Регистрация: 24-05-07
Пользователь №: 27 947



По-моему, в КТЦ-МК. Но покупал не я, и это было довольно давно.
Go to the top of the page
 
+Quote Post
Otto Stirliz
сообщение Mar 24 2008, 15:41
Сообщение #8





Группа: Участник
Сообщений: 3
Регистрация: 24-03-08
Пользователь №: 36 191



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


Вообще-то, точки тоже можно выводить. Стандартно, т.е. вычитав с памяти дисплея байт и заменив в нем пиксель.
А играться можно и в Протеусе - есть модель для OLED:
http://www.tanu-sha.narod.ru/photoalbum.html
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 15th July 2025 - 11:20
Рейтинг@Mail.ru


Страница сгенерированна за 0.01419 секунд с 7
ELECTRONIX ©2004-2016