ssd1306 кто имел дело с ним отзовитесь.

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ответить
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 183
Зарегистрирован: Ср янв 25, 2012 07:26:40

Сообщение acckyiboxxx »

подключаю девайс к 16-й меге и не могу понять почему дисплей не хочет работать, выдает либо "звездное небо" сразу после инициализации и потом реагировать ни на что не желает , либо вообще полная тишина

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

с подобной проблемой похоже человек уже сталкивался http://arduino.ru/forum/programmirovanie/oled-ssd1306 только вот как победил - неясно , пробовал взять из его кода инициализацию дисплея но не спасло, с ней он просто молчит и ни на что не реагирует

буду благодарен за любую полезную информацию

ps: ниже прикладываю файл со схемой подключения
Вложения
MOD-OLED-128x64.pdf
(33.3 КБ) 217 скачиваний
Реклама
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 183
Зарегистрирован: Ср янв 25, 2012 07:26:40

Сообщение acckyiboxxx »

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

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

void init_3(void){
	_delay_us(10);
	display_send_command(0xAE); // Выключить дисплей
	_delay_ms(200);
	display_send_command(0x00); // Установка начального столбца для вывода
	display_send_command(0x10);
	display_send_command(0x40); // Установка начальной строки в RAM
	display_send_command(0x81); // Установка контрастности
	display_send_command(0xCF); // От 1 до 256 (0х01 - 0х100)
	display_send_command(0xA0); // Развертка: А0 - справа/налево; А1 - слева/направо.
	display_send_command(0xA6); // А6 - нормальное изображение (лог.1 в RAM - светится пиксель на экране); А7 - инверсное.
	display_send_command(0xA8); // Multiplex ratio
	display_send_command(0x3F); // от 16 до 64
	display_send_command(0xD3); // Смещение изображения на дисплее (Offset)
	display_send_command(0x00);
	display_send_command(0xD5); // Частота обновления экрана
	display_send_command(0x80);
	display_send_command(0xD9); // DC/DC преобразователь
	display_send_command(0xF1); // 0х22 - Vcc подается извне; 0xF1 - внутренний
	display_send_command(0xDA); // Конфигурация COM
	display_send_command(0x12);
	display_send_command(0xDB); // установка Vcomh(влияет на яркость)
	display_send_command(0x30); // 0x00 - 0,65Vcc; 0x20 - 0,77Vcc; 0x30 - 0,83Vcc
	display_send_command(0x8D); // Управление внутренним преобразователем
	display_send_command(0x14); // 0х10 - отклычить (Vcc внешнее); 0х14 - включить (внутренний DC/DC)
	display_send_command(0x20); // Установить вариант адресации RAM
	display_send_command(0x00); // 0x00 - горизонтальная с переходом на следующую страницу
	display_send_command(0xAF);// Включить дисплей
	_delay_ms(200);
}
если убрать все вызовы _delay_ms(200); то код прекратит работать , пробовал добавить задержки так-же и во все другие места куда только можно - не помогло, значит проблема в чем-то еще
Реклама
Друг Кота
Сообщения: 19495
Зарегистрирован: Чт фев 20, 2014 18:57:55

Сообщение Morroc »

Попробуйте поискать библиотеку MicroLCD, у меня с ней заводился похожий sh1106 и ssd1306 если не путаю с желтой полосой пикселей вверху экрана.
"Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
Ответить

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