В этом проекте я покажу вам, как подключить ЖК-дисплей Nokia 5110 к Arduino UNO. Во-первых, мы немного узнаем о знаменитом ЖК-модуле Nokia 5110 и его ЖК-контроллере PCD8544 от Phillips. Затем мы увидим шаги для взаимодействия ЖК-дисплея Nokia 5110 с платой Arduino UNO и отобразим некоторый основной текст.
Введение
В предыдущих проектах Arduino я подключал ЖК-модуль 16×2 к Arduino (а также к другим микроконтроллерам). Это простой модуль отображения символов, который достаточно хорош для отображения простых буквенно-цифровых символов.
Но если вы хотите отобразить некоторые пользовательские символы или изменить размер шрифта символов или даже отобразить некоторые небольшие графические изображения, вам нужно искать в другом месте (точнее, на графическом ЖК-дисплее).
ЖК-модуль Nokia 5110 является одним из таких графических ЖК-экранов, который в настоящее время получил широкое распространение среди любителей электроники и разработчиков проектов «сделай сам». ЖК-дисплей Nokia 5110 изначально был разработан для использования, ну, как вы могли догадаться, в сотовых телефонах Nokia (использовался в мобильном телефоне Nokia 5110. Отсюда и название).
Фактически, культовый мобильный телефон Nokia 3310 имел тот же ЖК-экрана. В результате ЖК-экран известен как ЖК-дисплей Nokia 3310 или ЖК-дисплей Nokia 5110.
Краткое примечание о ЖК-дисплее Nokia 5110
ЖК-модуль Nokia 5110
ЖК-дисплей Nokia 5110 представляет собой монохромный графический ЖК-дисплей с разрешением 84 x 48 пикселей, т. е. он содержит 48 строк и 84 столбца. Вы можете управлять отдельными пикселями на экране, поэтому этот ЖК-модуль подходит для отображения текста, графики и растровых изображений.
Что касается передачи данных, то для связи с ЖК-модулем используется последовательный интерфейс, который аналогичен интерфейсу SPI. В следующей таблице показаны контакты ЖК-модуля Nokia 5110 вместе с описанием контактов:
Подсветка
Мой ЖК-дисплей Nokia 5110 имеет синюю подсветку. Но модуль также имеет некоторые другие цвета подсветки, такие как красный, белый и зеленый. Для обеспечения подсветки ЖК-модуль имеет четыре светодиода по вертикальным краям (по два светодиода на каждом краю). Есть специальный контакт включения/выключения подсветки.
Всегда безопасно питать светодиоды подсветки через токоограничивающий резистор 220 Ом от источника питания 3,3 В.
ЖК-контроллер PCD8544
За прекрасным ЖК-дисплеем Nokia 5110 скрывается ЖК-контроллер PCD8544 от Phillips. Это одночиповое решение для управления дисплеем с 48 строками и 84 столбцами.
Внутри контроллер PCD8544 состоит из SRAM размером 504 байта для хранения данных дисплея. SRAM разделена на 6 банков (банк 0 — банк 5), и каждый банк может хранить 84 байта данных.
Для получения дополнительной информации о ЖК-контроллере PCD8544 я предлагаю вам обратиться к техническому описанию.
Важный момент, который следует помнить из datasheet, связан с блоком питания. Максимальное напряжение питания логики составляет 3,3 В. Таким образом, необходимо соблюдать осторожность при взаимодействии с логическим уровнем 5V Arduino.
Взаимодействие ЖК-дисплея Nokia 5110 с Arduino
Теперь, когда мы немного узнали о ЖК-модуле Nokia 5110 и контроллере PCD8544, давайте приступим к его взаимодействию с Arduino. Первое, что нужно учитывать, это то, что ЖК-модуль имеет логический уровень 3,3 В, а Arduino — 5 В.
Чтобы уберечь ЖК-дисплей от повреждений, существует несколько способов подключения Arduino к ЖК-дисплею Nokia 5110.
Использование последовательных токоограничивающих резисторов
Первый и самый простой способ — подключить несколько токоограничивающих резисторов между Arduino и Nokia 5110. Нам понадобится несколько резисторов на 10 кОм, резистор на 1 кОм и резистор на 220 Ом (для подсветки).
Во-первых, резисторы на 10 кОм соединены последовательно с контактами RST, DC, DIN и CLK, а резистор на 1 кОм последовательно с контактом CE.
Я покажу точные соединения между Arduino и ЖК-дисплеем Nokia 5110 с последовательными резисторами в следующем разделе.
Использование преобразователя логических уровней
Следующий вариант — использовать модули преобразователя логического уровня 3,3 В в 5 В. Можно использовать простые двунаправленные преобразователи логических уровней на основе транзисторов. Таких плат нужно две, так как каждая плата состоит всего из четырех каналов преобразования уровней, а нам нужно пять подключений (RST, CE, DC, DIN и CLK).
Принципиальная электрическая схема
На следующем изображении показана принципиальная схема взаимодействия ЖК-дисплея Nokia 5110 с Arduino UNO с использованием резисторов:
Если у вас нет преобразователей логических уровней, то вы можете использовать приведенную выше реализацию. Но я настоятельно рекомендую вам приобрести пару модулей преобразователя логического уровня. На следующем изображении показана принципиальная схема взаимодействия ЖК-дисплея Nokia 5110 с Arduino UNO с использованием преобразователя логических уровней:
Требуемые компоненты
- Ардуино UNO
- Nokia 5110 LCD
- Модуль преобразователя уровня x 2
- Резистор 220 Ом
- 10 кОм x 4 (если преобразователь уровня не используется)
- 1 кОм (если преобразователь уровней не используется)
- Макет
- Блок питания макетной платы
- Соединительные провода
Аппаратные соединения
Интерфейс между Arduino и ЖК-модулем Nokia 5110 может быть реализован через аппаратный SPI Arduino или программный SPI. В этом проекте я использовал программный интерфейс SPI.
В следующей таблице показано соединение между Arduino UNO и ЖК-модулем Nokia 5110:
Код
Прежде чем писать код, необходимо загрузить несколько библиотек, чтобы успешно связать ЖК-модуль Nokia 5110 с Arduino. В среде разработки Arduino перейдите в меню «Инструменты» -> «Управление библиотеками…». Найдите «PCD8544 Nokia».
Выберите «Adafruit PCD8544 Nokia 5110 LCD Library» и нажмите «Установить». После успешной установки найдите «Adafruit GFX» и установите «Adafruit GFX Library». Это дополнительная библиотека, которая помогает отображать графику на ЖК-дисплее.
Ниже приведен простой код для отображения текста на ЖК-дисплее Nokia 5110:
#include <SPI.h> #include <Adafruit_GFX.h> #include <Adafruit_PCD8544.h> /* Declare LCD object for software SPI Adafruit_PCD8544(CLK,DIN,D/C,CE,RST);*/ Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 4, 3); void setup() { /* Initialize the Display*/ display.begin(); /* Change the contrast using the following API*/ display.setContrast(57); /* Clear the buffer */ display.clearDisplay(); /* Now let us display some text */ display.setTextColor(WHITE, BLACK); display.setCursor(4,8); display.setTextSize(1); display.println("|Electronics|"); display.setCursor(28,20); display.println("|Hub|"); display.setCursor(12,32); display.setTextColor(BLACK); display.println("Nokia 5110"); display.display(); delay(1000); } void loop() { }
Как это работает
Работа проекта очень проста. Мы должны включить PCD8544, а также заголовочный файл GFX в наш код. Во-первых, объявите объект LCD и инициализируйте его контактами, связанными с программным SPI.
Затем вы можете отображать текст, растровые изображения или специальные символы, используя различные API, предоставляемые библиотекой.
Заключение
Здесь реализован простой проект сопряжения ЖК-дисплея Nokia 5110 с Arduino. Поскольку это всего лишь ознакомительный проект, я отобразил на ЖК-дисплее простой текст. Но вы можете легко расширить эту базовую функциональность для отображения растровых изображений, интерфейса меню и т. д.
На самом деле, в следующем проекте я покажу вам, как создать простой экран меню на ЖК-дисплее Nokia 5110 с помощью кнопок.