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


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

11 нравится? 4

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

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

Хочешь почитать ещё про Aliexpress? Вот что наиболее популярно на этой неделе:
И вновь купоны на Aliexpress
Регулируемый преобразователь напряжения на XL4016, 300 ватт
Халява на Aliexpress: бесплатные радиодетали от китайцев на $4



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

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

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

Пользовательские теги: bascom avr работа с дисплеем ssd1306 oled [ Что это? ]

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

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

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


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

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

 20.4 Экономичный измеритель C/ESR с защитой. Версия 3. ...
 16.4 Макетная плата N76E003 и ее программирование
 16.4 дополнение к статье "Дружим программу CANHacker и ...


Рассылка для радиолюбителей


18.1 SIM-карты с безлимитным интернетом
18.6 Powerbank за 321p
11.6 И вновь USB-тестер FNB18






Новые видео: