Рейтинг@Mail.ru
LCD экран Nokia 5110
LCD экран Nokia 5110

Как подключить LCD дисплей для Nokia 5110 к Arduino

Разбираемся с подключением жидкокристаллического монохромного дисплея с разрешением 84×48 точек от Nokia 5110 к Arduino.

Инструкция по подключению ЖК экрана Nokia 5110 к Arduino

Вам понадобится

  • Arduino;
  • ЖК дисплей для Nokia 5110/3310;
  • соединительные провода.

1Схема подключения ЖК экрана Nokia 5110 к Arduino

Подключим ЖК экран от Nokia 5110 к Arduino по приведённой схеме.

Схема подключения ЖК экрана Nokia 5110 к Arduino
Схема подключения ЖК экрана Nokia 5110 к Arduino
Пин ArduinoПин экрана Nokia 5110НазваниеФункция
3,3 V1VccПитание экрана, от 2,7 до 3,3 В
GND2GNDЗемля
33SCEEnable, активный LOW
44ResetReset, активный LOW
55D/CВыбор «Данные/команда»:
"0" – данные, "1" – команда
66SDNВход данных
77SCLKВход тактовых импульсов
3,3 V8LEDСветодиодная подсветка экрана

Будьте внимательны, некоторые модификации экрана (китайские копии), имеют другую нумерацию выводов. Также на некоторых модификациях экрана вывод подсветки подключается к GND, а не Vcc.

2Библиотека для работы с LCD дисплеем Nokia 5110

Для работы с этим LCD экраном написано много библиотек. Предлагаю воспользоваться вот этой библиотекой. Скачаем и разархивируем скачанный файл в директорию Arduino IDE/libraries/.

Библиотека поддерживает следующие возможности.

ФункцияНазначение
LCD5110(SCK, MOSI, DC, RST, CS)объявление ЖК экрана с указанием соответствия пинам Arduino;
InitLCD([contrast])инициализация дисплея 5110 с опциональным указанием контрастности (0-127), по умолчанию используется значение 70;
setContrast(contrast)задаёт контрастность (0-127);
enableSleep()переводит экран в спящий режим;
disableSleep()выводит экран из спящего режима;
clrScr()очищает экран;
clrRow(row, [start], [end])очистка выбранной строки номер row, от позиции start до end;
invert(true), invert(false)включение и выключение инверсии содержимого LCD экрана;
print(string, x, y)выводит строку символов с заданными координатами; вместо x-координаты можно использовать LEFT, CENTER и RIGHT; высота стандартного шрифта 8 точек, поэтому строки должны идти с интервалами через 8;
printNumI(num, x, y, [length], [filler])вывести целое число на экран на заданной позиции (x, y); length – желаемая длина числа; filler – символ для заполнения «пустот», если число меньше желаемой длины; по умолчанию это пустой пробел " ";
printNumF(num, dec, x, y, [divider], [length], [filler])вывести число с плавающей запятой; dec – число знаков после запятой; divider – знак десятичного разделителя, по умолчанию точка ".";
setFont(name)выбрать шрифт; встроенные шрифты называются SmallFont и TinyFont; вы можете определить свои шрифты в скетче;
invertText(true), invertText(false)инверсия текста вкл./выкл.;
drawBitmap(x, y, data, sx, sy)вывести картинку на экран по координатам x и y; data – массив, содержащий картинку; sx и sy – ширина и высота рисунка.

3Скетч для вывода текста на ЖК экран Nokia 5110

Напишем такой скетч.

#include <LCD5110_Basic.h> // подключаем библиотеку

LCD5110 myGLCD(7,6,5,4,3); // объявляем номера пинов LCD

extern uint8_t SmallFont[]; // малый шрифт (из библиотеки)
extern uint8_t MediumNumbers[]; // средний шрифт для цифр (из библиотеки)

int seconds = 0; // счётчик секунд

void setup() {
  myGLCD.InitLCD(); // инициализация LCD дисплея
}

void loop() {
  myGLCD.clrScr(); // очистка экрана
  myGLCD.setFont(SmallFont); // задаём размер шрифта
  myGLCD.print("Hello,", LEFT, 0); // выводим на строке 0, равнение по левому краю  
  myGLCD.print("SolTau.ru :-)", CENTER, 16); // выводим в строке 16

  myGLCD.setFont(MediumNumbers); // задаём размер шрифта
  myGLCD.print(String(seconds), CENTER, 34); // выводим в строке 34    
  seconds += 1; // инкрементируем счётчик

  delay (1000); // задержка 1 сек
}

Сначала подключаем библиотеку, затем объявляем экземпляр класса LCD5110 с назначением выводов. В процедуре setup() инициализируем ЖК экран. В процедуре loop() очищаем экран и пишем маленьким шрифтом произвольный текст, под ним – средним шрифтом выводим счётчик секунд.

Вывод текстовых данных на LCD экран Nokia 5110 с помощью Arduino
Вывод текстовых данных на LCD экран Nokia 5110 с помощью Arduino

4Скетч для вывода изображения на ЖК экран Nokia 5110

Давайте к тексту на экране добавим картинку. Для этого подготовим монохромное изображение, которое хотим вывести на экран Nokia 5110. Помните, что разрешение экрана Nokia 5110 составляет 48 на 84 точек, и картинка должна быть не больше. Воспользуемся онлайн-инструментом для преобразования изображения в массив битов. Скачаем полученный файл с расширением "*.c" и добавим его к проекту через меню: Эскиз Добавить файл… или просто поместим файл в директорию скетча, а затем перезагрузим среду разработки Arduino IDE.

Добавление файла к проекту Arduino
Добавление файла к проекту Arduino

Дополним наш скетч работой с изображением.

#include <LCD5110_Basic.h> 

LCD5110 myGLCD(7,6,5,4,3);  

extern uint8_t SmallFont[]; 
extern uint8_t MediumNumbers[]; 
extern uint8_t mysymb[]; // массив из точек изображения

int seconds = 0; 

void setup() {
  myGLCD.InitLCD(); 
}

void loop() {
  myGLCD.clrScr(); // очистка экрана
  myGLCD.drawBitmap(CENTER, 0, mysymb, 48, 48); // выводим изображение
  delay (1000); // задержка 1 сек

  myGLCD.clrScr();  
  myGLCD.setFont(SmallFont); 
  myGLCD.print("Hello,", LEFT, 0);    
  myGLCD.print("SolTau.ru :-)", CENTER, 16); 
  myGLCD.setFont(MediumNumbers);  
  myGLCD.print(String(seconds), CENTER, 34);   
  delay (1000); 
  seconds += 1; 
}

Теперь нужно в коде программы объявить массив с данными изображения (у меня в коде это строка extern uint8_t mysymb[];, а в файле изображения массив называется mysymb[]), а затем используем функцию drawBitmap() для вывода изображения в нужном месте экрана.

Загрузим скетч в Arduino. Теперь текст сменяется картинкой, и счётчик каждый раз увеличивает своё значение.

Вывод изображения на ЖК экран Nokia 5110 с помощью Arduino
Вывод изображения на ЖК экран Nokia 5110 с помощью Arduino
LCD экран Nokia 5110 и Arduino
Последнее изменениеВторник, 31 Январь 2017 19:08
(1 Голосовать)
Прочитано 13716 раз
Теги :

Поделиться

Другие материалы в этой категории:

« Как хранить данные в Arduino Интерфейс SPI и Arduino »

Оставить комментарий

Убедитесь, что вы вводите (*) необходимую информацию, где нужно
HTML-коды запрещены