Завдяки мому сусідові, попав до моїх рук графічний дисплей від Nokia 1110. Не довго думаючи, захотілось його відразу запустити і подивитись на що спосібна ця цяця. Виявилось, що це просто прекрасна річ для виготовлення власноруч зроблених девайсів. Живиться дисплей від 3,3 вольт, ліній для передачі данних тільки чотири, що просто неймовірно для економії портів, роздільна здатність 92х64. Правда, здатний він тільки приймати данні, нічого і нікуди він не відправляє. Тож якщо він згорить, або його від’єднати, мікроконтролер про це нічого не дізнається. Підсвітка дисплея ядовито зелена, ще прочитав на форумі, що може бути біла. Мій варіант був із зеленою підсвіткою, інвертований, тобто коли пікселі не світяться то вони чорні. Як виявилось, вже після того, як я розвів і розрпаяв плату, зелена підсвітка загорається тільки коли її заживити від 4,2 Вольт. Хоча мала б працювати від 3,3.


Плату перехідник я розводив для своєї відладочної плати PinBoard. Впринципі ніяких граблів із розводкою не виникло, плата вийшла одностороння. Сама тонша доріжка 0,2 мм. При перебиванні, за допомогою ламінатора для ЛУТ, ніяких серйозних косяків не виникло. Але підчищати все таки трохи довелось. Свій варіант розводки я прикріплю , як завжди, в кінці статті.

NOKIA1100-Sheme

 

Схема досить проста і думаю зрозуміла. Навіщо ціла купа резисторів? Повторюсь, що дисплей працює від 3,3 вольт. Тому треба було якось узгодити рівні напруги по шині данних від контролера до моєї жертви. Прийшлось збивати резисторними дільниками. Процесор дисплея, як я підглянув на одному форумі, живиться від 2.8В -це 9 нога колодки дисплея. Рекомендують брати саме таке значення, щоб потім не мати мороки. Ще специфічним живленням в 1,8В є опорна напруга -на 10 нозі. Ну і підсвітка дисплея це ноги 6 і 7- тут можна по експерементувати від 3В до 4Вольт. Лінії данних ноги 1,2,4,5 відповідно CKL, DATA, CS, RESET. Ось що в мене вийшло:

NOKIA1100-perehidnik

Тепер розкажу трохи про софтверну частину мого експерименту. Так як я людина досить лінива, мені стало впадло самому розбиратись як заставити працювати цю штуку і створювати новий велосипед. Я натрапив на сайт де ці всі процедури зробили до мене і навіть знайшов досить толкову бібліотеку написану для WinAVR. Я її і свій проект в AVR Studio6 також прикріплю до статті. Налаштування бібліотеки дуже прості. Так як вона є досить універсальною і вона підходить не тільки для дисплеїв від NOKIA 1110. Потрібно вписати у дефайнах роздільну здатність:

#define NLCD_X_RES    96        // разширення  по горизонталі
#define NLCD_Y_RES    68        // разширення по вертикалі

Швидкість роботи:

#define NLCD_MIN_DELAY 34 //В мому випадку можна було поставити 0, але для кожного дисплея це значення буде різним.

А також порти мікроконтролера які ми будемо використовувати для передачі данних.Використовуватить мають тільки виходи одного порта!

#define SCLK_LCD_PIN 0
#define SDA_LCD_PIN 1
#define CS_LCD_PIN 2
#define RST_LCD_PIN 3

Також для цієї бібліотеки вже інший чувак зробив генератор шрифтів і конвертор картинок. Тобто можна робити і вставляти в бібліотеку свої шрифти. Та й думаю їх можна чимало знайти порившись в інтернеті. Наразі бібліотека повністю підтримує англійські символи і російські. На мою думку, щоб облегшити розмір скомпільованого файлу, можна один масив із шрифтом мови відключити і користуватись у свому проекті тільки якоюсь одною мовою. Із вставкою картинок також все просто. За допомогою конвертора картинок, дістаємо масив переробленого зображення і вставляємо його у свій проект. Виглядає це ось так:

PROGMEM static const char nlcd_image[] =
{ 24,24,
0x00, 0x00, 0x00, 0x00, 0x40, 0x60, 0xE0, 0xE0, 0x60, 0x60, 0x60, 0x60,
0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
0x00, 0xE0, 0x78, 0x1F, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xFF,
0x01, 0xFF, 0xFE, 0xFF, 0xDB, 0xDB, 0xDB, 0x00, 0xFF, 0xC0, 0xC0, 0x00,
0x07, 0x07, 0x07, 0x06, 0x07, 0x06, 0x07, 0x07, 0x07, 0x07, 0x06, 0x07,
0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x06, 0x07, 0x07, 0x02, 0x00};

Масив вставляється у програмну частину пам’яті контролера, що негативно відбивається на розмірі вихідного файлу. Цифри 24,24-означають роздільну здатність картинки яку ви хочете вставити у ваш проект. Наприклад, якщо потрібно картинку на весь екран то пишемо 92,64. Виклик масиву здійснюється командою: nlcd_Pict(40,8,nlcd_image); Тут ми вказуємо координати вставки зображення і ім’я масиву картинки. Детальніше про функції і роботу бібліотеки можна почитати на САЙТІ АВТОРА

Відео про роботу дисплея і налаштування бібліотеки:

Як і обіцяв прикріплені файли проекту: NOKIA1110_LCD_Project

Comments:

Написати відповідь

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> 

вимагається