Графический дисплей 128×64: инструкция, примеры использования и документация
Используйте графический дисплей 128×64 для вывода текста, отрисовки графиков и отображения простых картинок. Монохромный экран выполнен по технологии LCD c разрешением 128×64 пикселей.
Графические дисплеи применяются в домашних охранных системах, робототехнике, МФУ-устройствах, вендинговых автоматах и турникетах общественного транспорта.
Примеры работы для Arduino
Мозгом для проекта выступит платформа Arduino Uno.
Подключение и настройка
Для начала необходимо собрать железо и выполнить программную настройку.
Что понадобится
- 1× Arduino Uno
Схема подключения
Контакт дисплея | Контакт Arduino | |
---|---|---|
1 | VCC | 5V |
2 | GND | GND |
3 | VO | К потенциометру, подробности ниже. |
4 | DB0 | 13 |
5 | DB1 | 12 |
6 | DB2 | 11 |
7 | DB3 | 10 |
8 | DB4 | 9 |
9 | DB5 | 8 |
10 | DB6 | 7 |
11 | DB7 | 6 |
12 | CS1 | 5 |
13 | CS2 | 4 |
14 | RST | — |
15 | RW | GND |
16 | DC | 3 |
17 | EN | 2 |
18 | VEE | К потенциометру, подробности ниже. |
19 | LED A | 5V |
20 | LED K | GND |
Центральный контакт потенциометра подключите к контакту дисплея VO, а два крайних — к контактам дисплея VEE и земле GND.
Программная настройка
Вывод текста
Для старта выведем на дисплей приветствующую строку Hello World.
В отличии от текстовых дисплеев, графический экран не хранит в себе алфавиты и типографические символы. Шрифты загружаются в контроллер вместе с пользовательской программной. Библиотека U8g2 предоставляет широкий список шрифтов на любой вкус и цвет..
- HelloWorld.ino
// Библиотека для работы с графическими дисплеями #include <U8g2lib.h> // Задаём имя пинов дисплея constexpr uint8_t PIN_DB0 = 13; constexpr uint8_t PIN_DB1 = 12; constexpr uint8_t PIN_DB2 = 11; constexpr uint8_t PIN_DB3 = 10; constexpr uint8_t PIN_DB4 = 9; constexpr uint8_t PIN_DB5 = 8; constexpr uint8_t PIN_DB6 = 7; constexpr uint8_t PIN_DB7 = 6; constexpr uint8_t PIN_CS0 = 5; constexpr uint8_t PIN_CS1 = 4; constexpr uint8_t PIN_DC = 3; constexpr uint8_t PIN_EN = 2; /* * Создаём объект для работы с графическим дисплеем * U8G2_KS0108_128X64_F u8g2(ROTATION, DB0, DB1, DB2, DB3, DB4, DB5, DB6, DB7, EN, DC, CS0, CS1, CS2, RESET); * Подробности подключения: * http://wiki.amperka.ru/products:display-lcd-graphic-128x64 */ U8G2_KS0108_128X64_F display(U8G2_R0, PIN_DB0, PIN_DB1, PIN_DB2, PIN_DB3, PIN_DB4, PIN_DB5, PIN_DB6, PIN_DB7, PIN_EN, PIN_DC, PIN_CS0, PIN_CS1, U8X8_PIN_NONE, U8X8_PIN_NONE); void setup() { // Инициализируем дисплей display.begin(); // Очищаем память display.clearBuffer(); // Выбираем шрифт display.setFont(u8g2_font_ncenB08_tr); // Указываем положение курсора display.setCursor(0, 10); // Выводим строку display.print("Hello, World!"); // Отсылаем данные на дисплей display.sendBuffer(); } void loop() { }
Вывод текста: шрифты
Внесём немного красок в проект, выведем текст на экране различными шрифтами.
- HelloWorldFonts.ino
// Библиотека для работы с графическими дисплеями #include <U8g2lib.h> // Задаём имя пинов дисплея constexpr uint8_t PIN_DB0 = 13; constexpr uint8_t PIN_DB1 = 12; constexpr uint8_t PIN_DB2 = 11; constexpr uint8_t PIN_DB3 = 10; constexpr uint8_t PIN_DB4 = 9; constexpr uint8_t PIN_DB5 = 8; constexpr uint8_t PIN_DB6 = 7; constexpr uint8_t PIN_DB7 = 6; constexpr uint8_t PIN_CS0 = 5; constexpr uint8_t PIN_CS1 = 4; constexpr uint8_t PIN_DC = 3; constexpr uint8_t PIN_EN = 2; /* * Создаём объект для работы с графическим дисплеем * U8G2_KS0108_128X64_F u8g2(ROTATION, DB0, DB1, DB2, DB3, DB4, DB5, DB6, DB7, EN, DC, CS0, CS1, CS2, RESET); * Подробности подключения: * http://wiki.amperka.ru/products:display-lcd-graphic-128x64 */ U8G2_KS0108_128X64_F display(U8G2_R0, PIN_DB0, PIN_DB1, PIN_DB2, PIN_DB3, PIN_DB4, PIN_DB5, PIN_DB6, PIN_DB7, PIN_EN, PIN_DC, PIN_CS0, PIN_CS1, U8X8_PIN_NONE, U8X8_PIN_NONE); void setup() { // Инициализируем дисплей display.begin(); // Очищаем память display.clearBuffer(); // Включаем поддержку UTF8 display.enableUTF8Print(); // Выбираем шрифт display.setFont(u8g2_font_4x6_tr); // Указываем положение курсора display.setCursor(0, 5); // Выводим строку display.print("Hello, world"); // Выбираем шрифт display.setFont(u8g2_font_ncenR08_tr); // Указываем положение курсора display.setCursor(0, 22); // Выводим строку display.print("Graphic LCD"); // Выбираем шрифт display.setFont(u8g2_font_luBIS08_tr); // Указываем положение курсора display.setCursor(0, 40); // Выводим строку display.print("Resolution: 128x64"); // Выбираем шрифт display.setFont(u8g2_font_HelvetiPixelOutline_tr); // Указываем положение курсора display.setCursor(2, 60); // Выводим строку на дисплей display.print("Different fonts"); // Отсылаем данные на дисплей display.sendBuffer(); } void loop() { }
Вывод текста: кириллица
В продолжении выведем на дисплей текст в кириллице. Для вывода кириллицы используйте соответствующие шрифты.
- HelloWorldRus.ino
// Библиотека для работы с графическими дисплеями #include <U8g2lib.h> // Задаём имя пинов дисплея constexpr uint8_t PIN_DB0 = 13; constexpr uint8_t PIN_DB1 = 12; constexpr uint8_t PIN_DB2 = 11; constexpr uint8_t PIN_DB3 = 10; constexpr uint8_t PIN_DB4 = 9; constexpr uint8_t PIN_DB5 = 8; constexpr uint8_t PIN_DB6 = 7; constexpr uint8_t PIN_DB7 = 6; constexpr uint8_t PIN_CS0 = 5; constexpr uint8_t PIN_CS1 = 4; constexpr uint8_t PIN_DC = 3; constexpr uint8_t PIN_EN = 2; /* * Создаём объект для работы с графическим дисплеем * U8G2_KS0108_128X64_F u8g2(ROTATION, DB0, DB1, DB2, DB3, DB4, DB5, DB6, DB7, EN, DC, CS0, CS1, CS2, RESET); * Подробности подключения: * http://wiki.amperka.ru/products:display-lcd-graphic-128x64 */ U8G2_KS0108_128X64_F display(U8G2_R0, PIN_DB0, PIN_DB1, PIN_DB2, PIN_DB3, PIN_DB4, PIN_DB5, PIN_DB6, PIN_DB7, PIN_EN, PIN_DC, PIN_CS0, PIN_CS1, U8X8_PIN_NONE, U8X8_PIN_NONE); void setup() { // Инициализируем дисплей display.begin(); // Очищаем память display.clearBuffer(); // Включаем поддержку UTF8 display.enableUTF8Print(); // Выбираем шрифт display.setFont(u8g2_font_4x6_t_cyrillic); // Указываем положение курсора display.setCursor(0, 5); // Выводим строку display.print("Привет, мир!"); // Выбираем шрифт display.setFont(u8g2_font_5x8_t_cyrillic); // Указываем положение курсора display.setCursor(0, 20); // Выводим строку display.print("Графический дисплей"); // Выбираем шрифт display.setFont(u8g2_font_6x13_t_cyrillic); // Указываем положение курсора display.setCursor(0, 40); // Выводим строку display.print("Разрешение: 128x64"); // Выбираем шрифт display.setFont(u8g2_font_9x15_t_cyrillic); // Указываем положение курсора display.setCursor(0, 60); // Выводим строку на дисплей display.print("Русские шрифты"); // Отсылаем данные на дисплей display.sendBuffer(); } void loop() { }
Вывод геометрических фигур
Далее отрисуем на дисплее геометрические фигуры.
- GeometricFigures.ino
// Библиотека для работы с графическими дисплеями #include <U8g2lib.h> // Задаём имя пинов дисплея constexpr uint8_t PIN_DB0 = 13; constexpr uint8_t PIN_DB1 = 12; constexpr uint8_t PIN_DB2 = 11; constexpr uint8_t PIN_DB3 = 10; constexpr uint8_t PIN_DB4 = 9; constexpr uint8_t PIN_DB5 = 8; constexpr uint8_t PIN_DB6 = 7; constexpr uint8_t PIN_DB7 = 6; constexpr uint8_t PIN_CS0 = 5; constexpr uint8_t PIN_CS1 = 4; constexpr uint8_t PIN_DC = 3; constexpr uint8_t PIN_EN = 2; /* * Создаём объект для работы с графическим дисплеем * U8G2_KS0108_128X64_F u8g2(ROTATION, DB0, DB1, DB2, DB3, DB4, DB5, DB6, DB7, EN, DC, CS0, CS1, CS2, RESET); * Подробности подключения: * http://wiki.amperka.ru/products:display-lcd-graphic-128x64 */ U8G2_KS0108_128X64_F display(U8G2_R0, PIN_DB0, PIN_DB1, PIN_DB2, PIN_DB3, PIN_DB4, PIN_DB5, PIN_DB6, PIN_DB7, PIN_EN, PIN_DC, PIN_CS0, PIN_CS1, U8X8_PIN_NONE, U8X8_PIN_NONE); void setup() { // Инициализируем дисплей display.begin(); // Очищаем память display.clearBuffer(); // Переменные для хранения высоты и ширины дисплея int width = display.getBufferTileWidth() * 8; int height = display.getBufferTileHeight() * 8; // Рисуем две диагонали display.drawLine(0, 0, width - 1, height - 1); display.drawLine(0, height - 1, width - 1, 0); // Рисуем окружность радиусом 30 в центре дисплея display.drawCircle(width / 2, height / 2, 30, U8G2_DRAW_ALL); // Рисуем диск (закрашенную окружность) радиусом 20 в центре дисплея display.drawDisc(width / 2, height / 2, 20, U8G2_DRAW_ALL); // Отсылаем данные на дисплей display.sendBuffer(); } void loop() { }
Вывод символов Unicode
А ещё графический дисплей позволяет выводить символы из кодировки Юникод. Для вывода Unicode используйте соответствующие шрифты.
- UnicodeCharacters.ino
// Библиотека для работы с графическими дисплеями #include <U8g2lib.h> // Задаём имя пинов дисплея constexpr uint8_t PIN_DB0 = 13; constexpr uint8_t PIN_DB1 = 12; constexpr uint8_t PIN_DB2 = 11; constexpr uint8_t PIN_DB3 = 10; constexpr uint8_t PIN_DB4 = 9; constexpr uint8_t PIN_DB5 = 8; constexpr uint8_t PIN_DB6 = 7; constexpr uint8_t PIN_DB7 = 6; constexpr uint8_t PIN_CS0 = 5; constexpr uint8_t PIN_CS1 = 4; constexpr uint8_t PIN_DC = 3; constexpr uint8_t PIN_EN = 2; /* * Создаём объект для работы с графическим дисплеем * U8G2_KS0108_128X64_F u8g2(ROTATION, DB0, DB1, DB2, DB3, DB4, DB5, DB6, DB7, EN, DC, CS0, CS1, CS2, RESET); * Подробности подключения: * http://wiki.amperka.ru/products:display-lcd-graphic-128x64 */ U8G2_KS0108_128X64_F display(U8G2_R0, PIN_DB0, PIN_DB1, PIN_DB2, PIN_DB3, PIN_DB4, PIN_DB5, PIN_DB6, PIN_DB7, PIN_EN, PIN_DC, PIN_CS0, PIN_CS1, U8X8_PIN_NONE, U8X8_PIN_NONE); void setup() { // Инициализируем дисплей display.begin(); // Очищаем память display.clearBuffer(); // Выбираем шрифт в кодировке Unicode display.setFont(u8g2_font_unifont_t_symbols); // Выводим символы из таблицы на дисплей display.drawUTF8(20, 30, "☀ ☁ ☂ ☃ ☕"); // Отсылаем данные на дисплей display.sendBuffer(); } void loop() { }
Вывод изображений
В завершении выведем на экран дисплея монохромное изображение. Для этого воспользуйтесь графическим редактором GIMP и преобразуйте исходную картинку в текстовый массив чисел .
Основные правила при конвертации изображения:
- Формат:
- Максимальное разрешение: 128×64 пикселя
- Цвет: чёрно-белое, никаких оттенков серого
- Image.ino
// Библиотека для работы с графическими дисплеями #include <U8g2lib.h> // Задаём имя пинов дисплея constexpr uint8_t PIN_DB0 = 13; constexpr uint8_t PIN_DB1 = 12; constexpr uint8_t PIN_DB2 = 11; constexpr uint8_t PIN_DB3 = 10; constexpr uint8_t PIN_DB4 = 9; constexpr uint8_t PIN_DB5 = 8; constexpr uint8_t PIN_DB6 = 7; constexpr uint8_t PIN_DB7 = 6; constexpr uint8_t PIN_CS0 = 5; constexpr uint8_t PIN_CS1 = 4; constexpr uint8_t PIN_DC = 3; constexpr uint8_t PIN_EN = 2; /* * Создаём объект для работы с графическим дисплеем * U8G2_KS0108_128X64_F u8g2(ROTATION, DB0, DB1, DB2, DB3, DB4, DB5, DB6, DB7, EN, DC, CS0, CS1, CS2, RESET); * Подробности подключения: * http://wiki.amperka.ru/products:display-lcd-graphic-128x64 */ U8G2_KS0108_128X64_F display(U8G2_R0, PIN_DB0, PIN_DB1, PIN_DB2, PIN_DB3, PIN_DB4, PIN_DB5, PIN_DB6, PIN_DB7, PIN_EN, PIN_DC, PIN_CS0, PIN_CS1, U8X8_PIN_NONE, U8X8_PIN_NONE); // Массив изображения файла xbm #define amperka_width 128 #define amperka_height 64 static const unsigned char amperka_bits[] U8X8_PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xf8, 0x1f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xf0, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe1, 0x87, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc3, 0xc3, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xf1, 0x8f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xf9, 0x9f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x7c, 0x3e, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x1e, 0x78, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x0e, 0x70, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x0e, 0x70, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x0e, 0x70, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x0e, 0x70, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x0e, 0x70, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x1e, 0x78, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x7c, 0x3e, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xf9, 0x9f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xf3, 0xcf, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc7, 0xe3, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x1f, 0xf8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x33, 0x30, 0xff, 0xc1, 0x0f, 0xfb, 0x60, 0x30, 0xf8, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x73, 0x38, 0xff, 0xe1, 0x1f, 0xff, 0x61, 0x38, 0xfc, 0x07, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc7, 0xf3, 0x3c, 0x83, 0xf1, 0x3c, 0x87, 0x63, 0x1c, 0x8e, 0x07, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0xf3, 0x3c, 0x83, 0x31, 0x30, 0x03, 0x67, 0x0e, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0xf3, 0x3f, 0x83, 0xf9, 0x3f, 0x03, 0x66, 0x0e, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0xb3, 0x37, 0x83, 0xf9, 0x3f, 0x03, 0xe6, 0x07, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0xb3, 0x37, 0x83, 0x39, 0x00, 0x03, 0xe6, 0x07, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x33, 0x33, 0x83, 0x39, 0x00, 0x03, 0x67, 0x0e, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc7, 0x33, 0x30, 0x83, 0x71, 0x38, 0x87, 0x63, 0x1c, 0x8f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x33, 0x30, 0x83, 0xf1, 0x3f, 0xff, 0x61, 0x38, 0xfe, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x33, 0x30, 0x83, 0xc1, 0x1f, 0xfb, 0x60, 0x38, 0xfc, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x07, 0x03, 0x60, 0x30, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; void setup() { // Инициализируем дисплей display.begin(); // Очищаем память display.clearBuffer(); // Выводим изображение на дисплей display.drawXBMP(0, 0, amperka_width, amperka_height, amperka_bits); // Отсылаем данные на дисплей display.sendBuffer(); } void loop() { }
Элементы дисплея
Дисплей
Дисплей MT-12864J выполнен на монохромной жидкокристаллической матрице с разрешением 128×64 пикселей. Каждый пиксель поддерживает только два состояния: включён или выключен, 1 или 0, true или false.
Матрица экрана подключена к драйверу дисплея, который выполняет роль посредника между экраном и управляющим микроконтроллером.
Драйвер дисплея
В систему драйвера входит три чипа: два контроллера сегментов KS0108 и один контроллер общих линий KS0107.
- KS0108 LCD Segment Driver — это контроллер сегментов ЖК-дисплея с 64-канальным выходом. Для управления графическим дисплеем разрешением 128×64 пикселей, требуется два таких чипа. Первый KS0108 для управления левой половиной сегментов SEG1–SEG64, а второй KS0108 для управления правой половиной сегментов SEG65–SEG128. Доступ к двум половинам дисплея осуществляется индивидуально посредством сигнальных линий CS1 и CS2.
- KS0107 LCD Common Driver — это контроллер общих линий индикатора ЖК-дисплея с 64-канальным выходом, который управляет общими линиями матрицы COM1–COM64 и генерирует временные сигналы для синхронизации с двумя сегментными контроллерами KS0108.
Контакты подключения
На плате дисплея выведено 20 контактов для подключения питания и взаимодействия с управляющей электроникой.
Вывод | Обозначение | Описание | Подключение |
---|---|---|---|
1 | VCC | Питание дисплея | Подключите к питанию 5 В. |
2 | GND | Общая земля | Подключите к земле. |
3 | VO | Контрастность экрана | Подключите к средней ноге потенциометра. |
4-11 | D0-D7 | Линии данных | Подключите к пинам ввода-вывода микроконтроллера. |
12 | CS1 | Выбор контроллера #1 KS0108 (сегменты 1–64) | Подключите к пину ввода-вывода микроконтроллера. |
13 | CS2 | Выбор контроллера #2 KS0108 (сегменты 65–128) | Подключите к пину ввода-вывода микроконтроллера. |
14 | RST | Сброс содержимого дисплея | Подключите к пину ввода-вывода микроконтроллера. |
15 | RW | Выбор режима: запись или чтение | Подключите к пину ввода-вывода микроконтроллера. Если не планируете считывать информацию с дисплея подключите к земле. |
16 | DC | Выбор режима: данные или команда | Подключите к пину ввода-вывода микроконтроллера. |
17 | EN | Строб разрешения записи или чтение данных | Подключите к пину ввода-вывода микроконтроллера. |
18 | VEE | Выход отрицательного напряжения | Подключите к одной из крайних ног потенциометра. |
19 | LED A | Анод питания подсветки «+» | Подключите к питанию 5 В. |
20 | LED K | Катод питания подсветки «–» | Подключите к земле. |
Габаритные чертёж
Характеристики
- Модель: МЭЛТ MT-12864J-2FLA
- Разрешение: 128×64
- Матрица: жидкокристаллическая LCD
- Подсветка: светодиодная LED
- Цвет пикселей: чёрный
- Цвет подсветки: янтарный
- Контроллеры дисплея:
- LCD Segment Driver К145ВГ10 / KS0108 (2 шт.)
- LCD Common Driver К145ВГ9Н5 / KS0107 (1 шт.)
- Интерфейс дисплея: параллельный 8 бит
- Входное напряжение питания: 5 В
- Логическое напряжение уровней: 3,3–5 В
- Видимая область экрана: 60×32,6 мм
- Размеры дисплейного модуля: 75×52,7×15 мм