Реклама ⓘ
Главная » Микроконтроллеры
Призовой фонд
на апрель 2024 г.
1. 100 руб.
От пользователей

Реклама ⓘ

Подключаем дисплей Nokia1616 к BASCOM-AVR

Подключение дисплея к МК уже рассматривалось здесь. Данная библиотека позволит использовать его с МК фирмы Atmel в среде BASCOM-AVR. Поддерживаются все стандартные команды BASCOM для работы с графическими дисплеями.

Подходит для моделей:
Nokia 100, 101, 112, 113, 1661, 1662, 1800, 5030с, С1-00, С1-01, С1-02, С1-03, С2-00, X1-01 и других. Внешний вид дисплея:

Разъем 12-контактный, гибкий, удобнопаяемый. Схема подключения:

Напряжение подсветки для разных моделей может варьироваться от 3 до 7 Вольт. Будьте осторожны.

Контроллер дисплея совместим с SPFD54124B. Аналогичный установлен в моделях:
Nokia 2865cdma, 5070, 5200, 6060, 6061, 6070, 6080, 6085, 6086, 6101, 6102, 6103, 6125, 6136, 6151, 7360.

Разъем на них другой, DF23-22-пин. Их так же можно использовать с данной библиотекой, подключив по следующей схеме:

Питание и управляющие сигналы должны быть в диапазоне 2,8...3,3 Вольт.

В среде BASCOM подключаем библиотеку, выбираем режим цветного дисплея, устанавливаем порты подключения и инициализируем:

$lib "glcd-Nokia1616.lbx"
Config Graphlcd = Color , Controlport = Portd , Cs = 1 , Rs = 0 , Scl = 7 , Sda = 4
Initlcd

Вот, собственно и вся настройка дисплея, уже можно с ним работать. Библиотека эмулирует режим 8-битного цвета - другие варианты BASCOM напрямую не поддерживает. Можно назначить наиболее употребимые цвета в удобочитаемом виде:

Const Blue = &B00000011                              
Const Yellow = &B11111100
Const Red = &B11100000
Const Green = &B00011100
Const Black = &B00000000
Const White = &B11111111
Const Brightgreen = &B00111110
Const Darkgreen = &B00010100
Const Darkred = &B10100000
Const Darkblue = &B00000010
Const Brightblue = &B00011111
Const Orange = &B11111000
Const Violet = &B11100011

Дисплей имеет разрешение 128*160. В командах Bascom нумерация идет от 0 (0...127, 0...159), кроме Lcdat - здесь принята нумерация от 1, кроме того, первый параметр здесь Y, второй - X, в отличие от остальных. Поддерживаемые команды:

Cls - очистка дисплея (заливка черным цветом)
Boxfill(X1,Y1)-(X2,Y1),Color  - заливка прямоугольной области заданным цветом
Box(X1,Y1)-(X2,Y1),Color - прямоугольная рамка
Line(X1,Y1)-(X2,Y1),Color - линия
Circle(X, Y) , Radius , Color - круг
Pset X , Y , Color - точка
Lcdat Y , X , Text, Forecolor, Backcolor - вывод текста

Showpic X , Y ,  Label - вывод картинки в формате BGC

Шрифт для вывода должен быть "цветной" (при создании шрифта штатной утилитой нужно выставить соответствующую галочку). Его необходимо подключить к программе директивой:

$include "font6x8.font"

По умолчанию дисплей имеет расположение "портрет", выводами вверх. Можно изменить ориентацию, подав следующие команды:

Glcdcmd 54 : Glcddata 200     - "портрет" выводами вниз
Glcdcmd 54 : Glcddata 104     - "ланшафт" выводами влево
Glcdcmd 54 : Glcddata 168     - "ланшафт" выводами вправо

В архиве сама библиотека и тестовый пример. Библиотеку необходимо поместить в каталог "LIB" программы BASCOM.

=========================================================================================================

Добавлена новая версия библиотеки . Улучшена передача цвета, исправлена утечка стека.

Добавлен вариант библиотеки glcd-Nokia1616ap.LBX, в которой выходы могут принадлежать любым портам. Обозначения выходов здесь немного отличаются, см. прилагаемый пример.

Прикрепленные файлы:

Теги:

Опубликована: 09.11.2013 0 3
Я собрал 0 Участие в конкурсе 1
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 4.9 Проголосовало: 1 чел.

Комментарии (27) | Я собрал (0) | Подписаться

0
Валентин #
Здравствуйте, такой вопрос, поменял для удобства на порт С (0-3, на Меге 32А смд) и от последних двух (2,3) сигналов никаких нет. На тех что по умолчанию было всё отлично. В чем проблема? И я так понимаю здесь только латиница, кириллицы нету. Как можно её дописать?
P.S. Питание 3.3В, внутренний генератор на 8МГц, реально ли на таком напряжении ставить кварц на 16 или даже на 20? Читал что при 5В мега 32 на 20МГц нормально работает...
Ответить
+1

[Автор]
Mrshilov #
1) Чтобы заработали порты С2 и С3 нужно отключить JTAG.
2) Дописать кириллицу можно стандартной утилитой BASCOM - Инструменты / Плагины / Font Editor.
3) При питании 3,3В практически все экземпляры стабильно работают на 12МГц. Большинство Atmega32A запускаются на 16МГц, но не все - как повезет. При 5В работают и даже и от 24МГц.
Библиотека не очень быстрая из-за последовательного интерфейса и необходимости постоянной конвертации однобайтного цвета в двухбайтный. Поэтому лучше использовать 5В питание, высокочастотный кварц и делители напряжения до 3,3В на выходах.
К концу недели планирую выложить вторую версию библиотеки - выявил утечку стека (проявляется минут через 5 работы). Кроме того будет улучшена обработка цвета и добавлена возможность назначать выходы из разных портов.
Ответить
0
SHON #
Не могу понять как сделать картинку в формате BGC. Объясните пожалуйста.
Ответить
0

[Автор]
Mrshilov #
Сконвертировать этой утилитой: LCD Converter for graphic LCDs
Ответить
0
Павел Царь #
Подскажите, как инициализировать дисплей от нокии 6101? А то я уже не знаю что делать, не отвечает ни на какие команды, даже подсветка дисплея включаться не хочет, хотя напряжение есть и правильной полярности.
Ответить
0
Евгений #
Подскажите, как изменить контрастность в ваше библиотеке? Подключил дисплей от Nokia-1661, он вроде как совместим с 1616, изображение еле различимое, видны только жёлтые тона. Питание - 3.25В на логику и аналог, подсветка работает на 10мА, светится ярко.
Ответить
0

[Автор]
Mrshilov #
Контраст не регулируется. Вы уверены, что дисплей исправен?
Ответить
0
SoXiE #
Библиотека работает на ура, заделал на ней uart-адаптер с mcp42010 для подсветки и NAND-флешкой на гиг(!) для быстроты картинок. atmega8 14МГц, умеет транслировать команды из uart в библиотечные + вывод картинок с флешки (сектор 2КБ, это иконка 45х45, или часть изображения в 8-битном исполнении), ну а также заливка на флешку через uart. Дисплей сам по себе неторопливый, но PSET'ом заливать ещё медленнее (даже при буферизации строк), возможно ли в библиотеку вставить функцию без конверсии (или угостить ассемблерной вставочкой), т.е. как дисплей просит 2 байта, может их в таком виде формировать на флешке заранее ради экономии циклов? Или быть может механизм прямой работы с памятью дисплея (блоками или строками)? Сколь не качай стероидами AVR (16...20МГц), всё равно медленно выходит. А что там слышно с родным цветовым режимом?
Ответить
0

[Автор]
Mrshilov #
PSET'ом картинки заливать, конечно, медленно. Нужно задать окно и лить подряд в двухбайтном формате. И лучше через аппаратный SPI блоками хотя бы по 64 байта.
Ответить
0
SoXiE #
Спасибо, переделал, на той же плате, но лью теперь в окно - производительность выросла ~ как на видео, с 16-битной картинкой, т.е. без переконверсии и с буферизацией в длину строки (128*2). Ну, на nand флешке в два раза больше места уходит, но ничего, жить можно. Хочется попробовать это дело на 20МГц (ведь люди на матричках с меньшим разрешением некое подобие видео делают даже). По питанию могу сказать следующее: atmega328 вполне справляется на 14мгц при 3.3в, сделал чтобы шины не делить (там ещё висит 3.3в параллельный двусторонний интерфейс nand). Я малость переиграл шрифтовую часть с тем, чтоб немоноширинный шрифт впаять (по образу nokia), вот он-то как раз PSET'ом всех тормозит, но другого выхода пока не вижу. Можно конечно извратиться и держать символы на флешке, быстро, но без фона. Также родилась мысль, кажется, в даташите на контроллер SPFD54124B есть про обратную связь, и быть может есть смысл реализовать что-то в духе POINT(x,y)? Я делал таким образом в QBASIC в 24-битных разрешениях PNG-сглаживание подмешиванием к существующему пикселу градации цвета, вот и попробую сделать хотя бы 4-х битное сглаживание текста путём заливки шрифта при 4-х битах на пиксел.
Прикрепленный файл: IMG_7502.JPG
Прикрепленный файл: IMG_7507.JPG
Прикрепленный файл: IMG_7509.JPG
Ответить
0
Игоревич #
Автору огромное спасибо, дисплеи это найти вообще не составило проблемы, взял за копейки (100р) в магазине мобильных. Сегодня буду подключать и пробовать. А есть форум для обсуждения этой темы? Я бы делился своими наработками если что.
Эх... Жаль не нашел модели для протеуса этого дисплея... будет не просто.
Ответить
0
Игоревич #
В общем сделал платку под дисплей. Без всяких прибамбасов, мало ли кто по какой схеме будет подключать.
Прикрепленный файл: LCD 1.0.lay6
Ответить
0
Игоревич #
Не хочу быть навязчивым... Но тем не менее... Поскольку я взял себе для экспериментов 3 дисплея, можно их по мучать, что я и сделал. Для начинающих радиолюбителей, у кого нет лазерного принтера или по каким либо другим причинам недоступна технология ЛУТ - На фото я сделал образец, делаем так, лудим контакты шлейфа с двух сторон, заготавливаем 10 тоненьких проводков нужной длинны, зачищаем, лудим. Паяем так - 1 и 12 контакты не нужны, начинаем со второго контакта, припаиваем провод к контакту 2 сверху, к контакту 3 снизу, к контакту 4 снова сверху и так пока не запаяем все 10 проводков. Думаю способ кому-нибудь пригодиться
Прикрепленный файл: 1.jpg
Ответить
0
Игоревич #
Сегодня доделал конструкцию, МК взял атмега32. Памяти в нем побольше. Поменял порты, кварц на 16МГц (без кондеров). Подсветку на 5В подключил через резистор на 470Ом. Дисплей запитал от стабилизатора LM317, схема включения стандартная. Все шикарно работает! Автор молодец! Спасибо!
Ответить
0
Игоревич #
Автор! Обнаружена ошибка! При использовании команды "Glcdcmd 54 : Glcddata 104 - "ланшафт" выводами влево" цвета перемешиваются. Вместо желтого синий, место синего красный, и т.д. и т.п. И вместо оранжевого даже синий получается. Думаю что все работает только в обычном режиме если не разворачивать изображение. Но мне необходимо горизонтальное положение дисплея. Соответственно вопрос - как с этим бороться?
Ответить
0

[Автор]
Mrshilov #
Исправленная версия. Разворот задается в установках.
Прикрепленный файл: 16_16.zip
Ответить
0
Игоревич #
Спасибо большое! Будем пробовать. Еще вопрос, мне надо подключить внешнюю память. А конкретно микросхему 24lcXX. Я так понимаю придется подключать на SCL и SDA портам мк, туда же куда и дисплей подключен?
Ответить
0
Игоревич #
В общем "подключил" я вашу новую библиотеку. Работает! Вот только пришлось разбираться с назначением портов. Там подписи то другие. Si там получается это SDA. Ну и ладно, работает же. Дальше, выяснилось что вот эти параметры надо менять местами - Box(0 , 0) -(128 , 160) , Color. То есть 128 и 160 надо менять местами для корректного положения прямоугольника. Но считаю что все это мелочи. Ибо когда разберешься - все прекрасно работает. Спасибо Mrshilov!
Ответить
0
Сергей #
Экран от 5030с-2, подсветка работает от 3В.
Версия из статьи не работает с ладшафтным экраном (сбоку полоса разноцветного шума). С исправленной библиотекой не запустился - белый экран и всё. Как бы можно это исправить?
Виноват, библиотека работает, но только с портами из примера. Если ставлю свои - уже не работает.
Ответить
0
Игоревич #
Разобрался с Scl & Sda для микросхемы памяти. Все проще некуда, как обычно назначаем порты.
Например
Config Sda = Portb.1
Config Scl = Portb.0
И все подключаем по стандартной схеме. Никаких заморочек!
Ответить
0
SoXiE #
Обнаружил, что при ландшафтных ориентациях Glcdcmd 54 : Glcddata 168 и 104 хромает цветопередача при передаче 16 бит. ПРобовал на двух дисплеях, фото синим отдаёт яко аватар
Ответить
0
Soxie #
Извиняюсь, не увидел вышеуказанного решения проблемы "цвета перемешиваются". Решено перестановкой в BGR.
Ответить
0
Владимир #
А может хексом с демкой для меги 128 или 16 кто поделится? И распиновку если можно, указать.
А то пытаюсь скачать этот bascom avr, только демо версия на 4 кб кода
Ответить
0
Александр #
А код программы есть для ардуино?
Ответить
0
OLEGKARAS2 #
Почему при компиляции программа выдает ошибку 206 - не найдена библиотека ?
Ответить
0
Rjj #
Большое спасибо за статьи! Собрал, все работает!
Где можно раздобыть русский шрифт 8х8 и 16х16?
Ответить
0
Chettuser #
SDA, SCL - это вообще то I2C, а не SPI. А вот данные дисплеи всё таки по SPI работают.
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется сила тока?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

AVR-программатор USB ASP
AVR-программатор USB ASP
Набор для сборки - УНЧ 2х60 Вт на TDA7294 DC-DC регулируемый преобразователь 1.5-37В 2А с индикатором
вверх