Lcd 5110 включение подсветки кнопкой. Ссылки для скачивания дополнительных программ, библиотек и даташитов. Описание Arduino Uno

Новые статьи

● Проект 16: Графический индикатор. Подключение дисплея Nokia 5110

В этом эксперименте мы рассмотрим графический дисплей Nokia 5110, который можно использовать в проектах Arduino для вывода графической информации.

Необходимые компоненты:

Жидкокристаллический дисплей Nokia 5110 - монохромный дисплей с разрешением 84×48 на контроллере PCD8544, предназначен для вывода графической и текстовой информации. Питание дисплея должно лежать в пределах 2.7-3.3 В (максимум 3.3 В, при подаче 5 В на вывод VCC дисплей может выйти из строя). Но выводы контроллера толерантны к +5 В, поэтому их можно напрямую подключать к входам Arduino. Немаловажный момент - низкое потребление, что позволяет питать дисплей от платы Arduino без внешнего источника питания.
Схема подключения Nokia 5110 к Arduino показана на рис. 16.1.

Рис. 16.1. Схема подключения Nokia 5110 к Arduino

Для работы с дисплеем Nokia 5110 будем использовать библиотеку Adafruit_GFX, которая имеет богатые возможности для вывода графики и текста. В нашем эксперименте мы будем получать данные освещенности с фоторезистора, подключенного к аналоговому входу Arduino A0, и выводить данные освещенности в числовом и графическом представлениях. Схема подключения показана на рис. 16.2.

Рис. 16.2. Схема подключения Nokia 5110 и фоторезистора к Arduino

Код скетча нашего эксперимента показан в листинге 16.1. Мы считываем данные с фоторезистора и отображаем числовое значение, а также в графическом виде (прогресс-бар) значение освещенности в процентах от максимального значения. Значения минимальной и максимальной освещенности берем из эксперимента 13.

// Подключение библиотеки #include #include // PIN 7 - RST Pin 1 on LCD // PIN 6 - CE Pin 2 on LCD // PIN 5 - DC Pin 3 on LCD // PIN 4 - DIN Pin 4 on LCD // PIN 3 - CLK Pin 5 on LCD Adafruit_PCD8544 display = Adafruit_PCD8544(3 , 4 , 5 , 6 , 7 ); const int LIGHT=A0; // Контакт A0 для входа фоторезистора const int MIN_LIGHT=200 ; // Нижний порог освещенности const int MAX_LIGHT=900 ; // Верхний порог освещенности // Переменная для хранения данных фоторезистора int val1,val2 = 0 ; void setup () { display.begin(); // установить контраст фона экрана // очень важный параметр! display.setContrast(60 ); display.clearDisplay(); // очистить экран delay(2000 ); } void loop () { val1 = analogRead(LIGHT); // Чтение показаний фоторезистора drawText(val1,1 ); // вывести текст // масштабирование значения потенциометра к 0-75 val2= map (val1, MIN_LIGHT, MAX_LIGHT, 0 , 75 ); // вывод черного прямоугольника в % display.fillRect(5 , 25 , val2, 10 , 1 ); // вывод белой части прямоугольника display.fillRect(5 +val2,25 , 75 -val2, 10 , 0 ); display.display(); delay(1000 ); // пауза перед новым измерением drawText(val1,2 ); // стереть текст } // процедура вывода текста void drawText (unsigned long num,int color) { display.setTextSize(2 ); // размер шрифта display.setCursor(20 ,5 ); // позиция курсора if (color==1 ) display.setTextColor(BLACK); // вывести значение else display.setTextColor(WHITE); // стереть (белым по белому) display.print(num); }
Порядок подключения:

1. Подключаем датчик дисплея Nokia 5110 и фоторезистор по схеме на рис. 16.2.
2. Загружаем в плату Arduino скетч из листинга 16.1.
3. Перекрывая рукой поток света, смотрим на экране дисплея изменение показаний освещенности.

Листинги программ

Ранее в этом блоге было рассмотрено несколько ЖК-дисплеев / индикаторов и их использование из Arduino. Существенным их недостатком является довольно большой размер, а также вес. Зачастую это не является проблемой. Например, если вы собираете DIY паяльную станцию в самодельном корпусе, там как-то без разницы, какого размера дисплей. С другой стороны, если вам нужен дисплей, скажем, на квадрокоптере , тут вес и размер становятся критически важными. Поэтому сегодня мы научимся работать с очень маленьким и легким экранчиком от телефона Nokia 5110.

Примечание: Другие посты по теме экранчиков — Научился выводить текст на ЖК-индикатор из Arduino , Об использовании экранчиков 1602 с I2C-адаптером , Работаем с LCD на базе HD44780 без библиотек , и Цифровой термометр из ЖК-матрицы, TMP36 и Arduino .

Не беспокойтесь, покупать эффективно не существующий нынче телефон Nokia 5110, выковыривать из него экранчик и выбрасывать все остальные детали не придется. Экранчик от Nokia 5110 являются очень распространенным самостоятельным модулем для радиолюбителей и стоит где-то от 2 до 5$, в зависимости от магазина. В России модуль можно купить, например, на tpai.ru , arduino-kit.ru , amperkot.ru , compacttool.ru , chipster.ru или electromicro.ru . Ну и, конечно же, по самой низкой цене экранчики продаются на AliExpress, но придется подождать месяц или два, пока они придут из Китая.

Как это часто бывает в мире Arduino, для модуля уже существуют готовые библиотеки, и не одна. Мне понравилась библиотека LCD5110, выложенная на сайте rinkydinkelectronics.com. У этой библиотеки есть две версии. Первая называется LCD5110_Basic . Она попроще и способна выводить только текст шрифтами разного размера. Есть возможность создания собственных шрифтов. Вторая версия называется LCD5110_Graph . Она имеет все возможности первой библиотеки и в дополнение к ним умеет рисовать отрезки, прямоугольники, круги и так далее.

В рамках этого поста будет использована LCD5110_Basic. Обе библиотеки прекрасно документированы и имеют множество примеров использования, так что при необходимости в LCD5110_Graph вы без труда разберетесь самостоятельно. Стоит однако отметить, что чтобы LCD5110_Basic компилировалась без warning’ов, мне пришлось внести пару небольших правок в ее код.

Итак, пример использования библиотеки:

#include

extern uint8_t BigNumbers ;
extern uint8_t MediumNumbers ;
extern uint8_t SmallFont ;

/* SCK / CLK, MOSI / DIN, DC, RST, CS */
LCD5110 lcd(2 , 3 , 4 , 6 , 5 ) ;

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

int ctr = 0 ;
void loop()
{
lcd.clrScr () ;

Lcd.setFont (BigNumbers) ;
lcd.printNumI (ctr, RIGHT, 0 ) ;

Lcd.setFont (MediumNumbers) ;
lcd.printNumF (12.34 , 2 , RIGHT, 24 ) ;

Lcd.setFont (SmallFont) ;
lcd.print ("Line 1" , 0 , 8 * 0 ) ;
lcd.print ("Line 2" , 0 , 8 * 1 ) ;
lcd.print ("Line 3" , 0 , 8 * 2 ) ;
lcd.print ("L 4" , 0 , 8 * 3 ) ;
lcd.print ("L 5" , 0 , 8 * 4 ) ;
lcd.print ("0123456789ABCD" , 0 , 8 * 5 ) ;

Ctr + = 5 ;
if (ctr >= 1000 )
ctr = 0 ;

Delay(500 ) ;
}

Как это выглядит в действии:

Надеюсь, что код разжевывать не требуется. Заметьте, что модуль питается от 3.3 В, но команды от Arduino при этом понимает нормально безо всяких преобразователей логических уровней. Соответственно, пины VCC (питание) и BL (подсветка) подключаем к 3.3 В, GND подключаем к земле, остальные пять пинов подключаем к цифровым пинам Arduino. Номера пинов передаем конструктору класса LCD5110 в соответствии с комментариями в приведенном коде.

Просто, не правда ли? Полную версию исходников к этой заметке вы найдете в этом репозитории на GitHub . Дополнения и вопросы, как всегда, всячески приветствуются.

Дополнение: Автор библиотеки для работы с экранчиком от Nokia 5110 также является автором библиотеки OLED_I2C, предназначенной для работы с не менее популярными OLED-экранчиками с I2C-интерфейсом. Пример использования OLED_I2C вы найдете в посте Используем джойстик от Sega Genesis в проектах на Arduino . Как можно было ожидать, эти две библиотеки имеют похожий интерфейс.

В этом уроке мы сначала покажем некоторые данные на экране Nokia 5110, а после выведем на него данные датчика DHT22. Мы собираемся связать ЖК-дисплей Nokia 5110 и Arduino. Вы изучите интерфейс Nokia 5110 Arduino с помощью двух примеров. Во-первых, мы просто покажем некоторые данные на экране, а во втором примере мы будем читать с датчика температуры и влажности DHT22 показатели и покажем их на ЖК-экране Nokia 5110.

Nokia 5110 LCD - отличный выбор для отображения данных. Это дешевле обычных ЖК и его очень легко использовать с микроконтроллерами. Вам просто нужно подключить несколько проводов и всё готово к работе.

Для подключения Nokia 5110 к Ардуино нам нужны будут сам экран с микроконтроллером и еще ряд деталей.

  • Nokia 5110 LCD × 1
  • Многооборотный прецизионный потенциометр - 1 кОм (25 витков) × 1
  • Резистор 10 кОм × 4
  • Резистор 1 кОм × 1
  • Резистор 330 Ом × 1
  • Перемычки × 1
  • Макет (универсальный) × 1

Дополнительно нам понадобится программное обеспечение в виде , с которым вы скорее всего знакомы.

Распиновка Nokia 5110

Выводы Nokia 5110 LCD выглядит следующим образом:

RST : пин сброса
SCE : пин выбора чипа
D/C : (Данные / Команда): это вывод выбора режима. LOW означает командный режим, а HIGH означает режим данных.
DN (Data Pin): последовательные данные на входе
SCLK : последовательный тактовый сигнал
VCC : входное напряжение от 2,7 до 3,3 В
Светодиод : этот светодиод является подсветкой. Входное напряжение 3,3 В
GND : земля

Пример №1

В первом примере мы просто отобразим данные на ЖК-дисплее Nokia 5110. Принципиальная схема для соединения Nokia 5110 и Arduino показана ниже.

Схема соединения

Для работы Nokia 5110 LCD требуется 3,3 В, поэтому нам придется использовать резисторы для преобразования 5 В в 3,3 В. Если вы будете работать с Nokia 5110 без резисторов, экран будет работать, но срок службы ЖК-дисплея сократится.

  • Подключите контакт 1 (контакт RST) к контакту 6 Arduino через резистор 10 кОм.
  • Подключите контакт 2 (контакт SCE) к контакту 7 Arduino через резистор 1 кОм.
  • Подсоедините контакт 3 (контакт D/C) к контакту 5 Arduino через резистор 10 кОм.
  • Подсоедините контакт 4 (DIN контакт) к контакту 4 Arduino через резистор 10 кОм.
  • Подсоедините контакт 5 (контакт CLK) к контакту 3 Arduino через резистор 10 кОм.
  • Подсоедините контакт 6 (контакт VCC) к контакту 3,3 В Arduino.
  • Подсоедините контакт 7 (светодиодный контакт) к среднему контакту потенциометра 1 кОм через резистор 330 Ом и подключите два других контакта к VCC и заземлению.
  • Подсоедините контакт 8 (контакт GND) к заземлению Arduino.

Подключенный потенциометр используется для увеличения или уменьшения подсветки ЖК-дисплея. Вы можете подключить его к 3,3 В, если хотите, чтобы подсветка всегда была сильной, или вы можете подключить его к заземлению, если вы не хотите иметь подсветку.

Код

Скачайте библиотеку Nokia 5110 ниже.

Сам код первого примера:

#include PCD8544 lcd; void setup() { lcd.begin(84, 48); } void loop() { lcd.setCursor(0, 0); lcd.print(" WELCOME "); lcd.setCursor(0, 1); lcd.print(" To"); lcd.setCursor(0,2); lcd.print("сайт"); delay(200); }

Прежде всего, мы подключаем библиотеку для Nokia 5110 LCD. Библиотека будет включать все команды, которые нам потребуются для ЖК-дисплея Nokia 5110. Затем мы объявили переменную с именем «lcd» типа PCD8544.
#include PCD8544 lcd;

Затем в функции setup (настройка) мы установили разрешение для Nokia 5110 LCD. ЖК-дисплей Nokia5110 имеет разрешение 84х48, поэтому мы установили разрешение 84х48 в Arduino IDE.

lcd.begin(84, 48);

Затем в функции loop (цикл) мы сначала установили курсор на первую строку и напечатали «Добро пожаловать!» (WELCOME)..

Lcd.setCursor(0, 0); lcd.print(" WELCOME "); lcd.setCursor(0, 1); lcd.print(" To"); lcd.setCursor(0,2); lcd.print("сайт"); delay(200);

Пример №2

Во втором примере мы подключим датчик температуры и влажности DHT22 к Arduino и с помощью DHT22 будем считывать температуру, влажность и тепловой индекс. Затем мы покажем эти данные на ЖК-дисплее Nokia 5110. Принципиальная схема интерфейса Nokia 5110, Arduino и DHT22 приведена ниже.

Схема соединения

Соединения ЖК-дисплея Nokia 5110 с Arduino описаны в первом примере. Соедините контакты датчика DHT22 с Arduino, как показано на схеме выше:

  • Контакт 1 DHT22 на 5В Arduino.
  • Контакт 2 DHT22 к контакту 8 Arduino.
  • Контакт 4 DHT22 к контакту заземления Arduino.

Код

Скачайте библиотеки Nokia 5110 и DHT ниже.

Код для второго примера ниже:

#include #include "DHT.h" #define DHTPIN 8 #define DHTTYPE DHT22 PCD8544 lcd; DHT dht(DHTPIN, DHTTYPE); void setup() { lcd.begin(84, 48); dht.begin(); } void loop() { lcd.clear(); float hum = dht.readHumidity(); float temp = dht.readTemperature(); //Reading the temperature in degrees float fah = dht.readTemperature(true); //Reading the temperature in fahrenheit if (isnan(hum) || isnan(temp) || isnan(fah)) { //Checking if the arduino have recieved the values or not lcd.println("Failed to read from DHT sensor!"); return; } float heat_index = dht.computeHeatIndex(fah, hum); //Reading the heat index in fahrenheit float heat_indexC = dht.convertFtoC(heat_index); //Reading the heat index in degrees lcd.setCursor(0, 0); lcd.print("Humi: "); lcd.print(hum); lcd.print(" %\t"); lcd.setCursor(0, 1); lcd.print("Temp: "); lcd.print(temp); lcd.print(" *C "); lcd.setCursor(0,2); lcd.print("Temp: "); lcd.print(fah); lcd.print(" *F\t"); lcd.setCursor(0,3); lcd.print("Hi: "); lcd.print(heat_indexC); lcd.print(" *C "); lcd.setCursor(0,4); lcd.print("Hi: "); lcd.print(heat_index); lcd.println(" *F "); delay(2000); }

Прежде всего, мы включили библиотеки для Nokia 5110 LCD и датчика температуры и влажности DHT22. После этого мы инициализировали контакт 8 для DHT22 (DHTPIN 8) и определили тип датчика DHT. Также доступны другие модели датчиков DHT, но мы использовали DHT22 из-за его высокой точности. Затем мы объявили переменную «lcd» типа PCD8544 для ЖК-дисплея и переменную «dht» типа DHT для датчика DHT22.

#include #include "DHT.h" #define DHTPIN 8 #define DHTTYPE DHT22 PCD8544 lcd; DHT dht(DHTPIN, DHTTYPE);

Затем в функции настройки setup мы установили разрешение для Nokia 5110 LCD. ЖК-дисплей Nokia5110 имеет разрешение 84х48, поэтому мы установили разрешение 84х48 в Arduino IDE. После этого мы начали получать данные с датчика DHT22 с помощью команды dht.begin() .

Lcd.begin(84, 48); dht.begin();

В функции цикла loop мы читаем значения влажности, температуры и индекса тепла из DHT22 и сохраняем в переменных. В конце мы напечатали их на ЖК-экране Nokia 5110.

Float hum = dht.readHumidity(); float temp = dht.readTemperature(); float fah = dht.readTemperature(true); . . . lcd.setCursor(0,4); lcd.print("Hi: "); lcd.print(heat_index); lcd.println(" *F ");

Наверное, у меня, как и у всех Arduino-строителей, появилась какая-то бредовая идея в голове. Заказал в Китае все необходимые детали. Ждать пришлось очень долго, но тут раньше срока был доставлен клон платы Arduino Uno и LCD-дисплей Nokia 5110 . Так как до этого с электроникой и программированием я был не знаком, решил не терять время зря и начал учиться выводить информацию на данный модуль.

Первым делом я загуглил и попал на публикацию «Arduino, модуль Nokia 5110 LCD и кириллица» от автора . И тут я понял, что всё, что раньше задумал, будет не так уже и просто сделать.

С кириллицей я разобрался, там все просто, не буду копипастить прошлый пост, а вот с картинками действительно проблема. Стоит задача: нужно нарисовать картинку и залить ее на дисплей. Столкнулся с первой проблемой, зашел в среду программирования Arduino я увидел, что там нет такой штуки как «Вставить - Изображения», а нужно картинку записать определенным кодом в hex системе исчисления . Нашел несколько редакторов, но не тут то было. Картинка адекватно не отображается. Я начал искать проблемы что может быть.

Методом кучей экспериментов, попыток и проб получился алгоритм которым я с вами поделюсь:

1) Нужно получить саму картинку, в черно-белом формате.bmp с расширением 84 х 48 пикселей.
Сделать это можно кучей способами почти у каждом графическом редакторе есть функция «Cохранить как» где указываем необходимые параметры.
Я делал в corelDRAW . Получаем что-то похожее. Нужно уточнить, что имя картинки обязательно должно сохранено латинской раскладкой клавиатуры, так как следующая программа ее не сможет открыть.

2) Если необходимо, можно отредактировать картинку в paint, как ни странно, там есть несколько простых и интересных инструментов.

3) При помощи получаем hex-код картинки.

4) Вставляем данный код в программный код Arduino и заливаем на плату:

// SCK - Pin 8 // MOSI - Pin 9 // DC - Pin 10 // RST - Pin 11 // CS - Pin 12 // #include LCD5110 myGLCD(8,9,10,11,12); extern uint8_t OKO; float y; uint8_t* bm; int pacy; void setup() { myGLCD.InitLCD(); } void loop() { myGLCD.clrScr(); myGLCD.drawBitmap(0, 0, OKO, 84, 48); myGLCD.update(); delay(2000); }

#include const uint8_t OKO PROGMEM={ //Скопированный hex-код GLCD tools };

Фирмы Philips PCD8544.
Для соединения модуля с другими устройствами плата содержит вилку соединителя и отверстия для припаивания проводов. Также имеются 4 установочных отверстия, расположенные по углам платы.
Монохроматический дисплей Nokia 5110 LCD (blue screen) имеет подсветку синими светодиодами. За годы производства Nokia 5110 применялся и применяется в широком спектре приложений. Модуль дисплея облегчает подключение Nokia и установку в приборе. Благодаря модулю упрощается первое знакомство электронщика, программиста с дисплеем Nokia 5110 LCD. Изначально применявшийся как индикатор мобильного телефона дисплей распространился в другие категории приборов. Его удобно использовать в измерительных приборах: вольтметрах, амперметрах, омметрах и других. Пригодится дисплей и для индикации показаний медицинских мобильных приборов. Интересно его применить для шкалы радиоприемника или индикатора уровня сигнала в звуковоспроизводящей аппаратуре. Экран разрешением 84х48 точек позволяет выводить символьную и графическую информацию.
Если у вас есть опыт работы с Nokia 3310 LCD будет легко освоить Nokia 5110 LCD, так как эти индикаторы построены на одном контроллере PCD8544.

Характеристики модуля Nokia 5110 LCD

Питание
напряжение 2,7…3,3 В
ток
подсветка отключена 5 мА
подсветка включена 20 мА

Температура воздуха во время работы 0…50
Температура хранения -10…70

ЖКИ индикатор Nokia 5110

Основные характеристики

Главный компонент модуля Nokia 5110 LCD - ЖКИ индикатор. Имеет встроенные генераторы напряжения питания и смещения ЖК-элементов, есть светодиодная подсветка. Интерфейс SPI ввода информации. Nokia 5110 может работать в четырех режимах: нормальный, инверсия изображения, пустой экран и “все точки включены”. Так же пользователю доступно управление температурным режимом, напряжением питания и смещения.

Питание
напряжение 2,7…3,3 В
ток до 320 мкА
Частота тактирования до 4 МГц
Время сброса не менее 100 нс

Структура дисплея

Дисплей представляет собой матрицу ЖК-элементов и микросхему PCD8544 для их управления, размещенные в корпусе установленном на плате. На ней так же размещены четыре светодиода подсветки экрана. Информация о состоянии точек дисплея хранится в оперативной памяти контроллера PCD8544, каждой точке соответствует один бит памяти. Так же встроен счетчик адреса, который автоматически увеличивается при записи очередного байта информации в память.

Управление дисплеем

Осуществляется по интерфейсу SPI, дисплей является ведомым устройством. Однако, вместо обычных четырех линий управления здесь лишь три. Это линии тактирования CLK, выбора кристалла SCE и входных данных MOSI. Линия выхода MISO отсутствует. Это приводит к необходимости применять специальные методы управления, подробнее об этом далее. Работает интерфейс в режимах SPI-0 или SPI-3. В Nokia 5110 присутствует также дополнительная линия управления Информация/Команда - D/C̅. Каждый байт, передаваемый в дисплей, может быть интерпретирован как команда или информационный байт, в зависимости от уровня на линии D/C̅.
Передача информации однонаправленная, и считать данные из памяти и регистров дисплея нельзя. Поэтому, в программе необходимо предусмотреть возможность контролировать состояния дисплея. Однако, есть еще одна особенность, которая усложняет управление. Эта особенность связана с организацией памяти.

Память состоит из шести банков, в каждом из которых находится 84 ячейки емкостью 1 байт.

Адресация каждого пикселя индикатора. Всего у нас 84х48 пикселей, организованных в 6 горизонтальных банков (от нуля до пяти) и 84 столбцов.

Каждый банк содержит 8 вертикально расположенных пикселей, которые в сумме шести банков дают 48 строк. На рисунке видно, как из оперативной памяти будет отображаться заданный пиксель на дисплее, каждая строка на рисунке представляет один банк.
Запись информации в память осуществляется побайтно, а не побитно, и нет возможности управлять каждой точкой, а лишь группами по восемь точек. Это в сочетании с тем, что информация из памяти Nokia 5110 LCD не может быть считана, приводит к тому, что перед отправкой необходимо запоминать, какие данные в какой ячейке хранятся. В противном случае при отправке новых данных в дисплей можно потерять информацию. Эту особенность иллюстрирует рисунок показывающий замену символа. При написании управляющей программы необходимо предусмотреть возможность хранения данных.

Замена символа Л на символ А.

Дисплей имеет размер 84х48 пикселей. Информация выводится вертикальными блоками высотой 8 пикселей, значения которых определяются значениями бит в выводимом байте. Младший бит кодирует верхний пиксель.
Забегая вперед описания команд скажем. Команды 1xxxxxxx и 01000yyy определяют координаты курсора - строку и позицию, в которых будет отображены следующие 8 бит данных. После того как байт выведен, курсор автоматически смещается на соседнюю позицию.
Если командой 00100PDVH выбран горизонтальный режим адресации V=0, то курсор смещается вправо и следующий байт данных будет отображен на соседней позиции справа. Когда достигнут правый край экрана, курсор перемещается в начало следующей строки. Если же выбрана вертикальная адресация V=1, то курсор смещается вниз, на следующую строку, а после последней строки курсор смещается на одну горизонтальную позицию вправо и устанавливается на верхнюю строку.
В качестве промежуточной памяти можно использовать память управляющего контроллера, в которой будет храниться копия данных в дисплея. Перед отправкой необходимо корректировать данные, в зависимости от того, какая информация хранится в промежуточной памяти.

Команды управления Nokia 5110

Управление дисплеем осуществляется отправкой командного слова через интерфейс SPI. Размер слова 1 байт. Команды управления разделены на 3 категории.

Верховные функции управления

Установить тип функций - указывает, с каким типом функций будет работать модуль основными или расширенными.
Установить режим питания - включает или отключает питание.
Установить режим адресации - определяет тип адресации памяти: вертикальный или горизонтальный. В первом случае после записи байта данных будет увеличен счетчик Y-адреса, то есть, запись будет идти по столбцам. Во втором - счетчик Х-адреса, запись будет идти по строкам.
Функции передаются Nokia 5110 LCD, когда на линии D/C̅ низкий уровень. Они определяются одним командным словом. Это слово необходимо отправить в дисплей в начале работы. Формат:

0 0 1 0 0 PD V H

Бит PD определяет режим питания, установленный PD означает режим отключения (power-down).
Бит V режим адресации: 1 - вертикальная, 0 - горизонтальная.
Бит H тип функций, с которыми будет идти дальнейшая работа: 0 - обычный, 1 - расширенный.
Как видно, необходимо запоминать текущее состояние дисплея, чтобы при установке нового значения параметра не потерять информацию о значениях других. Команда 00100PDVH присутствует в обоих наборах команд.

Основные функции

Установить режим отображения 00001D0E. Определяет режим отображения: пустой экран, все точки включены, нормальное отображение, инверсное отображение. E - признак инверсии изображения, D - вывод изображения. Если D=0, то экран либо полностью очищен E=0, либо полностью черный E=1.
Установить Х-адрес команда 1xxxxxxx, или 0x80 + x выбор горизонтальной позиции в текущей строке, куда будет выводиться изображение. Где x=0 самая левая позиции, 83 - самая правая.
УстановитьY-адрес команда 01000yyy устанавливает Y-адрес ячейки, куда будет записан следующий байт. Команда, или 0x40+y выбор номера строки (страницы) на которую выводится изображение. Y=0 самая верхняя строка, 5 - самая нижняя. Строка имеет высоту 8 точек.

Расширенные функции

Расширенный набор команд выбирается после передачи команды 00100PDV1.
Установить температурный режим. Команда 000001tt, или 0x04 + t выбор одного из четырёх режимов температурной коррекции. В зависимости от режима будет по-разному изменяться напряжение дисплея при изменении температуры.
Установить напряжение смещения ЖК-элементов дисплея. Команда 00010bbb, или 0x10 + b выбор одного из восьми режимов расчета смещения уровней для управления LCD. Для обычных дисплеев от Nokia рекомендуется режим 0001011, или 0x13.
Установить напряжения питания ЖК-элементов дисплея. Команда 1vvvvvvv, или 0x80 + v выбор напряжения на генераторе повышенного напряжения для LCD. При v=0 генератор отключен. Выходное напряжение рассчитывается по формуле VLCD = 3.06 В + v * 0.06 В. В зависимости от выбора способа коррекции напряжения, это значение изменяется в зависимости от температуры. Чтобы не повредить дисплей при низких температурах, рекомендуется это значение менее 8,5 В, т. е. v<=90. Для обычных дисплеев Nokia это нормальное рабочее значение этого параметра примерно равно 56, т. е. команда принимает вид 10111000, или 0xB8.
Работа с основными и расширенными функциями проще, поскольку каждой из них соответствует отдельное командное слово.
Необходимо помнить, что для работы с определенным типом функций необходимо перевести дисплей в режим работы с этими функциями. Иначе отправка слова команды приведет к некорректному выполнению этой команды. Более подробно о командах управления можно прочитать в документации на странице 11 .

Инициализация дисплея

Должна быть выполнена в течении 30 мс после появления питания в следующей последовательности:
сбросить, установив на соответствующем входе низкий уровень на 100 нс или более,
включить дисплей и выбрать расширенный набор команд, послав 0x21,
направить команду смещения напряжения 0x13,
установить температурную коррекцию командой 0x04,
включить генератор повышенного напряжения на уровень 6,42 В командой 0xB8,
вернуться в стандартный набор команд, послав 0x20,
включить графический режим командой 0x0C.
После этих действий Nokia 5110 LCD готов к работе.

Подключение модуля Nokia 5110 LCD

Вывод сигналов на контакты модуля показан на изображении в верху страницы. Также может быть другое расположение контактов показанное на рисунке.

Один из вариантов расположения контактов.

Сигналы и линии модуля

VCC Питание 3,3 В
GND Общий провод
SCE Включение, активный низкий уровень
Reset Сброс, активный низкий уровень
D/C̅ Данные/команда: 0 - данные, 1 - команда
SDIN Вход интерфейса
SCLC Тактовый сигнал
LED Подсветка. Для модулей на красной плате соединить с общим, для синих модулей соединить с питанием. Применять в цепи подсветки резистор 330 Ом. В некоторых модификациях уже установлен резистор в некоторых нет. Для определения наличия резистора и выбора оптимального режима подсветки следует контролировать ток модуля и ток подсветки. Он не должен превышать 20 мА.

Если к интерфейсу SPI микроконтроллера не подключены другие устройства, то для экономии контактов основного управляющего модуля прибора и сокращения количества линий связи контакт выбора активного устройства SCE следует соединить на плате модуля с контактом GND. Но есть недостаток. Если контроллер Nokia потерял синхронизацию с МК, то это теперь невозможно обнаружить.
Более надежное подключение следует делать так. Притягивать эту линию к высокому уровню резистором 100-500 кОм, чтобы исключить воздействие помех на контроллер, пока МК находится в состоянии сброса.
При работе с микроконтроллерами AVR, удобно использовать интерфейс USART в режиме SPI ведущий. Режим SPI-3 (CPHA=1, CPOL=1). Это значит, что пока обмен отсутствует, на линии SCLK высокий уровень, а данные с линии SDIN контроллер читает по нарастающему фронту на линии SCLK в течение 100 нс. При этом они должны быть выставлены минимум за 100 нс до нарастания фронта. Передача осуществляется по 8 бит, сначала старший.
Уровень на линии D/C̅ определяет, как трактовать полученные данные. Высокий уровень означает, что переданные данные должны быть выведены на дисплей, низкий уровень - передана команда. Контроллер читает значение на этой линии вместе с последним (младшим) битом каждого переданного байта данных. При использовании асинхронной аппаратной передачи с этим могут возникнуть трудности. Перед установкой уровня необходимо дождаться завершения передачи предыдущего байта.

Соединение модуля Nokia 5110 LCD и Arduino UNO.

Входные сигналы модуля должны соответствовать логическим уровням схемы питаемой напряжением 3,3 В. При работе с микроконтроллером, имеющим питание 5 В, обязательно применяются цепи согласования уровней.

Графика

В начале подготовки графического изображения следует подготовить в любом графическом редакторе черно-белое изображение в формате *.bmp с разрешением 84х48 точек. Мы подготовили такую картинку в Paint, вот она:

Имя файла картинки должно быть сохранено латинскими буквами. При помощи программы



Просмотров