OLED SSD1306

В итогде всем остался доволен.
Решил написать пару строк и поделится результатом.

Начну с того, что подобных дисплеев на Aliexpress довольно много.
Отличаются друг о друга — выведенным наружу интерфейсом и небольшой разницей в цене.
Контроллер практически у всех один SSD1306, и сам по себе он поддерживает три вида интерфейса:
— 8-bit 6800/8080-series parallel interface
— 3 /4 wire Serial Peripheral Interface
— I2C Interface
На том что достался мне был только I2C, т.е. на шлейфе остальные интерфейсы конечно же есть, но шлейф хоть и с относительно крупным шагом — найти под него разъем задача не из простых.
Сам контроллер поддерживает питание от 1,65v до 3,3v, но как все разведено на плате переходнике известно одному производителю (в описании пишут 3-5 вольт, есть предположение о том, что SOT-23 с надписью «662k» есть LDO стабилизатор на 3,3).



Четко сфотографировать OLED весьма не просто, авто-фокус от свечения сходит с ума.
Библиотека
Она была в спешке собрана из трех готовых.
Получился обычный набор:
- LCD_init(void);
- LCD_Commmand(uint8_t ControByte, uint8_t DataByte);
- LCD_Goto(uint8_t x, uint8_t y);
- LCD_Print(char c);
- LCD_Printf(char* buf);
- LCD_Clear(void);
- LCD_draw8x8(uint8_t * buffer, uint8_t x, uint8_t y);
- LCD_WakeUp(void);
Шрифт простой и некрасивый, в прочем никто не мешает через тот же "The Dot Factory" использовать свой
uint8_t LCD_Buffer[][ALL_FONTS] = {
{0x00, 0x00, 0x00, 0x00, 0x00},// (space)
{0x00, 0x00, 0x5F, 0x00, 0x00},// !
{0x00, 0x07, 0x00, 0x07, 0x00},// "
{0x14, 0x7F, 0x14, 0x7F, 0x14},// #
/// ......
};
На всякий случай записал сессию логическим анализатором (файл во вложении).


Из диаграммы все должно быть понятно (взята из даташита на SSD1306).
Сперва отсылается байт адреса, затем байт определяющий тип (команда или данные), далее следует — сам байт данных.
I2C используется аппаратный.
Адрес имеющегося I2C дисплея задается перемычкой на стороне Bottom (был выставлен производителем как 0x78 по умолчанию)
Последовательность чтения-записи следующая:
void LCD_Commmand(uint8_t ControByte, uint8_t DataByte)
{
/*!< генерирем START на шине */
I2C_GenerateSTART(SSD1306_I2C, ENABLE);
/* пока мастер все отработает */
while(!I2C_CheckEvent(SSD1306_I2C, I2C_EVENT_MASTER_MODE_SELECT)){};
/* отправляем address */
I2C_Send7bitAddress(SSD1306_I2C, SSD1306_I2C_ADDRESS, I2C_Direction_Transmitter);
/* пока ответит*/
while(!I2C_CheckEvent(SSD1306_I2C, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED)){};
/* байт команды*/
I2C_SendData(SSD1306_I2C, ControByte);
/* готовность */
while(!I2C_CheckEvent(SSD1306_I2C, I2C_EVENT_MASTER_BYTE_TRANSMITTED)){};
I2C_SendData(SSD1306_I2C, DataByte);
/* готовность */
while(!I2C_CheckEvent(SSD1306_I2C, I2C_EVENT_MASTER_BYTE_TRANSMITTED)){};
/* обязательно нужно сгенерировать STOP в конце операции */
I2C_GenerateSTOP(SSD1306_I2C, ENABLE);
}
- +9
- 30 октября 2014, 14:46
- khomin
- 2
Файлы в топике:
ssd1306_log.zip, ssd1306.zip
покупались у этого продавца — http://ru.aliexpress.com/item/5pcs-white-1-3-I2C-IIC-Serial-128X64-12864-OLED-LCD-LED-Display-Module-for-Arduino/1677710132.html
Доехали за 2 недели.
2144 р. / 5 шт. = 428 р. — 1 шт.
Это немного дороже тех, что есть в тере http://www.terraelectronica.ru/news_postup.php?ID=3102&utm_source=%D0%98%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D1%8B%D0%B9+%D0%91%D1%8E%D0%BB%D0%BB%D0%B5%D1%82%D0%B5%D0%BD%D1%8C+%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%B0&utm_campaign=3bc955372f-_44710_13_2014&utm_medium=email&utm_term=0_7e8d429e78-3bc955372f-133785753&mc_cid=3bc955372f&mc_eid=606a17a8e6
Доехали за 2 недели.
2144 р. / 5 шт. = 428 р. — 1 шт.
Это немного дороже тех, что есть в тере http://www.terraelectronica.ru/news_postup.php?ID=3102&utm_source=%D0%98%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D1%8B%D0%B9+%D0%91%D1%8E%D0%BB%D0%BB%D0%B5%D1%82%D0%B5%D0%BD%D1%8C+%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%B0&utm_campaign=3bc955372f-_44710_13_2014&utm_medium=email&utm_term=0_7e8d429e78-3bc955372f-133785753&mc_cid=3bc955372f&mc_eid=606a17a8e6
Насчёт разъёмов — мне один хороший человек рекомендовал посмотреть здесь.
Логично было бы закинуть в «детальку».
но шлейф хоть и с относительно крупным шагом — найти под него разъем задача не из простыхНасколько я вижу, китайцы его тупо припаяли. Можно отпаять и припаять к своей плате — все равно паяный шлейф в разьем может и не влезть. Или можно при помощи скальпеля и эмалированного провода переделать плату под требуемый интерфейс.
есть предположение о том, что SOT-23 с надписью «662k» есть LDO стабилизатор на 3,3)Про него даже писали недавно в «детальке».
Брал такие дисплеи тутYour text to link... и где то еще, ссылка не сохранилась. Во втором случае дисплеи имели 27pin на шлейфе. Разница оказалась только в отсутствии внутри дисплея
преобразователя для подсветки и пришлось изгаляться делать 12в из 3.3
преобразователя для подсветки и пришлось изгаляться делать 12в из 3.3
Вообще-то этот шлейф принципиально под пайку, у него специальные дырки на контактах «разъема» — аккурат посередине пада, для протекания припоя под шлейф при пропайке сверху, конец шлейфа не прямой, а с впадинами, опять же для лучшего припаивания.

Шлейф явно не предназначен для установки его в разъем. Я его припаивал не раз — на шлейфе выше есть два отверстия для правильного позиционирования его на плате, соответственно на плате можно предусмотреть или отверстия или колышки для этого, а паяется шлейф хорошо. Точно также припаиваются и TFT дисплеи с подобными разъмами, например PH12860.

Шлейф явно не предназначен для установки его в разъем. Я его припаивал не раз — на шлейфе выше есть два отверстия для правильного позиционирования его на плате, соответственно на плате можно предусмотреть или отверстия или колышки для этого, а паяется шлейф хорошо. Точно также припаиваются и TFT дисплеи с подобными разъмами, например PH12860.
Прошу прощения за оффтоп, а как по-буржуйски правильно называется паябельный аналог FFC кабеля? Нужно несколько штук заказать, а как поисковик об этом спросить — не знаю…
- SINtheTHICK
- 02 мая 2016, 23:40
- ↑
- ↓
То — чем было под рукой — обычным паялом с коническим жалом. Советую при разводке, если позволяет монтаж, закладывать в плате отверстия под дырки в шлейфе (см выше на фото — на наклонных «плечиках»). Потом перед началом монтажа взять тонкий одножильный провод в изоляции и «привязать» шлейф к плате, пропустив один из концов провода снизу платы вверх сквозь одно из отверстий в плате — потом в соответствующее отверстие в шлейфе — потом во второе отверстие в шлейфе — и через второе отверстие в плате вниз, а внизу связать/скрутить концы вот так:

пайку на той стороне показать не могу — там дисплей приклеен на двусторонний скотч ))

Эта «веревочка» позволит точно спозиционировать шлейф перед пайкой, а потом как-то защитит от случайного отрыва во время отладки платы.

пайку на той стороне показать не могу — там дисплей приклеен на двусторонний скотч ))

Эта «веревочка» позволит точно спозиционировать шлейф перед пайкой, а потом как-то защитит от случайного отрыва во время отладки платы.
Обычным ЭПСНом даже паяются, главное — не перегреть. Все что мне попадались были прекрасно облужены, а отверстия только способствуют затеканию припоя под шлейф и лучшей пропайке.
- SINtheTHICK
- 02 мая 2016, 23:44
- ↑
- ↓
Дисплеи классные. Не знаю, как они в плане долговечности работы. Но по первым впечатлениям очень понравились. Обновляются через SPI быстро, вполне можно анимацию выводить, тем более инерционности нету. Выглядит красиво. Жаль только мелкие очень.
И для информации. Если кому удобнее, они есть на DX.com, как с платой, так и отдельно. Я взял один на плате, для макетирования, и 3 штуки голых, на припаивание.
И для информации. Если кому удобнее, они есть на DX.com, как с платой, так и отдельно. Я взял один на плате, для макетирования, и 3 штуки голых, на припаивание.
хорошая штука, поднял его в uGFX+Chibios. Хочу для домашней метеостанции приспособить
- DeusExMachina
- 20 декабря 2014, 16:06
- ↓
Комментарии (23)
RSS свернуть / развернуть