9zip.ru - технологии для людей
9zip.ru Радиодетали и модули с Aliexpress OLED дисплеи 128*64 и 128*32

Казалось бы, всем хороши ставшие стандартными символьные ЖК-дисплеи 16*2 и подобные. И подключаются легко, и программируются. Но иногда требуется альтернатива. Например, если делается какое-то очень компактное устройство, то обычный символьный дисплей в него может попросту не поместиться при его-то габаритах. Остаётся применить только какой-нибудь дисплей от кнопочного мобильного телефона или посмотреть, а что же есть на Aliexpress. Дисплеи от телефонов там тоже имеются, причём новоделы. Но есть и специальные, можно сказать, более удобные.

Это - уже знакомые многим модули с OLED-дисплеями с разрешением 128*64 и 128*32 пикселей. Построены они с использованием контроллеров SSD1306. Данные модули - очень компактны, влезут в любой корпус. Да и в бескорпусном устройстве им будет легко найти место. Интерфейс взаимодействия с микроконтроллером - последовательный, i2c. Существуют модули с большим количеством пинов, с ними можно работать через SPI.

OLED дисплеи

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

Глядя на некоторые фотографии этих модулей на Aliexpress, можно подумать, что дисплеи - цветные. Но нет, задавать цвет точек тут нельзя. Просто бывают такие разновидности этих экранов, у которых пиксели верхней четверти экрана имеют жёлтый цвет. Остальные же (или все, если экран - без этой жёлтой полоски) - голубые или белые. Ещё SSD1306 умеет изменять контрастность.

ОЗУ контроллера разбито на 8 страниц по 128*8 бит (128 байт) в каждой. Программная часть библиотек очень простая и, в зависимости от потребностей, может быть очень небольшой по объёму кода.

На плате модуля установлен стабилизатор на 3,3 вольта, поэтому питать можно от 5 вольт.

OLED дисплей с i2c

Модуль с дисплеем, имеющим разрешение 128x64, имеет диагональ 0,96" - это примерно 2,5*1,5 см. Некоторые фотографии создают обманчивое впечатление, что дисплей - достаточно большой. Нет, он - очень маленький, зато контрастность - изумительная, что достигается отсутствием подсветки. Пиксели светятся самостоятельно. Модуль с разрешением 128x32 имеет диагональ 0,91" с размерами около 2,5*1 см. Потребление - в районе 20 мА.

Модуль OLED дисплея на контроллере SSD1306

Прилагаются 4 исходника в BASCOM AVR:
  • для 128*64 и 128*32 с использованием библиотеки glcdSSD1306-I2C.lib, вывод графики и текста + 3 шрифта в комплекте
  • Для 128*64 (по аналогии можно доработать и для 128*32) с библиотекой glcdSSD1306-I2C-Buf.lib, организующей буфер изображения в памяти МК. Выводить можно как напрямую на дисплей в реальном времени, так и в буфер, а затем мгновенно перекидывать на экран. Есть функции рисования фигур и изменения контрастности
  • для 128*64 без библиотек, для вывода текста + изменение контрастности
ssd1306_128_32.zip
ssd1306_128_64.zip
ssd1306_128_64_buf.zip
ssd1306_128_64_nolib.bas

А ещё есть полноцветные TFT дисплейчики с SPI.


01 ноября 2020
Новая версия библиотеки: glcdSSD1306-I2C_V2.lib

Добавлена опция для поворота изображения на 180 градусов

Const Ssd1306_rotate = 1 'поворот изображения [кабель дисплея внизу = 0, вверху = 1]

В инструкцию "GLCDCMD" добавлен байт управления

Нормальный/инверсный дисплей [A6:нормальный , A7:инверсный]
Дисплей вкл/выкл [AE:выкл(спящий режим) , AF:вкл(дисплей включен)]


Можно изменять контрастность
_contrast = 0 : Glcdcmd &H81 'изменение контрастности дисплея [0:dark - 255:bright]

В инструкцию "LCDAT" добавлена опция подчёркивания [2:линией , 3:точками]

Исходник для тестирования новых возможностей библиотеки

$regfile = "m88pdef.dat"
$hwstack = 32
$swstack = 32
$framesize = 32
$crystal = 8000000
Config Clockdiv = 1 ' МК работает на частоте 8 МГц

Config Scl = Portc.5 ' используемые i2c выводы МК
Config Sda = Portc.4
Config Twi = 400000 ' скорость i2c

I2cinit

$lib "i2c_twi.lbx" ' используем TWI вместо программно эмулируемого I2C
$lib "glcdSSD1306-I2C_V2.lib" ' заменяем дефолтную библиотеку на glcdSSD1306-I2C_V2.lib

#if _build < 20784
Dim ___lcdrow As Byte , ___lcdcol As Byte ' для старых версий компилятора
#endif

Dim _contrast As Byte ' значение контрастности дисплея [0-255]
'Const Ssd1306_rotate = 1 ' поворот экрана [кабель снизу = 0, кабель сверху = 1]
Config Graphlcd = Custom , Cols = 128 , Rows = 64 , Lcdname = "SSD1306"
Cls

Setfont Font8x8tt ' выбираем шрифт

Do
Lcdat 1 , 1 , "BASCOM-AVR"
Lcdat 2 , 10 , "1995-2015"
Lcdat 3 , 5 , "MCS Electronics" , 1 ' Опционально инвертирование
Lcdat 5 , 1 , " ABCDefg012345678 " , 2 ' Опционально подчёркивание чертой
Lcdat 7 , 1 , " ABCDefg012345678 " , 3 ' Опционально подчёркивание точками
Wait 3

Glcdcmd &HA7 ' Нормальный/инверсный дисплей [A7:инверсный]
Wait 3
Glcdcmd &HA6 ' Нормальный/инверсный дисплей [A6:нормальный]
Wait 3

_contrast = 0 : Glcdcmd &H81 ' Изменяем контрастность [0:тёмный - 255:светлый]
Wait 3
_contrast = 255 : Glcdcmd &H81 ' Изменяем контрастность [0:тёмный - 255:светлый]
Wait 3

Glcdcmd &HAE ' Вкл/выкл дисплей [AE:Выкл(спящий режим) , AF:Вкл(экран включен)]
Wait 3
Glcdcmd &HAF ' Вкл/выкл дисплей [AE:Выкл(спящий режим) , AF:Вкл(экран включен)]
Wait 3

Showpic 0 , 0 , Plt
Wait 3
Cls
Loop

End

$include "font8x8TT.font" ' true type шрифт с разной шириной символов

Plt:
$bgf "ks108.bgf"
' подгружаем изображение

glcdSSD1306-I2C_V2.zip


комментировать

28 нравится? 9


18.02.2018 © 9zip.ru
Авторские права охраняет Роскомнадзор

Понравилась статья?
Винни Пух говорит:
поделись с друзьями!

Хочешь почитать ещё про Aliexpress? Вот что наиболее популярно на этой неделе:
И вновь купоны на Aliexpress
Халява на Aliexpress: бесплатные радиодетали от китайцев на $4
Диоды FR207, FR307 для снабберов обратноходовых преобразователей



Есть вопросы, комментарии? Напиши:

Имя
Комментарий
Длина текста:
число с картинки
Правила прочитал(а)
Как вставить картинку в свой комментарий?

iranian boy28 ноя 2022 1:25
thank you bro

LA09 сен 2022 17:09
В данном дисплее нет шрифтов, он графический. Все шрифты для вывода на экран текста несёт микроконтроллер.

Андрей Мельник08 сен 2022 18:32
Не понял! Так изночально шрифты в ssd1306 есть? Или меется в ввиду что шрифты есть в прошивке для attiny85?

LA08 сен 2022 13:18
Это графический дисплей. Шрифты хранятся в прошивке микроконтроллера.

Андрей Мельник08 сен 2022 9:06
Скажите пожалуйста дисплей 128×32 изначально не может отображать текст и цифровую информацию? Как можно установить библиотеки с шрифтами? Куда они должны загружаться в мк ssd1406 или мк attiny85?

Orkun06 июл 2020 16:29
Hello,

In the program I compiled with ssd1306-i2c-buf.lib, there is flickering on the screen and there is a distorted image in the last line on the screen.

When I try the test software with the ssd1306-i2c.lib library, there is no flickering or distortion on the last line on the screen.

I am waiting for your advice. Thank you.

Have a nice day.

ta1sor

Пользовательские теги: glcdssd glcdssd1306-i2c.lib [ Что это? ]

Дальше в разделе Радиодетали и модули с aliexpress: TP5000, зарядка для Li, LiFePO4 и NiZn, Зарядное устройство для никель-цинковых батарей на основе простого модуля зарядки на tp5000 для литиевых и литий-железо-фосфатных аккумуляторов.

Главная 9zip.ru База знаний радиолюбителя Контакты
Девять кучек хлама:

Радиотехника, электроника и схемы своими руками Ремонт домашней электроники Виртуальный музей старых радиодеталей XX века Ламповый звук hi-end и ретро электроника Катушки Теслы Радиодетали и модули с Aliexpress Интернет и сети, компьютеры и программы Категория свободна Инструкции


Дайджест
радиосхем

Новые схемы интернета - в одном месте!

 17.6 IPS дисплей на ILI9488
 6.6 Игра «Змейка» на графическом дисплее
 6.6 Электрический обогреватель Ballu Plaza Ext ...

Задай вопрос радиолюбителям!


11.6 Древняя трухлявая опора угрожает упасть на крышу ...
1
4.3 Есть старая эпоксидка, двухкомпонентная, ...
4
2.6 китайский блок питания MAISHENG DC POWER SUPPLY ...
1