9zip.ru Радиодетали и модули с Aliexpress OLED дисплеи 128*64 и 128*32
Казалось бы, всем хороши ставшие стандартными символьные ЖК-дисплеи 16*2 и подобные. И подключаются легко, и программируются. Но иногда требуется альтернатива. Например, если делается какое-то очень компактное устройство, то обычный символьный дисплей в него может попросту не поместиться при его-то габаритах. Остаётся применить только какой-нибудь дисплей от кнопочного мобильного телефона или посмотреть, а что же есть на Aliexpress. Дисплеи от телефонов там тоже имеются, причём новоделы. Но есть и специальные, можно сказать, более удобные.
Это - уже знакомые многим модули с OLED-дисплеями с разрешением 128*64 и 128*32 пикселей. Построены они с использованием контроллеров SSD1306. Данные модули - очень компактны, влезут в любой корпус. Да и в бескорпусном устройстве им будет легко найти место. Интерфейс взаимодействия с микроконтроллером - последовательный, i2c. Существуют модули с большим количеством пинов, с ними можно работать через SPI.
В отличие от символьных дисплеев, эти - чисто графические, т.е. никаких встроенных шрифтов тут нет. Это одновременно может являться как минусом, так и плюсом. С одной стороны, нужны процедуры для печати и сами шрифты, с другой - размер шрифта может быть любым, а это иногда весьма удобно.
Глядя на некоторые фотографии этих модулей на Aliexpress, можно подумать, что дисплеи - цветные. Но нет, задавать цвет точек тут нельзя. Просто бывают такие разновидности этих экранов, у которых пиксели верхней четверти экрана имеют жёлтый цвет. Остальные же (или все, если экран - без этой жёлтой полоски) - голубые или белые. Ещё SSD1306 умеет изменять контрастность.
ОЗУ контроллера разбито на 8 страниц по 128*8 бит (128 байт) в каждой. Программная часть библиотек очень простая и, в зависимости от потребностей, может быть очень небольшой по объёму кода.
На плате модуля установлен стабилизатор на 3,3 вольта, поэтому питать можно от 5 вольт.
Модуль с дисплеем, имеющим разрешение 128x64, имеет диагональ 0,96" - это примерно 2,5*1,5 см. Некоторые фотографии создают обманчивое впечатление, что дисплей - достаточно большой. Нет, он - очень маленький, зато контрастность - изумительная, что достигается отсутствием подсветки. Пиксели светятся самостоятельно. Модуль с разрешением 128x32 имеет диагональ 0,91" с размерами около 2,5*1 см. Потребление - в районе 20 мА.
Прилагаются 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 Авторские права охраняет Роскомнадзор
| Понравилась статья? Винни Пух говорит: поделись с друзьями! |
|
В данном дисплее нет шрифтов, он графический. Все шрифты для вывода на экран текста несёт микроконтроллер.
Не понял! Так изночально шрифты в ssd1306 есть? Или меется в ввиду что шрифты есть в прошивке для attiny85?
Это графический дисплей. Шрифты хранятся в прошивке микроконтроллера.
Скажите пожалуйста дисплей 128×32 изначально не может отображать текст и цифровую информацию? Как можно установить библиотеки с шрифтами? Куда они должны загружаться в мк ssd1406 или мк attiny85?
, Зарядное устройство для никель-цинковых батарей на основе простого модуля зарядки на tp5000 для литиевых и литий-железо-фосфатных аккумуляторов.