====== Графический дисплей 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]]