OLED на WS0010

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Аватара пользователя
BenTech
Встал на лапы
Сообщения: 139
Зарегистрирован: Пн авг 18, 2008 22:08:48
Откуда: г. СПб
Контактная информация:

OLED на WS0010

Сообщение BenTech »

Добрый вечер.

Приглянулся мне дисплей, OLED зеленый. 76*16 точек. Внутри стоит контроллер ws0010 - аналог известного hd44780, но с бонусом - есть графический режим. Вот с этим режимом и проблема, я в упор не могу сообразить, каким образом идет адресация?

Информации мало, нашел одну тему на easyelectronics. Покурил DS + исходники одного проекта под STM32. В итоге дисплей в граф. режиме запустил, и даже нарисовал вот такую вот штуку.

Изображение

Вот адресация в Graphic Mode из DS
Изображение

Вот код пилы. Уже запутался, какие сдвиги для чего.

Код: Выделить всё

void main(void)
{    
DDRB=0xff;	//Инициализация portB
PORTB=0x00; 

/********************************************************

RS  RW  E   D0  D1  D2  D3  D4  D5  D6  D7  -- lcd out
P0  P1  P2  **  **  **  **  P4  P5  P6  P7  -- portb 

*********************************************************/
 LCD_Init();       

LCD_WriteCom(0x08);
LCD_WriteCom(0x1F);
LCD_WriteCom(0x01);
LCD_WriteCom(0x08|0x04);

  

   
    y=0x01;
    LCD_WriteCom(0x40 + 0);
    LCD_WriteCom(0x80 + 0);
    for (x=0;x<76; x++) {
        LCD_WriteData((int)(y&0x00FF));
        if ((x & 0x08) == 0) y <<= 1;
        else          y >>= 1;     
    }        
    

while(1)	
{

}
Заранее спасибо!
Реклама
Аватара пользователя
m.ix
Друг Кота
Сообщения: 16545
Зарегистрирован: Вт сен 07, 2010 03:01:06
Откуда: Moscow-Izmaylovo
Контактная информация:

Re: OLED на ws0010

Сообщение m.ix »

BenTechв
Можешь свой дисплей разобрать и сфоткать?
Лечу лечить WWWашу покалеченную технику.
Реклама
Аватара пользователя
BenTech
Встал на лапы
Сообщения: 139
Зарегистрирован: Пн авг 18, 2008 22:08:48
Откуда: г. СПб
Контактная информация:

Re: OLED на ws0010

Сообщение BenTech »

Не работал бы - разобрал без проблем, у меня не получается прилепить назад токопроводящую резину, чтобы 100% контакт везде был =).

А с какой целью? Там под дисплеем пустая плата. Поскольку он OLED, то даже "ящика" с подсветкой нет =). Вот только с контроллером засада.
Аватара пользователя
m.ix
Друг Кота
Сообщения: 16545
Зарегистрирован: Вт сен 07, 2010 03:01:06
Откуда: Moscow-Izmaylovo
Контактная информация:

Re: OLED на ws0010

Сообщение m.ix »

Спойлертам вроде во всех с резинками проблем ни где не наблюдается.
просто как он выглдит
В магнитолах я видел, могу качественную фотку дать
а вот типа самоделкины - нет
была бы возможность сам бы паказал бы и не спрашивал.
Изображение

http://photos.streamphoto.ru/9/0/1/558a ... b44109.jpg

Изображение

Изображение
Лечу лечить WWWашу покалеченную технику.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Kavka
Мудрый кот
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Re: OLED на ws0010

Сообщение Kavka »

BenTech писал(а):есть графический режим. Вот с этим режимом и проблема, я в упор не могу сообразить, каким образом идет адресация?
Всего 100x16 точек. Адресуются вертикальные колонки по 8 точек (100x2).
По X - адрес DDRAM (0..99). По Y - адрес CGRAM (0..1 +64).
Потом запись байта - 8 точек, сверху бит 0, снизу бит 7.
Всё есть на картинке из спецификации, что вы привели.
Что непонятного то? :)

На сколько я могу судить по коду - по X позиция увеличивается автоматически.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Реклама
Аватара пользователя
Jurkin
Вымогатель припоя
Сообщения: 515
Зарегистрирован: Вт янв 01, 2013 15:51:19
Откуда: Vilnius

Re: OLED на ws0010

Сообщение Jurkin »

...немного не понял, у вас графический дисплей как в приведённой вами ссылке или же алфавитный с возможностью вывода графики? ...это в принципе не одно и то же.
...Если алфавитный то можете посмотреть мой отчётик по эксперементам с графикой. Мой ник там Pajatel.
http://forum.easyelectronics.ru/viewtop ... f=9&t=9727
Реклама
Аватара пользователя
Kavka
Мудрый кот
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Re: OLED на ws0010

Сообщение Kavka »

AFAIK, у ВинСтара есть и графические и символьные на этом контроллере. Отличаются только наличием зазора между участками пикселей соответствующими знакоместу.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Аватара пользователя
BenTech
Встал на лапы
Сообщения: 139
Зарегистрирован: Пн авг 18, 2008 22:08:48
Откуда: г. СПб
Контактная информация:

Re: OLED на ws0010

Сообщение BenTech »

У него два режима, текстовый и графический. Я в графическом хочу получить что-то типа этого. В текстовом нет интервалов(т.к. матрица единая). В графическом текст с-но не выводится(зато можно самому сделать свой шрифт и отрисовать в графике).

Изображение

Jurkin да, как вы сделали эту надпись КАКТОТАК в рамочке? Мне нужно сделать нечто подобное.
Аватара пользователя
Jurkin
Вымогатель припоя
Сообщения: 515
Зарегистрирован: Вт янв 01, 2013 15:51:19
Откуда: Vilnius

Re: OLED на ws0010

Сообщение Jurkin »

BenTech писал(а): Jurkin да, как вы сделали эту надпись КАКТОТАК в рамочке? Мне нужно сделать нечто подобное.
...млин, и куда подевал свои ваяния, хоть убей, не найду. Писал на асме, код вывода там на скока помнится элементарный, сначала даётся адрес с которого места начинать выводить а потом данные типа 1 байт =8ми точкам и кидаешь эти данные подряд , а он их подряд выводит. Если данных больше к примеру чем область вывода то вывод начинается по кругу. Думаю можно даже примитивную мультипликацию делать.
А готовил я данные - рисовал в какойто элементарной проге, типа "Fast LCD Designer"(если не ошибаюсь :) ) Ну сча ещё пороюсь, ну не мог же я намертво всё поубивать...

..ну вот данные похоже нашёл ("как то так")
Вложения
kakToTak.rar
(421 байт) 506 скачиваний
Аватара пользователя
BenTech
Встал на лапы
Сообщения: 139
Зарегистрирован: Пн авг 18, 2008 22:08:48
Откуда: г. СПб
Контактная информация:

Re: OLED на ws0010

Сообщение BenTech »

Jurkin спасибо большое за отзывчивость =).

Помучал еще немного, вылезла еще проблема. В теме на easyelectronics в первом посте есть нюанс со смещением строк.

Код: Выделить всё

    WS0010_Command(0x40 + 0);//установка первой строки
    WS0010_Command(0x80 + 0);//установка в начало строки

    WS0010_Command(0x40 + 1);//установка второй строки
    WS0010_Command(0x80 + 0);//установка в начало строки
Собственно мой код:

Код: Выделить всё

  int cgar[76] = {0xFF,0x81,0x81,0x81,0x81,0x81,0x81,0x81,
                0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,
                0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,
                0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,
                0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,
                0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,
                0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,
                0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,
                0x81,0x81,0x81,0x81,0x81,0x81,0x81,0xFF};


 LCD_Init();
       

LCD_WriteCom(0x08);
LCD_WriteCom(0x1F);
LCD_WriteCom(0x01);
LCD_WriteCom(0x08|0x04);

    LCD_WriteCom(0x40 + 0);//установка первой строки
    LCD_WriteCom(0x80 + 0);//установка в начало строки

    for(x = 0;x<76;x++)
    {
         LCD_WriteData((int)cgar[x]); 

    }
    LCD_WriteCom(0x40 + 1);//установка второй строки
        LCD_WriteCom(0x80 + 0);//установка в начало строки
        
        for(x = 0;x<76;x++)
    {
         LCD_WriteData((int)cgar[x]); 

    }
В итоге такое гадство, первая строка уезжает за край, а со второй все ОК.

Изображение
Аватара пользователя
Jurkin
Вымогатель припоя
Сообщения: 515
Зарегистрирован: Вт янв 01, 2013 15:51:19
Откуда: Vilnius

Re: OLED на ws0010

Сообщение Jurkin »

...не очень шуруплю в Си, но когда я баловался с графикой в асм, никаких проблем со смещением не было. Всё как хотел так и выводилось, другое дело в СИ... может подключаете какую стандатртную библиотеку, а она ужё чёт по своему перетрахивает...

..ну вот нашёл свой кусок кода на асме:

Код: Выделить всё

	LDI temp2,$C8
	LDI R17,$40
	LDI ZL,low(gra*2)
	LDI ZH,high(gra*2)

	RCALL CMD_WR
kr6: LPM R17,Z+
	RCALL DATA_WR
	DEC temp2
	BRNE kr6


gra:
.db $FF,$01,$01,$01,$01,$01,$FD,$FD,$C1,$E1,$3D,$0D,$01,$01,$01,$81,$E1,$FD,$3D,$F9
.db $01,$01,$01,$01,$01,$FD,$FD,$81,$C1,$E1,$1D,$0D,$01,$01,$01,$01,$01,$0D,$0D,$0D
.db $FD,$FD,$0D,$0D,$0D,$01,$F1,$F9,$1D,$0D,$1D,$F9,$F1,$01,$01,$01,$01,$01,$01,$0D
.db $0D,$FD,$FD,$0D,$0D,$0D,$01,$01,$01,$E1,$3D,$79,$E1,$81,$01,$01,$FD,$FD,$01,$C1
.db $7D,$1D,$0D,$01,$01,$01,$FD,$FD,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$FF
.db $FF,$80,$80,$80,$80,$80,$BF,$BF,$81,$80,$9F,$BC,$B0,$80,$B8,$9F,$87,$86,$86,$86
.db $9F,$BC,$B0,$80,$80,$BF,$BF,$83,$81,$87,$BC,$B0,$80,$80,$80,$80,$80,$80,$80,$80
.db $BF,$BF,$80,$80,$80,$80,$8F,$9F,$B8,$B0,$B8,$9F,$8F,$80,$80,$80,$80,$80,$80,$80
.db $80,$BF,$BF,$80,$80,$80,$B0,$BC,$9F,$87,$86,$86,$87,$8F,$BE,$80,$BF,$BF,$87,$83
.db $8F,$9C,$B8,$B0,$80,$80,$B7,$B7,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$FF
...если поясней - передаю команду $40 и после неё 200 штук данных и все дела :)
Аватара пользователя
Kavka
Мудрый кот
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Re: OLED на ws0010

Сообщение Kavka »

BenTech, попробуйте перед установкой первой строки вставить
LCD_WriteCom(0x02);
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Аватара пользователя
BenTech
Встал на лапы
Сообщения: 139
Зарегистрирован: Пн авг 18, 2008 22:08:48
Откуда: г. СПб
Контактная информация:

Re: OLED на ws0010

Сообщение BenTech »

Не помогло. Может быть с контроллером какая неисправность?
Аватара пользователя
Jurkin
Вымогатель припоя
Сообщения: 515
Зарегистрирован: Вт янв 01, 2013 15:51:19
Откуда: Vilnius

Re: OLED на ws0010

Сообщение Jurkin »

...а те данные, что я привёл, если всовываете, тоже всё смещается?
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: OLED на ws0010

Сообщение Gudd-Head »

Прилеплю тему и зацеплюсь. У самого сейчас WEH005016 стоит в разрабатываем девайсе.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
BenTech
Встал на лапы
Сообщения: 139
Зарегистрирован: Пн авг 18, 2008 22:08:48
Откуда: г. СПб
Контактная информация:

Re: OLED на WS0010

Сообщение BenTech »

Хм, вроде получилось. =)

Изображение

Правда пришлось использовать грязный хак, и набить 14 уехавших пикселей 0x00 столбцами.

Код: Выделить всё

	for(x = 0;x<14;x++) {
		LCD_WriteData((int)0x00);  }  
Аватара пользователя
m.ix
Друг Кота
Сообщения: 16545
Зарегистрирован: Вт сен 07, 2010 03:01:06
Откуда: Moscow-Izmaylovo
Контактная информация:

Re: OLED на WS0010

Сообщение m.ix »

Сторонний вопрос
возможно касабелен и этих оледов

если поставлю графический индикатор вместо знако-синтезирующего
работать будет адекватно во втором режиме? не в графическом.
Лечу лечить WWWашу покалеченную технику.
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: OLED на WS0010

Сообщение Gudd-Head »

Писали же, у графического нет места между символами. Так что они будут сливаться:
Изображение
Здесь выведено 2555SAAE

Кстати, этот графический 5016 по размеру 1в1 как символьный 0802.
И ещё, символьный OLED тоже может работать в графическом режиме, у него контроллер WIN0010. Но сам я не пробовал.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
m.ix
Друг Кота
Сообщения: 16545
Зарегистрирован: Вт сен 07, 2010 03:01:06
Откуда: Moscow-Izmaylovo
Контактная информация:

Re: OLED на WS0010

Сообщение m.ix »

Просто хочется где то по дешевше купить хотя бы один (или два) - для посмотреть как это оно там не только снаружи но и в потрахах.
А то не дождёшься.

Это типа графику пытаются изваять на знакосинтезируемых
http://arduino.cc/forum/index.php/topic,44427.0.html
Лечу лечить WWWашу покалеченную технику.
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: OLED на WS0010

Сообщение Gudd-Head »

m.ix писал(а):Это типа графику пытаются изваять на знакосинтезируемых
Фигня. Вот как надо:


А WEG005016 я брал за 300...350 р. (цена от цвета зависила). Ща их вообще ни у кого в наличии не вижу :(
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Ответить

Вернуться в «Периферия»