====== Графический дисплей 128×64: инструкция, примеры использования и документация ======
Используйте [[amp>product/display-lcd-graphic-128x64-fla?utm_source=man&utm_campaign=display-lcd-graphic-128x64&utm_medium=wiki|графический дисплей 128×64]] для вывода текста, отрисовки графиков и отображения простых картинок. Монохромный экран выполнен по технологии LCD c разрешением 128×64 пикселей.
{{ :products:display-lcd-graphic-128x64:display-lcd-graphic-128x64-fla.1.jpg?nolink&500 |}}
Графические дисплеи применяются в домашних охранных системах, робототехнике, МФУ-устройствах, вендинговых автоматах и турникетах общественного транспорта.
===== Примеры работы для Arduino =====
Мозгом для проекта выступит платформа [[amp>product/arduino-uno?utm_source=man&utm_campaign=display-lcd-graphic-128x64&utm_medium=wiki|Arduino Uno]].
==== Подключение и настройка ====
Для начала необходимо собрать железо и выполнить программную настройку.
=== Что понадобится ===
* 1× [[amp>product/arduino-uno?utm_source=man&utm_campaign=display-lcd-graphic-128x64&utm_medium=wiki|Arduino Uno]]
* 1× [[amp>product/breadboard-half?utm_source=man&utm_campaign=display-lcd-graphic-128x64&utm_medium=wiki|Макетна плата Breadboard Half]]
* 1× [[amp>product/potentiometer?utm_source=man&utm_campaign=display-lcd-graphic-128x64&utm_medium=wiki|Потенциометр 10 кОм]]
* 1× [[amp>product/wire-mm?utm_source=man&utm_campaign=display-lcd-graphic-128x64&utm_medium=wiki|Соединительные провода «папа-папа]]
* 1× [[amp>product/usb-cable?utm_source=man&utm_campaign=display-lcd-graphic-128x64&utm_medium=wiki|Кабель USB (A — B)]]
=== Схема подключения ===
^ Контакт дисплея ^^ Контакт 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.
[[this>_media/products:display-lcd-graphic-128x64:display-lcd-graphic-128x64-arduino-wiring.pdf|{{ :products:display-lcd-graphic-128x64:display-lcd-graphic-128x64-arduino-wiring.png }}]]
=== Программная настройка ===
- [[:products:arduino-uno|Настройте плату в среде Arduino IDE]].
- [[https://github.com/olikraus/u8g2/wiki|Скачайте и установите библиотеку U8g2 для Arduino]].
==== Вывод текста ====
Для старта выведем на дисплей приветствующую строку Hello World.
В отличии от текстовых дисплеев, графический экран не хранит в себе алфавиты и типографические символы. Шрифты загружаются в контроллер вместе с пользовательской программной. Библиотека [[https://github.com/olikraus/u8g2/wiki|U8g2]] предоставляет [[https://github.com/olikraus/u8g2/wiki/fntlistall|широкий список шрифтов на любой вкус и цвет.]].
// Библиотека для работы с графическими дисплеями
#include
// Задаём имя пинов дисплея
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() {
}
{{ :products:display-lcd-graphic-128x64:display-lcd-graphic-128x64-arduino-example-hello-world.png?nolink |}}
==== Вывод текста: шрифты ====
Внесём немного красок в проект, выведем текст на экране различными шрифтами.
// Библиотека для работы с графическими дисплеями
#include
// Задаём имя пинов дисплея
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() {
}
{{ :products:display-lcd-graphic-128x64:display-lcd-graphic-128x64-arduino-example-hello-world-fonts.png?nolink |}}
==== Вывод текста: кириллица ====
В продолжении выведем на дисплей текст в кириллице. Для вывода кириллицы используйте соответствующие шрифты.
// Библиотека для работы с графическими дисплеями
#include
// Задаём имя пинов дисплея
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() {
}
{{ :products:display-lcd-graphic-128x64:display-lcd-graphic-128x64-arduino-example-hello-world-rus.png?nolink |}}
==== Вывод геометрических фигур ====
Далее отрисуем на дисплее геометрические фигуры.
// Библиотека для работы с графическими дисплеями
#include
// Задаём имя пинов дисплея
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() {
}
{{ :products:display-lcd-graphic-128x64:display-lcd-graphic-128x64-arduino-example-geometric-figures.png?nolink |}}
==== Вывод символов Unicode ====
А ещё графический дисплей позволяет выводить символы из кодировки [[https://ru.wikipedia.org/wiki/Юникод|Юникод]]. Для вывода Unicode используйте соответствующие шрифты.
// Библиотека для работы с графическими дисплеями
#include
// Задаём имя пинов дисплея
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() {
}
{{ :products:display-lcd-graphic-128x64:display-lcd-graphic-128x64-arduino-example-unicode-characters.png?nolink |}}
==== Вывод изображений ====
В завершении выведем на экран дисплея монохромное изображение. Для этого воспользуйтесь графическим редактором [[http://gimp.org|GIMP]] и преобразуйте исходную картинку в текстовый массив чисел .xbm.
Основные правила при конвертации изображения:
* Формат: .xbm
* Максимальное разрешение: 128×64 пикселя
* Цвет: чёрно-белое, никаких оттенков серого
// Библиотека для работы с графическими дисплеями
#include
// Задаём имя пинов дисплея
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() {
}
{{ :products:display-lcd-graphic-128x64:display-lcd-graphic-128x64-arduino-example-image.png?nolink |}}
===== Элементы дисплея =====
{{ :products:display-lcd-graphic-128x64:display-lcd-graphic-128x64-annotation.png?nolink |}}
==== Дисплей ====
{{ :products:display-lcd-graphic-128x64:mt-12864j-datasheet.pdf |Дисплей MT-12864J}} выполнен на монохромной жидкокристаллической матрице с разрешением 128×64 пикселей. Каждый пиксель поддерживает только два состояния: включён или выключен, 1 или 0, true или false.
Матрица экрана подключена к [[#драйвер_дисплея|драйверу дисплея]], который выполняет роль посредника между экраном и управляющим микроконтроллером.
==== Драйвер дисплея ====
В систему драйвера входит три чипа: два контроллера сегментов KS0108 и один контроллер общих линий KS0107.
* {{ :products:display-lcd-graphic-128x64:ks0108-datasheet.pdf |KS0108 LCD Segment Driver}} — это контроллер сегментов ЖК-дисплея с 64-канальным выходом. Для управления графическим дисплеем разрешением 128×64 пикселей, требуется два таких чипа. Первый KS0108 для управления левой половиной сегментов SEG1–SEG64, а второй KS0108 для управления правой половиной сегментов SEG65–SEG128. Доступ к двум половинам дисплея осуществляется индивидуально посредством сигнальных линий CS1 и CS2.
* {{ :products:display-lcd-graphic-128x64:ks0107-datasheet.pdf |KS0107 LCD Common Driver}} — это контроллер общих линий индикатора ЖК-дисплея с 64-канальным выходом, который управляет общими линиями матрицы COM1–COM64 и генерирует временные сигналы для синхронизации с двумя сегментными контроллерами KS0108.
{{ :products:display-lcd-graphic-128x64:display-lcd-graphic-128x64-block-scheme.png?nolink |}}
==== Контакты подключения ====
На плате дисплея выведено 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 | Катод питания подсветки «–» | Подключите к земле. |
===== Габаритные чертёж ======
[[this>_media/products:display-lcd-graphic-128x64:display-lcd-graphic-128x64-dimensions.pdf|{{:products:display-lcd-graphic-128x64:display-lcd-graphic-128x64-dimensions.png}}]]
===== Характеристики =====
* Модель: МЭЛТ 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 мм
===== Ресурсы =====
* [[amp>product/display-lcd-graphic-128x64-fla?utm_source=man&utm_campaign=display-lcd-graphic-128x64&utm_medium=wiki|Графический дисплей 128×64]] в магазине.
* [[https://github.com/amperka/hardware-drawings/blob/master/display-lcd-graphic-128x64.svg|Векторное изображение модуля]]
===== Документация =====
* {{ :products:display-lcd-graphic-128x64:mt-12864j-datasheet.pdf |Техническое описание на графический дисплей MT-12864J}}
* {{ :products:display-lcd-graphic-128x64:ks0108-datasheet.pdf |Datasheet на LCD Segment Driver KS0108}}
* {{ :products:display-lcd-graphic-128x64:ks0107-datasheet.pdf |Datasheet на LCD Common Driver KS0107}}
===== Библиотеки ======
[[https://github.com/olikraus/u8g2/wiki|Библиотека U8g2 для Arduino]]