Обзор LCD дисплея Nokia 5110

В предыдущих статьях рассказывал как вывести информацию на LCD1602, OLED и TFT дисплеи их часто можно встретить в различных проектах. В этой статье расскажу об еще одном дисплеи NOKIA 5110, который так же очень популярный. Главной особенность этого дисплея является способность выводить не только текст, но и графические данные.
Технические параметры:
► Контроллере PCD8544;
► Разрешение экрана: 84 x 48 точек;
► Размеры экрана: 36 х 24 мм;
► Напряжение питания логики: 2,7 – 3,3В;
► Габариты: 43,8 х 43,4 х 13,2 мм;
► Вес: 14 г.
Описание дисплея Nokia 5110
Дисплей Nokia 5110 управляется с помощью контроллера PCD8544 (производитель Philips). Контроллер управляет дисплеем с разрешением 84 × 48 пикселей, в качестве связи с микроконтроллером (arduino) используется интерфейс последовательной шины, аналогичный SPI. Согласно документации, чип PCD8544 работает диапазоне от 2,7 до 3,3 В в том числе и логическая часть. Таким образом, при подключении к пяти вольтной Arduino необходимо понизить логическое напряжение до 3В.

Назначение контактов.
► RST — Сброс дисплея, при логическом нуле происходит сброс изображения на дисплеи.
► CE — включение чипа. при логическом нуле чип активен.
► D/C — сообщение дисплею, являются ли данные команда или отображаемыми данными.
► DIN — вывод последовательных данных для интерфейса SPI.
► CLK — вывод последовательного тактового сигнала для интерфейса SPI.
► VCC — вывод питания для ЖК-дисплея.
► BL — управляет подсветкой дисплея. Чтобы контролировать его яркость, вы можете добавить потенциометр или подключить этот вывод к любому выводу Arduino с поддержкой ШИМ.
► GND — земля.
Подключение LCD дисплея Nokia 5110 к Arduino
Необходимые детали:
► Arduino UNO R3 x 1 шт.
► Графический LCD дисплей Nokia 5110 — 84×84 x 1 шт.
► Провод DuPont, 2,54 мм, 20 см, F-M (Female — Male) x 1 шт.
► Резистор 1 кОм, 0.125 Вт x 5 шт.
► Резистор 330 Ом, 0.125 Вт x 1 шт.
► Кабель USB 2.0 A-B x 1 шт.
Подключение:
Подключение не сложено и так как мы используем программный SPI, можно использовать любые цифровые контакты Arduino. В примере выводы CLK, DIN, DC, CE и RST от дисплея подключаем в выводам Arduino от 7 до 3. Так как дисплей не льзя подключать напрямую к Arduino, воспользуемся самым простым способом, добавим резисторы 10 кОм между выводами CLK, DIN, D/C и RST и резистор 1 кОм между контактами CE. А вывод подсветки (BL) подключен к 3,3 В через токоограничивающий резистор 330 Ом.

Установка библиотек:
Для работы с дисплеем Nokia 5110 необходимо установить две библиотеку «Adafruit PCD8544 Nokia 5110 LCD» и «Adafruit GFX» Чтобы установить библиотеки, перейдите в Скетч —> Подключить библиотеку —> Управление библиотеками.

В строке поиска введите «nokia», найдите библиотеку «Adafruit PCD8544 Nokia 5110 LCD» и установите данную библиотеку.

Теперь установим вторую библиотеку, вводим в поиск «Adafruit GFX» и устанавливаем «Adafruit GFX Library«

Программа:
Теперь запускаем среду разработку Arduino IDE и загружаем скетч в контроллер.
#include <SPI.h> // Подключение библиотеки SPI
#include <Adafruit_GFX.h> // Подключение библиотеки Adafruit_GFX
#include <Adafruit_PCD8544.h> // Подключение библиотеки Adafruit_PCD8544
Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 4, 3);
int rotatetext = 1;
void setup() {
display.begin(); // Инициализация дисплея
display.setContrast(57); // Указываем контрастность дисплея 0-100
display.clearDisplay(); // Очистка дисплея
// Вывод текста
display.setTextSize(1); // Установка размера шрифта
display.setTextColor(BLACK); // Установка цвет текста
display.setCursor(0,0); // Установка курсора
display.println("Hello world!"); // Отправка текста
display.display(); //
delay(2000); // Пауза 2 с
display.clearDisplay(); // Очистка дисплея
// Инверсия цвета текста
display.setTextColor(WHITE, BLACK); // Установка фона
display.setCursor(0,0); // Установка курсора
display.println("Hello world!"); // Отправка текста
display.display(); //
delay(2000); // Пауза 2 с
display.clearDisplay(); // Очистка дисплея
// Увеличенный шрифт
display.setTextColor(BLACK); // Цвет текста
display.setCursor(0,0); // Установка курсора
display.setTextSize(2); // Установка размера шрифта
display.println("Hello!"); // Отправка текста
display.display(); //
delay(2000); // Пауза 2 с
display.clearDisplay(); // Очистка дисплея
// Отображение чисел
display.setTextSize(1); // Установка размера шрифта
display.setCursor(0,0); // Установка курсора
display.println(123456789); // Отправка цифр
display.display(); //
delay(2000); // Пауза 2 с
display.clearDisplay(); // Очистка дисплея
// Отображение символов
display.setCursor(0,0); // Установка курсора
display.setTextSize(2); // Установка размера шрифта
display.write(3); // Отправка символа
display.display(); //
delay(2000); // Пауза 2 с
display.clearDisplay(); // Очистка дисплея
// Поворот текста
while(1)
{
display.clearDisplay(); // Очистка дисплея
display.setRotation(rotatetext); //
display.setTextSize(1); // Установка размера шрифта
display.setTextColor(BLACK); // Установка цвет текста
display.setCursor(0,0); // Установка курсора
display.println("Text Rotation"); // Отправка текста
display.display(); //
delay(1000); // Пауза 1 с
display.clearDisplay(); // Очистка дисплея
rotatetext++; // Увеличение rotatetext на 1
}
}
void loop() {}
Описание скетча:
Скетч начинается с включения трех библиотек, SPI., Adafruit_GFX.h и Adafruit_PCD8544.h. Далее создаем объект, для работы с дисплеем в котором указываем 5 параметров.
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>
Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 4, 3);
int rotatetext = 1;
В void setup(), инициализируем работу с LCD дисплей. Так же, указываем контрастность дисплея с помощью setContrast(value) с значением между 0-100. Затем мы очищаем буфер перед выводом нашего первого сообщения на экран.
Serial.begin(9600);
display.begin();
display.setContrast(57);
display.clearDisplay();
Далее, для отображения текста на экране устанавливаем размер шрифта, с помощью функции setTextSize() с указанием размера шрифта. Следующий командой setTextColor() устанавливаем цвет шрифта, где BLACK темный, WHITE светлый. Теперь перед отправкой текста, необходимо установить позицию курсора, вызываем функцию setCursor(X,Y).
display.setTextSize(1);
display.setTextColor(BLACK);
display.setCursor(0,0);
display.println("Hello world!");
display.display();
delay(2000);
display.clearDisplay();
Для отображения инверсного текста, снова вызываем функцию setTextColor(), только теперь передадим два параметра, остальные команды схожи по описанию выше.
diplay.setTextColor(WHITE, BLACK);
display.setCursor(0,0);
display.println("Hello world!");
display.display();
delay(2000);
display.clearDisplay();
Масштабирование осуществляется с помощью функции setTextSize(), можно передать любое не отрицательное число.
display.setTextColor(BLACK);
display.setCursor(0,0);
display.setTextSize(2);
display.println("Hello!");
display.display();
delay(2000);
display.clearDisplay();
Отображение чисел можно с вызовом простых функций print() или println().
display.setTextSize(1);
display.setCursor(0,0);
display.println(123456789);
display.display();
delay(2000);
display.clearDisplay();
Дисплей поддерживает отображение символов ASCII, для этого функциями print() и println() отправляют данные на дисплей в виде удобочитаемого текста ASCII, в то время как write() функция отправляет двоичные данные на дисплей. Таким образом, вы можете использовать эту функцию для отображения символов ASCII. В нашем примере при отправке числа 3 будет отображаться символ сердца.
display.setCursor(0,0);
display.setTextSize(2);
display.write(3);
display.display();
delay(2000);
display.clearDisplay();
Чтобы повернуть текст, нужно вызвав setRotation()функцию. Функция принимает только один параметр, соответствующий 4 кардинальным поворотам. Это значение может быть любым неотрицательным целым числом, начиная с 0. Каждый раз, когда вы увеличиваете значение, содержимое дисплея поворачивается на 90 градусов против часовой стрелки. Например:
- 0 — сохраняет стандартную альбомную ориентацию экрана.
- 1 — Поворачивает экран на 90 ° вправо.
- 2 — переворачивает экран вверх дном.
- 3 — Поворачивает экран на 90 ° влево.
while(1)
{
display.clearDisplay();
display.setRotation(rotatetext);
display.setTextSize(1);
display.setTextColor(BLACK);
display.setCursor(0,0);
display.println("Text Rotation");
display.display();
delay(1000);
display.clearDisplay();
rotatetext++;
}
Купить на Aliexpress
Контроллер Arduino UNO R3 на CH340G
Контроллер Arduino UNO R3 на Atmega16U2
Провода DuPont, 2,54 мм, 20 см
Графический LCD дисплей Nokia 5110 — 84×84
