LCD Nokia 5110

В большом количестве проектов для arduino и не только, необходимо знать, какое состояние наших датчиков в данный момент. Для этих целей подойдут LCD дисплеи. Сегодня разберем работу LCD Nokia 5110.

Данный дисплей является монохромным или по простому черно-белым. Не смотря на небольшие размеры 84 на 48 пикселей, позволяет выводить простую графику а также текст.

Описание LCD Nokia 5110

На сайте алиэкспрес представлены два вида таких дисплеев: синего и красного цвета. Отличаются они по подключению подсветки.

Дисплей Lcd Nokia 5110

Характеристики дисплея LCD Nokia 5110 представлены в таблице ниже:

ХарактеристикаЗначение
Напряжение3.3 В
Размер видимой области84х48 pixel
ТипTFT
Цветмонохромный
Интерфейс обменаSPI
Потреблениебез подсветки 5 мА
с подсветкой 20 мА
Температура работы0..+50
Частота тактировниядо 4Мгц
Время сброса100 нс
МикросхемаPCD8544

Схема подключения дисплея к Arduino

Схема подключения дисплея LCD Nokia 5110

Описание контактов дисплея NOKIA 5110

VCCПитание 3,3 В
GNDОбщий провод
CEВключение, активный низкий уровень
DCДанные/команда: 0 – данные, 1 – команда
DINВход интерфейса SPI
CLKТактовый сигнал
ResetСброс, активный низкий уровень
LEDПодсветка. Для модулей на красной плате соединить с общим, для синих
модулей соединить с питанием. Применять в цепи подсветки резистор 330
Ом. В некоторых модификациях уже установлен резистор в некоторых
нет. Для определения наличия резистора и выбора оптимального режима
подсветки следует контролировать ток модуля и ток подсветки. Он не
должен превышать 20 мА.

Подключение дисплея Nokia 5110

Обратите внимание, в модулях синего цвета подсветка подключается к питанию, в красных модулях к GND.

Дисплей Nokia 5110 Плата Arduino
Контакт 1 RST D12
Контакт 2 CE D11
Контакт 3 DC D10
Контакт 4 DIN D9
Контакт 5 CLK D8
Контакт 6 VCC +3.3V
Контакт 7 LIGHT GND
Контакт 8 GND GND

Подготовка графики для дисплея

И так, мы подключили наш дисплей к ардуино, но нам необходимо подготовить графику для LCD. Так как дисплей монохромный то у нас в наличии только 2 цвета: черный и белый. Так же необходимо помнить о размере дисплея: 84×48.

Для удобной работы с графикой, используйте программу Image Generator.

Нажимаем Картинка, открываем нужный файл и нажимаем преобразовать.

Преобразование картинки

Далее в вкладке Массив, мы имеем наш массив байт. Его мы копируем и вставляем в нашу программу.

Пример использования LCD Arduino mega

Для работы с LCD Nokia 5110 мы будем использовать библиотеку Nokia_LCD.h. Полное описание библиотеки смотрите здесь.

#include <Nokia_LCD.h>
#include "Small_LCD_Fonts.h"

// The bitmap was generated via the `LCD Assistant` utility.
static const char platis_solutions_logo[504] PROGMEM =
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 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, 0x0C, 0x8C, 0x4E, 0x3F, 0x0F, 0x0F, 0x3F, 0x4E, 0x8C, 0x08,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xFC, 0xFE, 0x20, 0x30, 0x1C,
  0x0E, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
  0x02, 0x0C, 0x10, 0x20, 0xFE, 0xFC, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00,
  0x00, 0x00, 0xFF, 0xFF, 0x01, 0x01, 0x71, 0x71, 0x71, 0x03, 0x0E, 0xFC,
  0x60, 0x00, 0x03, 0x1F, 0x7D, 0xE3, 0x1E, 0x3E, 0xCF, 0x71, 0x1F, 0x03,
  0x01, 0x0F, 0x0D, 0xFD, 0xFD, 0x01, 0xFD, 0xFD, 0x0D, 0x0F, 0x00, 0x03,
  0x0F, 0x3D, 0xE3, 0xDE, 0x3C, 0xCF, 0xF1, 0x3F, 0x0F, 0x01, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x3F, 0x02, 0x04, 0x08,
  0x30, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0,
  0x70, 0x38, 0x0C, 0x06, 0x7F, 0x3F, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00,
  0x00, 0x00, 0xFF, 0xFF, 0x80, 0x80, 0xF8, 0x08, 0xF8, 0x84, 0xBE, 0xF3,
  0x00, 0x80, 0xF0, 0xF8, 0x8E, 0xF3, 0x3C, 0x3C, 0xF3, 0xCE, 0xFC, 0xF0,
  0x80, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xC0,
  0xF8, 0x8E, 0xF7, 0x79, 0x3E, 0x79, 0xC7, 0xBC, 0xF0, 0xC0, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x10, 0x31, 0x72, 0xFC, 0xF0, 0xFC, 0x7E, 0x71, 0x31, 0x10,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 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, 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};

unsigned  int Counter = 0;
Nokia_LCD lcd(8 /* CLK */, 9 /* DIN */, 10 /* DC */, 11 /* CE */, 12 /* RST */, 7 /* BL */);

/**
 * Or, if you would like to control the backlight on your own, init the lcd without the last argument
 * Nokia_LCD lcd(13, 12, 11, 10, 9);
*/

void setup() {
  // Initialize the screen
  lcd.begin();
  // Turn on the backlight
  lcd.setBacklight(true);
  // Set the contrast
  lcd.setContrast(60);  // Good values are usualy between 40 and 60
  // Clear the screen by filling it with black pixels
  lcd.clear(true);
  delay(2000);
  // Draw the platis.solutions logo on your screen
  lcd.draw(platis_solutions_logo,
           sizeof(platis_solutions_logo) / sizeof(platis_solutions_logo[0]),
           true);
  delay(3000);
  // Clear the screen by filling it with white pixels
  lcd.clear();
  // Turn off the backlight
 // lcd.setBacklight(false);
  // Set the cursor on the beginning of the 6th row (the last one)
  lcd.setCursor(0, 0);
  lcd.setDefaultFont();
  // Write something on the specific row with inverted color
  //lcd.setInverted(true);
  lcd.print("Hello world!");
  //lcd.setInverted(false);
  // The cursor is still on the 6th row. Newline characters ('\n') move the
  // cursor to the next line. Since we were on the last row, the cursor goes
  // back to the first line. If you check the return value of `println`
  // it will indicate whether an out-of-bounds error occured. In this case it
  // will be `true`.
  lcd.println("\nI am here.");
}

void loop() 
{
  // put your main code here, to run repeatedly:
    Counter++;
    lcd.setCursor(0, 3);
    lcd.println("Counter = ");
    lcd.print(Counter);
    //delay(1000);
    
}
Демонстрация работы программы

Документация

Где купить

  • LCD Nokia 5110
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии