Обзор 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

Вам может также понравиться...

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *