Адаптер для подключения lcd nokia 1202. Подключение дисплея к микроконтроллеру

На сей раз хочу вам рассказать как подключить дисплей от мобильного телефона Nokia 1202 к микроконтроллеру Atmega8. Программируем в среде CodeVision. Кое где могу и ошибаться. Сам только не давно разобрался что к чему. Опыта в программировании не имею и библиотеки для работы с дисплеем писал не я. Они скопированы с одного проекта в интернете. Там прописаны все нужные функции и есть шрифт 5*8 латинские буквы и кириллица. Есть так же пару символов 12*16 и 24*32, которые использовал автор библиотек в своем устройстве. Если их удалить, то шрифт 5*8 будет занимать около 700 байт флеша микроконтроллера. Поэтому микроконтроллер для проекта надо брать "пожирней”. В моем случае использована Atmega8 . Вполне достаточно. Все файлы - исходники, библиотеку и так далее, .

Схема подключения индикатора

Принципиальная схема подключения ЖК дисплея к МК

Нарисовал схему подключения. Для питания дисплея нужно напряжение 3,3V. Если запитывать микроконтроллер от 5V, то ставим резисторные делители и микросхему 78L33 . В случае питания всей схемы от 3,3V резисторные делители не нужны. Вроде Atmega8A может работать от 3,3V при условие, что частота не выше 8 МГц. Лично я не пробовал. У меня все собрано на отладочной плате с питанием от 5V. Перед самим дисплеем ставить по питанию электролит большой емкости ни в коем случае не надо. В самом начале работы контроллер подает на дисплей команды инициализации. Для заряда конденсатора нужно время. Пока он зарядится и дисплей начнет работать пройдет некоторое время, и команды инициализации он не получит. Конечно это миллисекунды, но в даном случае эффект ощутим.


Схема распиновки дисплея

У дисплея Nokia 1202 9-ти битный SPI интерфейс. У выбранного нами микроконтроллера такой роскоши нет. По этому для связи с дисплеем мы используем не аппаратный, а программный SPI, так сказать "ногодрыг”. Как создавать новые проекты в CodeVision рассказывать не буду - думайте сами. Скажу только, что все выводы PORTB надо настроить на выход. В настройках проекта нужно поставить галочку на "Store Global Constants in FLASH Memory ”. Данное действие нужно для того, чтоб массивы шрифтов и наших картинок хранились во флеше.


Итак, проект мы создали. Выбрали микроконтроллер, задали тактовую частоту, настроили проект. Что дальше? А дальше нужно добавить библиотеки для работы с дисплеем и библиотеки задержек. Распаковываем архив. Там есть два файла. Их нужно скопировать в определенные папки. Надеюсь CodeVision вы установили прямо на диск C:\. Если да, то файлы копируем по соответствующим путям:

C:\cvavreval\inc для файла 1100.inc, и
C:\cvavreval\lib для файла 1100.h .


Еще хочу сказать, что назначение пинов микроконтроллера можно изменять в файле 1100.h . Тогда и схема подключения изменится. Начинаем кодить. Просто выведем какую-то надпись на дисплей основным шрифтом 5*8. В самом начале добавим библиотеки.

#include < 1100.h> // библиотека дисплея
#include // библиотека задержек

В самом низу до основного цикла while(1){} делаем инициализацию дисплея и его очистку.

lcd_init(); // инициализация дисплея
lcd_clear(); // очистка дисплея

Нашу надпись поставим так же до основного цикла. Пусть сперва контролер выведет послание на дисплей, а после крутится в основном цикле. Пишем вот это:

print_string("Выводим надпись",5,0);
print_string("Какую сами хотим",0,1);
print_string("БУХАРЬ",10,2);

Думаю здесь все понятно. Первая цифра – координата по оси x на дисплее. Она может принимать значение от 0 до 96. Вторая – строка. Она от 0 до 7. В принципе там помещается 8 с половиной строк, но на пол строки мы читать не будем. Компилируем и прошиваем. Смотрим результат. Можно так же установить Proteus, и протестировать в нем. Контроллер можно настроить для работы от внутреннего генератора на частоту заданную в проекте с задержкой при старте 64 мсек. Добавляю архив с скомпилированным проектом. Частота 8 Мгц.


Но как уже писал в начале, в библиотеке есть еще и другие символы. Правда там нет букв, а только цифры. Теперь немного усложним задачу. Пусть надпись не будет инертной, а изменяется. Допустим считает от 0 до 9 с интервалом в 1 секунду. Когда дойдет до 9, после обнулится и снова наново. Возьмем цифры большие размером 24*32. Ну чтож приступим. Можно взять предыдущий проект и удалить три строки "print_string”. Сразу после добавления библиотек объявим некую глобальную переменную m .

char m = 0;

Можно и просто написать:

В даном случае ей автоматически присвоится значение 0. В основном цикле пишем вот это:

char_24_32(m,35,2); //функция вывода символа 24*32
delay_ms(1000); // ждем 1 секунду
m++; // добавляем 1 к переменной m
if(m>9)m=0; // Условие. Если переменная m больше 9, то m равняется 0.

Снял небольшое видео работы программы

Попробую рассказать как рисовать картинки и выводить их на экран дисплея. Как создавать массивы и функции к их выводу и как инвертировать изображение. Библиотеки позаимствовал с сайта cxem.net. Материал подготовил Бухарь .

Обсудить статью ПОДКЛЮЧЕНИЕ ДИСПЛЕЯ К МИКРОКОНТРОЛЛЕРУ

ВСЕ ЗАКАЗЫ, НАХОДЯЩИЕСЯ В СТАТУСЕ "ОЖИДАЕТ ОПЛАТЫ" ПО ИСТЕЧЕНИЮ СУТОК БУДУТ АВТОМАТИЧЕСКИ ОТМЕНЕНЫ БЕЗ ПРЕДВАРИТЕЛЬНОГО ОПОВЕЩЕНИЯ.

В нашем интернет-магазине цена на товары указанная на страницах сайта является окончательной.

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

  • После оформления заказа Ваш заказ будет помещен в Ваш личный кабинет со статусом "Ожидает проверки "
  • Наши менеджеры проверят наличие на складе, и ставят выбранный Вами товар в резерв. При этом изменяют статус вашего заказа на "Оплачивается ". Рядом со статусом "Оплачивается " отобразится ссылка "Оплатить ", кликнув на которую Вы перейдете на страницу выбора способов оплаты сайта Robokassa.
  • После выбора способа и проведения оплаты заказа статус автоматически изменится на "Оплачен ". Далее в кратчайшие сроки товар будет вам отправлен выбранным в процессе формирования заказа способом доставки.

1. Оплата наличными средствами

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

ВНИМАНИЕ!!! Наложенным платежом НЕ РАБОТАЕМ , поэтому оплата при получении почтовой посылки невозможна!

2. Оплата по безналичному расчету

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

3. Оплата через платежный терминал

ROBOKASSA — позволяет принимать платежи от клиентов с помощью банковских карт , в любой электронной валюте , с помощью сервисов мобильная коммерция (МТС, Мегафон, Билайн), платежи через интернет-банк ведущих Банков РФ, платежи через банкоматы, через терминалы мгновенной оплаты , а также с помощью приложения для iPhone .

Чаще других в BASCOM применяется дисплей от NOKIA-3310, для него есть готовая библиотека. Однако разрешение 84х48 (6 строк по 14 символов) уже многих не устраивает, да и цены на этот дисплей постоянно растут пропорционально его востребованности. Между тем в продаже есть ч/б дисплеи NOKIA с более высоким разрешением – 96х68, встроенной подсветкой и по меньшей цене (от 25 до 55 рублей в сети магазинов «Профи» или LCD_GSM) В основе их разные чипы, но алгоритм работы и схема подключения одинаковые, поэтому библиотека для работы с ними будет одна универсальная.

Библиотеку рассмотрим ниже, а пока встречайте наших участников:

NOKIA-1100, внешний вид. NOKIA-1100, 1101 и 2300 - это один и тот же дисплей. У обоих исследованных образцов (1100) имелись проблемы с регулировкой контраста, но не фатальные. (Спасибо Max за фото и тестирование)


NOKIA-1100, разъем подключения, вид сзади.


NOKIA-1100, схема подключения.


NOKIA-1202 / 1203 / 1280, внешний вид. По сравнению с остальными имеет немного сжатое по вертикали и растянутое по горизонтали изображение. Попавшийся мне экземпляр иногда, от включения к включению, запускался с зеркальным разворотом справа-налево, во избежание таких неопределенностей в библиотеке предусмотрено принудительное включение в нормальный режим.


NOKIA-1202 / 1203 / 1280, разъем подключения, вид на дисплей СПЕРЕДИ.


NOKIA-1202 / 1203 / 1280, схема подключения.

Все остальные рассматриваемые дисплеи имеют одинаковый разъем:

И, соответственно, одинаковую схему подключения:


К такому разъему уже тяжело будет подпаяться, придется ответную часть к нему покупать или выпаивать из б/у телефонов.

Итак продолжим:


NOKIA-1110. По-умолчанию инверсный и с зеркальным разворотом справа-налево, но это легко исправляется в библиотеке. Имеет самую высокую контрастность из рассматриваемых, но без подсветки изображения практически не видно. Напряжение подсветки не менее 7,5V, можно от 12V через резистор порядка 470 Ом.


NOKIA-1110i / 1112. По-умолчанию с зеркальным разворотом справа-налево. Изображение чуть растянуто по вертикали. Напряжение подсветки 3,3V через резистор порядка 470 Ом.


NOKIA-1116 -1200. Попавшийся мне экземпляр не реагирует на команды инверсии и разворота, но по-умолчанию работает правильно. Очевидно не только китайского происхождения, но и их же модификации. Напряжение подсветки 3,3V через резистор порядка 470 Ом.


NOKIA-2660 / 2760 / 6085 внешний. Самый маленький из рассматриваемых (для сравнения сфотографирован лежа на 1202) и самый дешевый. По-умолчанию с инверсным изображением. Напряжение подсветки не менее 7,5V, можно от 12V через резистор порядка 470 Ом.

Схема подключения для всех дисплеев указана для 5V питания процессора, при его питании от 3,3V резистивные делители не потребуются.

Протокол передачи – односторонний SPI. Хорошая новость в том, что по сравнению с 3310 требуется на одну ножку меньше, а плохая в том, что для компенсации ее отсутствия требуются 9-битовые посылки. Аппаратный SPI этого не умеет, поэтому используем программный. Зато теперь дисплей можно подключить к любым ножкам контроллера.

Библиотека поддерживает кириллицу и латиницу, а так же символы от №32 до №64 по таблице ASCII. Всего можно отобразить 8 строк по 16 символов. При желании можно выводить и 9-ю строку, но будет видна только ее верхняя половина (8*8=64, а у нас 68 по вертикали).

Рисунки для отображения на дисплее из формата bmp в формат bgf преобразуем штатным «Графическим конвертором» с обязательной установкой галочки «Серия SED». Прежде чем загружать рисунки 96х68, установите разрешение в конвертере 128*128 или 240*128 или 240*240, иначе он будет ругаться на высоту рисунка.


Файл шрифтов создается и преобразуется аналогично, но обязательно без компрессии – нужно установить еще и галочку «Распаковано». Затем, чтобы не путать с картинками, меняем расширение файла шрифтов с bgf на inc. Исходник картинки шрифтов в папке Sources.

Большинство дисплеев, имеющихся в продаже, китайского производства и имеют свои особенности:

1) некоторые не выдерживают напряжения более 2,8V (это их рабочее напряжение по схемам телефонов, хотя, по даташитам на чипы, должны выдерживать до 3,3V) – сужу по публикациям в Интернете, все те, которые я тестировал, у меня работают без проблем от 3,3V. Но все же будьте осторожны, если есть возможность, снизьте питание дисплея до 2,8V.

2) многие чипы подвергаются модификации для выполнения минимума положенных функций, поэтому автоматическое определение типа дисплея по запросу, как правило, невозможно и пришлось от него отказаться. Для установки инверсии и (или) разворота вправа-налево под конкретный дисплей нужно закомментировать/раскомментировать соответствующие строчки в библиотеке .

MrShilov. Санкт-Петербург. 2012

Уже несколько лет занимаюсь радиоэлектроникой, но стыдно признаться, у меня все еще нет нормального блока питания. Запитываю собранные устройства тем, что попадется под руку. От всяких полудохлых батареек и трансформаторов с диодным мостом без какой либо стабилизации напряжения и ограничения выходного тока. Такие извращения довольно опасны для собранной конструкции. Наконец-то решился собрать нормальный блок питания. А начал сборку с ампервольтметра. Надо конечно было начинать с другого, но как уже есть. Поскольку понемногу занимаюсь программированием то решил сам разработать показометр. В качестве экрана стоит дисплей от Nokia-1202. Наверно я уже всех замучал с этим дисплеем, но он в 3 раза дешевле, чем 2x16 HD44780 (по крайней мере у нас). Вполне паябельный разъем и вообще неплохие характеристики. Короче - хороший вариант для измерителя напряжения и тока.

Электрическая схема цифрового ампервольтметра для БП

Рисунок платы цифрового ампервольтметра

В первой и второй строчке отображается усредненное значение напряжения и тока из 300 замеров АЦП. Это сделано для большей точности измерения. В третьей строчке выводится сопротивление нагрузки, рассчитанное по закону Ома. Хотел сперва сделать, чтоб выводилась потребляемая мощность, но сделал сопротивление. Может позже переделаю на мощность. В четвертой строчке выводится температура измеряемая датчиком DS18B20. Он запрограммирован измерять температуру от 0 до 99 градусов Цельсия. Его надо установить на радиатор выходного транзистора, или на какой нибудь другой элемент схемы, где есть сильный нагрев.

К микроконтроллеру можно так же подключить кулер для охлаждения радиатора транзистора. Он будет изменять свои обороты при изменении температуры измеряемой датчиком DS18B20. На ножке PB3 присутствует ШИМ сигнал. Кулер подключается к этому выводу через силовой ключ. В качестве силового ключа лучше всего использовать MOSFET транзистор. При температуре в 90 градусов у вентилятора будут максимальные обороты. Датчик температуры можно и не устанавливать. В этом случае в четвертой строчке просто высветится надпись OFF. Кулер подключаем на прямую. На выходе PB3 будет 0.

В архиве есть два варианта прошивки. Одна на максимально измеряемый ток в 5 ампер, а вторая до 10 ампер. Максимально измеряемое напряжение - 30 вольт. Коэффициент усиления ОУ LM358 по расчетам выбран 10. Для разных прошивок нужно подобрать шунт. Не у всех есть возможность измерять сотые доли ома и прецизионные резисторы. Поэтому в схеме есть два подстроечных резистора. Ними можно подкорректировать показания измерений.

Там-же в архиве есть и печатная плата. Есть небольшие различия на фото - там она немножко подправленная. Удалена одна перемычка и размер меньше по высоте на 5 мм. Стабильность показаний ампервольтметра высокая. Иногда плавает только на сотые доли. Хотя сравнивал всего лишь с моим китайским тестером. Для меня этого вполне хватит.

Всем спасибо за внимание.

АРХИВ:

Модернизированый вариант

Добавил только отображение еще и десятой части мощности.

Вот переделал для измерения до 50А. Шунт 0,01 ом. Коэффициент усиления ОУ примерно от 6 до 7. Нужно будет пересчитать резисторы. Фьюзы те же, что и раньше.

Хочу представить вашему вниманию модернизированную версию показометра для лабораторного блока питания. Добавилась возможность отключать нагрузку при превышении определенного установленного заранее тока. Прошивку улучшенного вольтамперметра можно скачать ниже. Схема цифрового измерителя тока и напряжения.

В схему так же добавилось несколько деталей. С органов управления - одна кнопка и переменный резистор номиналом от 10 килоом до 47 килоом. Его сопротивление не критично для схемы, и как видно может варьироваться в довольно широких пределах. Немножко изменился и внешний вид на экране. Добавил отображение мощности и ампер*часов.

Переменная тока отключения сохраняется в EEPROM. По этому после выключения не нужно будет все настраивать заново. Для того, чтоб зайти в меню установки тока нужно нажать на кнопку. Поворачивая ручкой переменного резистора надо установить ток, при котором произойдет отключение реле. Оно подключено через ключ на транзисторе к выводу PB5 микроконтроллера Atmega8.

В момент отключения на дисплее высветиться надпись о том, что максимальный установленный ток был превышен. После нажатия на кнопку мы перейдем снова в меню установки максимального тока. Нужно еще раз нажать на кнопку, чтоб перейти в режим измерения. На выход PB5 микроконтроллера подастся лог 1 и при этом включится реле. Такое слежение за током имеет и свои минусы. Защита не сможет сработать мгновенно. Срабатывание может занять несколько десятков миллисекунд. Для большинства подопытных устройств данный недостаток не критичен. Для человека эта задержка не видна. Все происходит сразу. Новая печатная плата не разрабатывалась. Кто захочет повторить устройство может немного подредактировать печатную плату от предыдущего варианта. Изменения будут не значительны.

По всем возникшим вопросам обращаемся на форум. Спасибо за внимание. Ампервольтметр допилил Бухарь.

АРХИВ:
Форум