====== Графический дисплей 128×64 / I²C: инструкция, примеры использования и документация ====== Используйте [[amp>product/display-lcd-graphic-128x64-i2c-fla?utm_source=man&utm_campaign=display-lcd-graphic-128x64-i2c&utm_medium=wiki|графический дисплей 128×64 / I²C]] для вывода текста, отрисовки графиков и отображения простых картинок. Монохромный экран выполнен по технологии LCD c разрешением 128×64 пикселей. {{ :products:display-lcd-graphic-128x64-i2c:display-lcd-graphic-128x64-i2c-fla.1.jpg?nolink |}} Графические дисплеи применяются в домашних охранных системах, робототехнике, МФУ-устройствах, вендинговых автоматах и турникетах общественного транспорта. Дисплей похвастается интерфейсом I²C, а это значит можно забыть про вермишель из проводов. Для общения с микроконтроллером понадобится всего два сигнальных провода. ===== Примеры работы для Arduino ===== Мозгом для проекта выступит платформа [[amp>product/arduino-uno?utm_source=man&utm_campaign=display-lcd-graphic-128x64-i2c&utm_medium=wiki|Arduino Uno]]. ==== Подключение и настройка ==== Для начала необходимо собрать железо и выполнить программную настройку. === Что понадобится === * 1× [[amp>product/arduino-uno?utm_source=man&utm_campaign=display-lcd-graphic-128x64-i2c&utm_medium=wiki|Arduino Uno]] * 1× [[amp>product/breadboard-half?utm_source=man&utm_campaign=display-lcd-graphic-128x64-i2c&utm_medium=wiki|Макетна плата Breadboard Half]] * 1× [[amp>product/wire-mm?utm_source=man&utm_campaign=display-lcd-graphic-128x64-i2c&utm_medium=wiki|Соединительные провода «папа-папа]] * 1× [[amp>product/usb-cable?utm_source=man&utm_campaign=display-lcd-graphic-128x64-i2c&utm_medium=wiki|Кабель USB (A — B)]] === Схема подключения === ^ Контакт дисплея ^^ Контакт Arduino ^ | 1 | VCC | 5V | | 2 | GND | GND | | 3 | SCL | SCL | | 4 | SDA | SDA | [[this>_media/products:display-lcd-graphic-128x64-i2c:display-lcd-graphic-128x64-i2c-arduino-wiring.pdf|{{ :products:display-lcd-graphic-128x64-i2c:display-lcd-graphic-128x64-i2c-arduino-wiring.png }}]] === Программная настройка === - [[:products:arduino-uno|Настройте плату в среде Arduino IDE]]. ==== Вывод изображений ==== Выведем на экран дисплея монохромное изображение. Для этого воспользуйтесь графическим редактором [[http://gimp.org|GIMP]] и преобразуйте исходную картинку в текстовый массив чисел .h. Основные правила при конвертации изображения: * Формат: .h * Максимальное разрешение: 128×64 пикселя * Цвет: чёрно-белое, никаких оттенков серого // Библиотека для работы с модулям по I²C #include // Адрес младшего кристалла #define RW1065I_ADDR_I2C_LOW 0x3C // Адрес старшего кристалла #define RW1065I_ADDR_I2C_HIGH 0x3D // Адрес кристалла управления #define NF8475A_ADDR_I2C 0x3B // Определение управляющих байт // control byte C0=0, DC=1, последний упр.байт, дальше только данные #define CTRL_0_DATA 0x40 // control byte C0=1, DC=1, после байт данных, потом снова упр. байт #define CTRL_1_DATA 0xC0 // control byte C0=0, DC=0, последний упр.байт, дальше только команды #define CTRL_0_CMD 0x00 // control byte C0=1, DC=0, после байт команды, потом снова упр. байт #define CTRL_1_CMD 0x80 // Массив картинки логотипа амперки // Каждые 8 вертикальных точек собраны в байт const byte amperkaLogo[8][128] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x1F, 0x3F, 0x7F, 0x79, 0x70, 0x70, 0x79, 0x7F, 0x3F, 0x1F, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFE, 0xFF, 0x1F, 0x07, 0xF1, 0xF8, 0xFC, 0x1E, 0x0E, 0x0F, 0x07, 0x07, 0x0F, 0x0E, 0x1E, 0xFC, 0xF8, 0xF1, 0x07, 0x1F, 0xFF, 0xFE, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x3F, 0x7F, 0xFC, 0xF0, 0xE7, 0xCF, 0x9F, 0xBC, 0x38, 0x78, 0x70, 0x70, 0x78, 0x38, 0xBC, 0x9F, 0xCF, 0xE7, 0xF0, 0xFC, 0x7F, 0x3F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x07, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0x60, 0x60, 0x60, 0xE0, 0xC0, 0xE0, 0xE0, 0x00, 0x00, 0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0x00, 0x00, 0xE0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0x60, 0x60, 0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0xE0, 0xE0, 0xC0, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x60, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x60, 0x60, 0x60, 0xE0, 0xC0, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x3F, 0x7F, 0xF1, 0xE0, 0xC0, 0xC0, 0xC0, 0xE0, 0x71, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0x0F, 0x1E, 0x1E, 0x0F, 0x03, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x1E, 0x7F, 0x7F, 0xE6, 0xC6, 0xC6, 0xC6, 0xC6, 0xE6, 0xE7, 0x67, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0x71, 0x3F, 0x1F, 0x00, 0x00, 0xFF, 0xFF, 0x0C, 0x0C, 0x1F, 0x3F, 0xF3, 0xE0, 0xC0, 0x00, 0x00, 0x3F, 0x7F, 0xF1, 0xE0, 0xC0, 0xC0, 0xC0, 0xE0, 0x71, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 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 drawImage() { // Текущая страница byte pp = 0; // цикл по 8-ми страницам for (pp = 0; pp < 8; pp++) { // поз. по горизонтали выводимого байта byte c = 0; // Вывод строки массива, первая половина в мл. кристалл Wire.beginTransmission(RW1065I_ADDR_I2C_LOW); Wire.write("\x80\x3F\x80\xC0\x80\x40\x80"); for (byte j = 0; j < 4; j++){ Wire.endTransmission(false); Wire.beginTransmission(RW1065I_ADDR_I2C_LOW); Wire.write(0x80); Wire.write(0xB8|pp); Wire.write(0x40); for (byte i = 0; i < 16; i++) { byte send_data; send_data = amperkaLogo[pp][c]; Wire.write(send_data); c++; } } Wire.endTransmission(false); // Вывод строки массива, вторая половина в ст. кристалл Wire.beginTransmission(RW1065I_ADDR_I2C_HIGH); Wire.write("\x80\x3F\x80\xC0\x80\x40\x80"); for (byte j = 0; j < 4; j++) { Wire.endTransmission(false); Wire.beginTransmission(RW1065I_ADDR_I2C_HIGH); Wire.write(0x80); Wire.write(0xB8|pp); Wire.write(0x40); for (byte i = 0; i < 16; i++) { byte send_data; send_data = amperkaLogo[pp][c]; Wire.write(send_data); c++; } } Wire.endTransmission(true); } } // Одиночная команда в обычном режиме void normComand1 (byte cmd) { // Команда, мл. крист. Wire.beginTransmission(RW1065I_ADDR_I2C_LOW); Wire.write(0x00); Wire.write(cmd); Wire.endTransmission(false); // Команда, ст. крист. Wire.beginTransmission(RW1065I_ADDR_I2C_HIGH); Wire.write(0x00); Wire.write(cmd); Wire.endTransmission(true); } // Инициализация дисплея void initLCD() { // вкл. дисплея, Addr=0, нач.стр.=0, Page=0, мл.кристалл Wire.beginTransmission(RW1065I_ADDR_I2C_LOW); Wire.write(0x80); Wire.write(0x3F); Wire.write(0x80); Wire.write(0x40); Wire.write(0x80); Wire.write(0xC0); Wire.write(0x00); Wire.write(0xB8); Wire.endTransmission(false); // вкл. дисплея, Addr=0. ст.кристалл Wire.beginTransmission(RW1065I_ADDR_I2C_HIGH); Wire.write(0x80); Wire.write(0x3F); Wire.write(0x00); Wire.write(0x40); Wire.endTransmission(true); } // Очистка дисплея void clearLCD(byte f, byte m) { Wire.beginTransmission(RW1065I_ADDR_I2C_LOW); Wire.write("\x80\x3F\x80\xC0\x80\x40\x80"); for (byte p = 0; p < 8; p++) { Wire.endTransmission(false); Wire.beginTransmission(RW1065I_ADDR_I2C_LOW); Wire.write(0x80); Wire.write(0xB8|p); Wire.write(0x40); for (byte i = 0; i < 16; i++) { Wire.write(f); f ^= m; } for (byte j=0; j < 3; j++) { Wire.endTransmission(false); Wire.beginTransmission(RW1065I_ADDR_I2C_LOW); Wire.write(0x40); for (byte i = 0; i < 16; i++) { Wire.write(f); f ^= m; } } } Wire.endTransmission(true); Wire.beginTransmission(RW1065I_ADDR_I2C_HIGH); Wire.write("\x80\x3F\x80\xC0\x80\x40\x80"); for (byte p = 0; p < 8; p++) { Wire.endTransmission(false); Wire.beginTransmission(RW1065I_ADDR_I2C_HIGH); Wire.write(0x80); Wire.write(0xB8|p); Wire.write(0x40); for (byte i = 0; i < 16; i++) { Wire.write(f); f ^= m; } for (byte j=0; j < 3; j++) { Wire.endTransmission(false); Wire.beginTransmission(RW1065I_ADDR_I2C_HIGH); Wire.write(0x40); for (byte i=0; i<16; i++) { Wire.write(f); f ^= m; } } } Wire.endTransmission(true); } void setup() { // Настройка I²C Wire.begin(); Wire.setClock(400000); delay(200); // Установка регистра управления в исходное состояние - FF // Нормальный режим, P_ON Wire.beginTransmission(NF8475A_ADDR_I2C); Wire.write(0xFF); Wire.endTransmission(true); delay (500); // power normal, команда расширенного режима Wire.beginTransmission(RW1065I_ADDR_I2C_LOW); Wire.write(0x80); Wire.write(0x0D); Wire.write(0x80); Wire.write(0x02); Wire.write(0x00); Wire.write(0x0C); Wire.endTransmission(false); Wire.beginTransmission(RW1065I_ADDR_I2C_HIGH); Wire.write(0x80); Wire.write(0x0D); Wire.write(0x80); Wire.write(0x02); Wire.write(0x00); Wire.write(0x0C); Wire.endTransmission(true); clearLCD(0, 0); initLCD(); // Включение полной яркости подсветки // Полная яркость подсветки BL_ON2 - "низкий" Wire.beginTransmission(NF8475A_ADDR_I2C); Wire.write(0xFB); Wire.endTransmission(true); delay(100); // Вывод изображения на дисплей drawImage(); } void loop() { } {{ :products:display-lcd-graphic-128x64-i2c:display-lcd-graphic-128x64-i2c-arduino-example-image.png?nolink |}} ===== Элементы дисплея ===== {{ :products:display-lcd-graphic-128x64-i2c:display-lcd-graphic-128x64-i2c-annotation.png?nolink |}} ==== Дисплей ==== {{ :products:display-lcd-graphic-128x64-i2c:mt-12864k-datasheet.pdf |Дисплей MT-12864K}} выполнен на монохромной жидкокристаллической матрице с разрешением 128×64 пикселей. Каждый пиксель поддерживает только два состояния: включён или выключен, 1 или 0, true или false. Матрица экрана подключена к [[#драйвер_дисплея|драйверу дисплея]], который выполняет роль посредника между экраном и управляющим микроконтроллером. ==== Драйвер дисплея ==== В систему драйвера входит три чипа: два контроллера [[#контроллер_rw1065i|RW1065I]] и один регистр управления [[#регистр_управления_inf8475a|INF8475A]]. {{ :products:display-lcd-graphic-128x64-i2c:display-lcd-graphic-128x64-i2c-block-scheme.png?nolink |}} === Контроллер RW1065I === {{ :products:display-lcd-graphic-128x64-i2c:rw1065i-datasheet.pdf |RW1065I LCD Segment Common Driver}} — это контроллер сегментов с драйвером общих линий для управления матрицей дисплея с разрешением 64×32 пикселя. Для управления графическим дисплеем разрешением 128×64 пикселей, требуется два таких чипа. Первый RW1065I для управления левой половиной сегментов SEG1–SEG64 с общими линиями COM1–COM32, а второй RW1065I для управления правой половиной сегментов SEG65–SEG128 с общими линиями COM33–COM64. Доступ к каждому контроллеру осуществляется по интерфейсу I²C с заданными I²C-адресами. На плате дисплея есть возможность сменить адреса контроллеров RW1065I. Это даёт возможность подключить к управляющей плате два дисплея одновременно и выводить на каждый экран различные данные, при этом количество занятых пинов останется прежним. Для смены адресов контроллеров RW1065I на обратной стороне дисплея установлен переключатель Addr1 с контактными площадками R5 и R6. {{ :products:display-lcd-graphic-128x64-i2c:display-lcd-graphic-128x64-i2c-switch-address-rw1065i.png?nolink |}} Капнув припоем на соответствующие контактные площадки, можно получать две разных группы I²C-адресов: ^ Addr1 ^^^^ ^ R5 ^ R6 ^ Адрес RW1065I #1 ^ Адрес RW1065I #2 ^ | L | H | 0x3C (по умолчанию) | 0x3D (по умолчанию) | | H | L | 0x3E | 0x3F | * L — нет припоя, соответственно нет электрического контакта. * H — есть припой, соответственно есть электрический контакт. Для управления контрастности и яркости на двух дисплей отдельно, необходимо также сменить адрес [[#регистр_управления_inf8475a|вспомогательного контроллера INF8475A]]. === Регистр управления INF8475A === {{ :products:display-lcd-graphic-128x64-i2c:inf8574-datasheet.pdf |INF8475A Driver}} — это вспомогательный контроллер для программной регулировки контрастности дисплея, яркость подсветки и других вспомогательных функций. Доступ к вспомогательному контроллеру осуществляется по интерфейсу I²C с заданными I²C-адресом. На плате дисплея есть возможность сменить адрес регистра RW1065I. Это даёт возможность подключить к управляющей плате два дисплея одновременно и управлять контрастностью/яркостью каждого экрана отдельно, при этом количество занятых пинов останется прежним. Для смены адреса вспомогательного контроллера INF8475A на обратной стороне дисплея установлен переключатель Addr2 с контактными площадками R17 и R18. {{ :products:display-lcd-graphic-128x64-i2c:display-lcd-graphic-128x64-i2c-switch-address-inf8475a.png?nolink |}} Капнув припоем на соответствующие контактные площадки, можно получать два разных I²C-адреса: ^ Addr2 ^^^ ^ R17 ^ R18 ^ Адрес INF8475A ^ | L | H | 0x3B (по умолчанию) | | H | L | 0x3A | * L — нет припоя, соответственно нет электрического контакта. * H — есть припой, соответственно есть электрический контакт. Для вывода на каждый экран различных данных, необходимо также сменить адреса [[#контроллер_rw1065i|контроллеров RW1065I]]. ==== Контакты подключения ==== На плате дисплея выведено 4 контакта для подключения питания и взаимодействия с управляющей электроникой. ^ Вывод ^ Обозначение ^ Описание ^ Подключение ^ | 1 | VIN | Питание дисплея | Подключите к питанию 2,9–5,5 В. | | 2 | GND | Общая земля | Подключите к земле. | | 3 | SCL | Тактирование шины I²C | Подключите к пину SCL микроконтроллера. | | 4 | SDA | Данные шины I²C | Подключите к пину SDA микроконтроллера. | ===== Габаритные чертёж ====== [[this>_media/products:display-lcd-graphic-128x64-i2c:display-lcd-graphic-128x64-i2c-dimensions.pdf|{{:products:display-lcd-graphic-128x64-i2c:display-lcd-graphic-128x64-i2c-dimensions.png}}]] ===== Характеристики ===== * Модель: МЭЛТ MT-12864K-3FLA-UN1 * Разрешение: 128×64 * Матрица: жидкокристаллическая LCD * Подсветка: светодиодная LED * Цвет пикселей: чёрный * Цвет подсветки: янтарный * Контроллер дисплея: RW1065I (2 шт.) * Архитектура: LCD Segment Common Driver * Интерфейc: I²C * I²C-адрес: 0x3C и 0x3D / 0x3E и 0x3F * Регистр управления: INF8475A (PCF8574A) * Интерфейc: I²C * I²C-адрес: 0x3B / 0x3A * Входное напряжение питания: 2,9–5,5 В * Логическое напряжение уровней: 3,3–5 В * Видимая область экрана: 60×32,6 мм * Размеры дисплейного модуля: 75×52,7×15 мм ===== Ресурсы ===== * [[amp>product/display-lcd-graphic-128x64-i2c-fla?utm_source=man&utm_campaign=display-lcd-graphic-128x64-i2c&utm_medium=wiki|Графический дисплей 128×64 / I²C]] в магазине. * [[https://github.com/amperka/hardware-drawings/blob/master/display-lcd-graphic-128x64-i2c.svg|Векторное изображение модуля]] ===== Документация ===== * {{ :products:display-lcd-graphic-128x64-i2c:mt-12864k-datasheet.pdf |Техническое описание на графический дисплей MT-12864K}} * {{ :products:display-lcd-graphic-128x64-i2c:rw1065i-datasheet.pdf |Datasheet на контроллер дисплея RW1065I}} * {{ :products:display-lcd-graphic-128x64-i2c:inf8574-datasheet.pdf |Datasheet на контроллер настроек дисплея INF8574A}}