GrabDuck

Используем экран Nokia 1100 в своих целях

:

Сегодня мы расскажем о том, как использовать экран телефона Nokia 1100 в своих DIY-проектах, но сперва мы поделимся небольшой историей об этом телефоне.

Nokia 1100 — самый популярный телефон в мире, который посчастливилось сделать именно нам. С момента старта продаж в конце 2003 года телефон Nokia 1100 был распродан в количестве свыше 250 млн штук — это не только самый продаваемый продукт среди телефонов, но и среди вообще всей потребительской электроники.

Рассчитанный на широкую географию аудитории телефон имел крайне простой, но удовлетворяющий потребности жителей всех континентов практичный дизайн. Nokia 1100 имел монолитную силиконовую клавиатуру и ребристые не скользящие края, защищающие телефон от повреждений во влажных и пыльных климатических условиях, а также встроенный фонарик, предназначенный специально для жителей стран с недостаточным уличным освещением. Внешний вид телефона был разработан в калифорнийском Nokia Design Center болгаро-американским дизайнером Мики Механджийский (Miki Mehandjiysky).

«Единственный способ прийти ко всем этим функциям — это проводить много времени с потребителями, общаться с ними, смотреть на то, как они живут. Возьмём, например, функцию фонарика. Скорее всего вы подумаете „Да кому он вообще нужен?!“, но для потребителей, скажем, из Индии или Африки, где электричества либо нет вовсе, либо оно не всегда доступно, наличие фонарика крайне важно» — вспоминает о разработке Nokia 1100 Алекс Ламбик (Alex Lambeek), вице-президент Nokia, ответственный за сегмент бюджетных телефонов.

В Nokia 1100 использовался недорогой монохромный графический экран с зеленой светодиодной подсветкой, обеспечивая полную читаемость даже на очень ярком солнце. Разрешение экрана составляло 96x65 точек, отображая одну служебную и три пользовательских строки. Некоторые умельцы даже научились использовать дисплей Nokia 1100 в своих целях, и сейчас мы расскажем, как это делается.

Разбираем и пользуемся


В Nokia 1100 применялся дисплей от Philips с IC-драйвером PCF8814, который, несмотря на поддержку протокола I2C, не использовал последний. Вместо этого применялся простой механизм обмена битами.


Распиновка дисплея Nokia 1100

Для работы с дисплеем можно использовать практически любой микроконтроллер, например, PIC, AVR, MSP 430, 8051, но мы прибегнем к микроконтроллеру на основе микрочипа PIC 18F458. Программное обеспечение для проекта напишем на чистом C в MPLAB IDE.

Об экране

Графический дисплей от Nokia 1100 выполнен по технологии монтажа контроллера на стекло COG (chip-on-glass) с 9 входами (последний не используется) на задней стороне. Если интересно, вы можете ознакомиться с описанием контроллера от производителя. Мы же обсудим несколько важных моментов, необходимых для реализации нашей задумки.

Размеры данного составляют 96x65 пикселей, к которым можно обратиться напрямую через RAM-память, как показано на изображении снизу:

Типичный пример RAM изображен ниже. По вертикальной оси отображены ячейки от 0 до 8 с восемью битами на каждый адрес при совмещении с горизонтальной осью. По горизонтальной оси отображена адресация от 0 до 95, и каждый бит отвечает за соответствующий пиксель по оси X.

Режимы адресации

У данного дисплея существует два режима адресации: горизонтальная и вертикальная.
Режим вертикальной адресации
В режиме вертикальной адресации каждая инструкция записи будет увеличивать адрес в направлении Y, возвращаясь затем на начальный адрес.
Режим горизонтальной адресации
Каждая инструкция будет увеличивать адрес в направлении X и затем возвращаться к начальному адресу.
Набор инструкций PCF8814


Последовательная коммуникация

Биты отправляются на LCD следующим образом:

  1. Установить SC в GND
  2. Установить SCLK в GND
  3. Отправить D/C бит (данные или команда) в SDA
  4. Установить SCLK в 1
  5. Установить SCLK в 0
  6. Отправить бит данных в SDA
  7. Установить SCLK в 1
  8. Повторить шаги 5,6 и 7 для оставшихся семи бит.
Последовательность инициализации дисплея

  1. Установить CS в Ground (землю) для активации дисплея
  2. Установить RST в Low
  3. Подождать некоторое время ~ 5мс.
  4. Установить RST в high.
  5. Записать команду 0x20 в LCD по последовательной шине. Записать Vop-регистр
  6. Записать команду 0x90 в LCD по последовательной шине.
  7. Записать команду 0xA4 в LCD по последовательной шине. Установить дисплей в обычный режим
  8. Записать команду 0x2F в LCD по последовательной шине. Управление питанием (включить/выключить подкачку зарядов (charge pump))
  9. Записать команду 0x40 в LCD по последовательной шине. Установить начальный адрес строки = 0
  10. Записать команду 0xB0 в LCD по последовательной шине. Задать адрес по оси Y = 0
  11. Записать команду 0x10 в LCD по последовательной шине. Задать адрес по оси X, младшие 3 бита
  12. Записать команду 0x00 в LCD по последовательной шине. Задать адрес по оси X, старшие 3 бита
  13. Записать команду 0xC8 в LCD по последовательной шине. Отразить ось Y (относительно оси X)
  14. Записать команду 0xA1 в LCD по последовательной шине. Инвертировать экран в горизонтальной оси
  15. Записать команду 0xAC в LCD по последовательной шине. Выставить начальный ряд (R0) дисплея
  16. Записать команду 0x07 в LCD по последовательной шине.
  17. Записать команду 0xF9 в LCD по последовательной шине.
  18. Записать команду 0xAF в LCD по последовательной шине. Включить/выключить дисплей
  19. Очистить дисплей
  20. Записать команду 0xA7 в LCD по последовательной шине. Инвертировать дисплей
  21. Подождать примерно 500 мс
  22. Записать команду 0xA7 в LCD по последовательной шине. Вернуть дисплей в нормальное состояние

Очистка дисплея: после инициализации нужно установить SCE в Ground для включения дисплея. Установить D/C в High, чтобы послать данные на дисплей. Повторить операцию «write byte 0x00» для записи на дисплей 864 раза для очистки всех пикселей.

Собираем схему

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

Программное обеспечение

Программное обеспечение написано на C при помощи MPLAB и компилятора Microchip C18. Исходные коды и уже скомпилированную прошивку можно по ссылке.

Всё, теперь вы можете использовать экран Nokia 1100 в своих целях. Правда, разбирать один из самых ударостойких телефонов за всю историю, вам придется уже без наших подсказок.