Обзор LCD дисплея Nokia 5110
В этой статье расскажу об еще одном дисплеи 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 и загружаем скетч в контроллер.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
#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 параметров.
1 2 3 4 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. Затем мы очищаем буфер перед выводом нашего первого сообщения на экран.
1 2 3 4 5 |
Serial.begin(9600); display.begin(); display.setContrast(57); display.clearDisplay(); |
Далее, для отображения текста на экране устанавливаем размер шрифта, с помощью функции setTextSize()
с указанием размера шрифта. Следующий командой setTextColor()
устанавливаем цвет шрифта, где BLACK темный, WHITE светлый. Теперь перед отправкой текста, необходимо установить позицию курсора, вызываем функцию setCursor(X,Y)
.
1 2 3 4 5 6 7 |
display.setTextSize(1); display.setTextColor(BLACK); display.setCursor(0,0); display.println("Hello world!"); display.display(); delay(2000); display.clearDisplay(); |
Для отображения инверсного текста, снова вызываем функцию setTextColor(),
только теперь передадим два параметра, остальные команды схожи по описанию выше.
1 2 3 4 5 6 |
diplay.setTextColor(WHITE, BLACK); display.setCursor(0,0); display.println("Hello world!"); display.display(); delay(2000); display.clearDisplay(); |
Масштабирование осуществляется с помощью функции setTextSize()
, можно передать любое не отрицательное число.
1 2 3 4 5 6 7 |
display.setTextColor(BLACK); display.setCursor(0,0); display.setTextSize(2); display.println("Hello!"); display.display(); delay(2000); display.clearDisplay(); |
Отображение чисел можно с вызовом простых функций print()
или println()
.
1 2 3 4 5 6 |
display.setTextSize(1); display.setCursor(0,0); display.println(123456789); display.display(); delay(2000); display.clearDisplay(); |
Дисплей поддерживает отображение символов ASCII, для этого функциями print()
и println()
отправляют данные на дисплей в виде удобочитаемого текста ASCII, в то время как write()
функция отправляет двоичные данные на дисплей. Таким образом, вы можете использовать эту функцию для отображения символов ASCII. В нашем примере при отправке числа 3 будет отображаться символ сердца.
1 2 3 4 5 6 |
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 ° влево.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
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