граф. дисплей WG12232E

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ответить
Serega_FOX
Родился
Сообщения: 4
Зарегистрирован: Вс авг 07, 2022 12:41:32

граф. дисплей WG12232E

Сообщение Serega_FOX »

Доброго времени суток Коты.Вопрос про дисплейчик WG12232E от компании WINSTAR.
Кто пробывал его подключать к ардуинке, какие подводные камни , нюансы или танцы с бубном мне предстоит пройти при подключении?
Реклама
Аватара пользователя
MLX90640
Опытный кот
Сообщения: 848
Зарегистрирован: Ср авг 03, 2022 05:22:56

Re: граф. дисплей WG12232E

Сообщение MLX90640 »

Да какие нюансы, всё стандартно, как и у аналогичных других графических винстаров. Контроллер похож на KS107/108, то есть с разделением на левую и правую половинки экрана - с 1 до 61 и с 62 по 122 столбец выбираются пинами CS1 и CS2. То есть, так же как и у Винстаров размером 128х64. Если драйвер будете писать сами, учитывайте это. Если нет, берите готовый и не заморачивайтесь.
Подключение дисплея - по схеме из даташита. Проводки то сумеете соединить?

Кстати... По-моему, он трехвольтовый? Чет не помню, у меня лежит такой, но лет 5 не использовал, уже и не помню.
Реклама
Serega_FOX
Родился
Сообщения: 4
Зарегистрирован: Вс авг 07, 2022 12:41:32

Re: граф. дисплей WG12232E

Сообщение Serega_FOX »

Проводки то соединить смогу,))только проблемы с инициализацией ентого чуда....я понял что нужно выставлять определенные тайминги при запуске и плясать от пина RESET? И да, она 5 вольтовая,на подсветку 4.2 вольта мах.Не знаю с чего начать написание скетча, библиотеки какие нужны? в инете почти все перерыл,очень мало полезной инфы,хотябы пример скетча хрен найдешь....
А подключается несложно....
Изображение


[uquote="MLX90640",url="/forum/viewtopic.php?p=4269984#p4269984"]Контроллер похож на KS107/108, то есть с разделением на левую и правую половинки экрана - с 1 до 61 и с 62 по 122 столбец выбираются пинами CS1 и CS2. То есть, так же как и у Винстаров размером 128х64. Если драйвер будете писать сами, учитывайте это. Если нет, берите готовый и не заморачивайтесь.
Подключение дисплея - по схеме из даташита. Проводки то сумеете соединить?

Кстати... По-моему, он трехвольтовый? Чет не помню, у меня лежит такой, но лет 5 не использовал, уже и не помню.[/uquote]

Немного порывшись по контроллерам Винстаров, определил что это чудо работает на контроллере SBN1661G ( SED1520),но библиотеки для него очень старые, аж 2008 года,например GLCD. Неподдерживаются на новых версиях Ардуино IDE .Как вариант скачать версию 1.5.* какую нибудь и пытаться что-то сваять))))
а и да если кому пригодится>> воть....

Изображение Изображение
Да и заморочки с инициализацией никто не отменял)))
Инициализация дисплея:

Подать логический ноль на вывод RES на время не менее 10мкс
Подать логическую единицу на вывод RES
Ожидать сброса бита RESET в байте состояния или выждать не менее 2 мс;
Подать команду снятия флага RMW (END);
Подать команду включения обычного режима работы (Static Drive ON/OFF);
Подать команду выбора мультиплекса (Duty Select);
Подать команду включения дисплея (Display ON/OFF)
как и говорил плясать с RESETа)))

да и если можно просто тупой вопрос, как реализовать стабильные 2 кГц на лапу CL ?( делаем или милисом?)
тупой вопрос потому что незнаю синхронизирована ли частота на этой лапе с функцией чтение\запись в контроллеры дисплея,или она нужна только для самих контроллеров для внутренних операций с его памятью....в 2 словах тикает она и тикает а пишется по вызову доступа .Или это все нужно уместить в цикл с этой частотой?
Serega_FOX
Родился
Сообщения: 4
Зарегистрирован: Вс авг 07, 2022 12:41:32

Re: граф. дисплей WG12232E

Сообщение Serega_FOX »

Если кто занимался с этим дисплеем,скиньте скетч хотя бы для проверки....можно без комментариев в нем и библиотеки какие нужны.....Все что нашел неюзабельно.даже на 1 .6.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
MLX90640
Опытный кот
Сообщения: 848
Зарегистрирован: Ср авг 03, 2022 05:22:56

Re: граф. дисплей WG12232E

Сообщение MLX90640 »

Поищите скетчи по запросу SED1520, раз уж сами написать ну никак. Хотя дисплей то очень примитивный в плане управления. Неужто без скетчей ноги дергать не сможете?
Да, дисплейчик довольно старенький и похож на давно известный KS0107 для WG12864. Ныне с появлением OLED-ов и LCD на интерфейсах SPI и I2C эти старые контроллеры теряют популярность.
Изображение

Организация дисплея - постраничная, 4 страницы по вертикали, по 8 строк в каждой, младший бит в байте отображается вверху (со стороны выводов). По горизонтали дисплей поделен на две половины от 0 до 60 и от 61 до 121 столбец. Эти половины управляются раздельно пинами CS1 и CS2 соответственно.
Интерфейс - 8-битная шина данных/команд, линия A0 переключения "команды/данные" (0 - команды, 1 - данные), линия R/W (чтение/запись), которую можно не использовать, повесив еёйную на землю, и два вывода CS1 и CS2 для записи в левую и в правую половины дисплея (неактивный уровень - 1, запись по переходу из 1 в 0). Пин RESET соедините с ногой сброса микроконтроллера, отдельно управлять ресетом дисплея не нужно. В версии "Е" дисплея есть пин E, его можно соединить с +5V. Пин CL внешнего осциллятора не задействуется.

Переключаете пин A0 в режим приема команд или данных, выводите на 8-битную шину байт команды или данных, выводы CS1 или CS2 переводите из 1 в 0, затем возвращаете обратно в 1.
Когда передаете команды, дергаете одновременно обе CS1 и CS2, управляя одновременно двумя половинками дисплея. Когда записываете данные для картинки, дергаете CS1 для левой половины (X = от 0 до 60) или CS2 для правой половины (X = от 61 до 121).

Инициализация дисплея очень проста и фактически состоит из одного лишь включения. Для этого нужно подать в обе половины команду 0xAF (для выключения - 0xAE).
После команды включения на дисплее появятся случайно зажженные пиксели, поскольку содержимое GRAM не обнуляется. Если ничего не видно, покрутите резистор контраста, подключенный к пину 3 (Vo).

Графическую информацию дисплей принимает при установленном в 1 входе A0 (команды/данные). После каждого принятого байта инкрементируется счетчик столбцов. Счетчик страниц не инкрементируется, поэтому текущую страницу (page) нужно выставлять вручную командой Set Page Address. Всего есть 4 страницы по вертикали (от 0 до 3), по 8 строк в каждой. Принятый байт отображает 8 пикселей по вертикали в текущей странице и столбце, младшим битом вверх (в сторону контактов модуля). По достижении конца столбцов (61 столбец), нужно установить счетчик столбцов снова в 0.
При полной перерисовке кадра вначале выставляете страницу 0 и столбец 0 в обеих половинах дисплея одновременно. Затем переключаете A0 на режим данных и начинаете побайтно передавать графические данные сначала в левую половину дисплея от 0 до 60 столбца, дергая CS1, затем продолжаете в правую половину дисплея столько же, дергая CS2.
Затем командами устанавливаете страницу 1, столбец 0 в обоих половинах одновременно, дергая одновременно CS1 и CS2 и повторяете вывод графических данных. И так все четыре страницы.
Максимальная частота передачи в дисплей (дергания CS1, CS2) - 1 МГц, что навряд ли будет превышено на медленной тормознутой Ардуине.

Поскольку я не работаю с Ардуиной и не знаю, как там всё устроено, то выложу просто порядок действий (написано для STM32). Макросами обозначены действия с пинами (переключение 0/1) и вывод байта выходной порт.
Управление интерфейсом связи:

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

/** -------------------------------------------------------
 * @brief	Посылка команды в дисплей.
 * @details	Команда записывается одновременно в обе половины дисплея.
 * @param cmd - код команды
 */
void SED1520_IO_SendCmd(uint8_t cmd)
{
	A0_CMD()			// переход в режим команд (A0 = 0)

	DATA_OUT(cmd)		// вывод байта в шину данных
	CSC_SEL()			// CS1, CS2 -\_
	CSC_DESEL()			// CS1, CS2 _/-

	A0_DATA()			// завершение режима команд (F0 = 1)
}

/** -------------------------------------------------------
 * @brief	Посылка данных в дисплей.
 * @details	Байт данных записывается по выбору в первую или вторую
 * 			половину дисплея.
 * @param byte - байт данных
 * @param part - выбранная часть дисплея (0 - первая, 1 - вторая)
 * @note	Предполагается, что пин A0 уже переведен в состояние 1 ("данные")
 */
void SED1520_IO_SendData(uint8_t byte, uint8_t part)
{
	DATA_OUT(byte);		// вывод байта в шину данных
	if(part == 0)
		CS1_SEL()		// CS1 -\_
	else
		CS2_SEL()		// CS2 -\_

	CSC_DESEL()			// CS1, CS2 _/-
}
Управление дисплеем:

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

#define POWER_CRTL			0xAE 	// команда управления питанием
#define SET_STARTLINE		0xC0	// команда установки стартовой линии
#define SET_PAGE			0xB8	// команда установки текущей страницы

/** -------------------------------------------------------
 * @brief	Вкл/выкл дисплея.
 * @param on - признак включения (0/1)
 */
void SED1520_Power(uint8_t on)
{
	SED1520_IO_SendCmd(POWER_CRTL | on);
}

/** -------------------------------------------------------
 * @brief	Установка стартовой линии кадра.
 * @param line - номер линии
 */
void SED1520_SetStartLine(uint8_t line)
{
	SED1520_IO_SendCmd(SET_STARTLINE | (line & 0x1F));
}

/** -------------------------------------------------------
 * @brief	Установка номеров страницы и столбца
 * @param page - страница (0 - 3)
 * @param column - столбец (0 - 60)
 */
void SED1520_SetPageAndColumn(uint8_t page, uint8_t column)
{
	if(column > 60) column = 0;
	SED1520_IO_SendCmd(SET_PAGE | (page & 0x03));
	SED1520_IO_SendCmd(column);
}

/** -------------------------------------------------------
 * @brief	Вывод полного кадра в дисплей
 * @param *buf - указатель на буфер данных
 */
void SED1520_FullUpdate(uint8_t *buf)
{
	/* цикл постранично */
	for(uint8_t page = 0; page <= 3; page++)
	{
		/* установка текущей страницы, нулевой столбец */
		SED1520_SetPageAndColumn(page, 0);

		/* вывод в первую половину столбцов */
		for (uint8_t x = 0; x < 61; x++)
		{
			SED1520_IO_SendData(*buf, 0);
			buf++;
		}

		/* вывыо во вторую половину столбцов */
		for (uint8_t x = 0; x < 61; x++)
		{
			SED1520_IO_SendData(*buf, 1);
			buf++;
		}
	}
}
Ну и собственно, включить и вывести подготовленный кадр:

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

	
SED1520_Power(1);
SED1520_FullUpdate((uint8_t*)demo);
Реклама
Serega_FOX
Родился
Сообщения: 4
Зарегистрирован: Вс авг 07, 2022 12:41:32

Re: граф. дисплей WG12232E

Сообщение Serega_FOX »

Спасибо ,вроде разобрался
Реклама
Ответить

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