Показать сообщение отдельно
Непрочитано 08.02.2011, 02:18   #101
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,509 раз(а) в 956 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию Re: FAQ (ЧаВО) по PROTEUS для начинающих и не только

8.8. Активная графика точечных матриц на основе LEDMPX.DLL. Идем на рекорд – матрица 16х16.
В исходном варианте библиотеки Optoelectronics в ISIS точечные светодиодные матрицы (DotMatrixDisplays) представлены двумя наиболее распространенными видами: 5х7 и 8х8 точек. Это матрицы синего, зеленого, красного и оранжевого цвета. Все эти матрицы построены на основе LEDMPX.DLL.
Интерес разработчиков к использованию точечных светодиодных матриц в последнее время значительно вырос. Они широко используются как в рекламных проектах, так и для создания всевозможных индикаторов типа бегущей строки. Наряду с уже давно заполонившими наш рынок матрицами фирмы Kingbright, появились в продаже матрицы китайских Betlux, NingboForyardOptoelectronics. Выпускает матрицы и компания Rohm. Причем в продукции этих фирм можно встретить матрицы форматов 5х8, 5х9, 6х8, 16х16 элементов, которые отсутствуют в библиотеках ISIS. Сразу сделаю оговорку для нетерпеливых – построить двухцветную, а уж тем более RGB-матрицу на основе LEDMPX.DLL не выйдет. Вспомните сам принцип работы LEDMPX – точка (сегмент) может иметь только два состояния (_0 или _1 в конце обозначения соответствующего символа) в данный момент времени, определяемый знакоместом (цифрой). Но, тем не менее, облегчить себе жизнь при разработке проектов с использованием одноцветных матриц мы попробуем.
Итак, в качестве примера создадим зеленую матрицу формата 16х16. Заодно и проверим, насколько расширились возможности LEDMPX.DLL. Берем зеленую матрицу 8х8 – модель MATRIX-8X8-GREEN и разбираем на запчасти с помощьюDecompose(Рис. 87). Если перейти в режим отображения символов, то в селекторе мы обнаружим восемь символов точек с индексами с нулевого по седьмой и общий базовый символ с индексом _C.
Я пошел на небольшое ухищрение, чтобы не делать много скриншотов - совместил максимум в одном. Итак, на рисунке также представлены «декомпозированные» символы с индексами 0, 7 и базовый. И тут меня ожидал очень подозрительный сюрприз. Обратите внимание, что у символа LEDMATRIX_G_C после Decomposeмаркер ORIGIN сдвинут влево и ниже. Я оставил подсветку сетки с шагом 50th на скриншоте, чтобы вы имели представление о том: куда и насколько. Честно говоря, мне непонятен этот ход разработчика модели, поэтому в своей я это применять не стану и размещу маркер как и обычно. Сам символ имеет LEDMATRIX_G_C форму прямоугольника для одного столбца, т.е. он как бы и определяет ширину знакоместа для одной колонки (в семисегментниках цифры). В середине рисунка 87 показана полная графика «разбитой» MATRIX-8X8-GREEN. Я опять отодвинул от тела выводы и подсветил их имена, за исключением вывода A, который оставлен на месте для лучшей ориентации. Ну и наконец справа на рисунке показана подключенная матрица 8х8. Мы видим, что сверху (со стороны сегментов-букв) для зажигания точки необходимо подать логический ноль, а снизу (со стороны знакомест-колонок) – логическую единицу. Это подверждается тем, что в свойствах матрицы прописано INVERT=A,B,C,D,E,F,G,H. Я убрал фигурные скобки «скрывающие» это свойство и оно видно на рисунке. Весь этот подготовительный этап в примере вложения папка Step_1.
Ну и теперь, зная особенности LEDMPX, сразу становится ясно – что нам предстоит сделать для того, чтобы получить модель формата 16х16 точек.
В первую очередь изменяем основную графическую модель, т.е. растягиваем черный квадрат подложку и расставляем на нем погашенные точки. Напомню еще раз, что здесь используются не символы из селектора с внедренным в них ORIGIN, а просто графические изображения соответсвующих элементов – квадрата, круга. Само-собой разумеется, что нам предстоит добавить еще по восемь выводов – сверху с именами букв латиницы – I, J, K, L, M, N, O, P, а снизу с именами в виде чисел – 9, 10, 11, 12, 13, 14, 15, 16 (Рис. 88 ).
Далее нам предстоит скомпилировать с помощью Make Symbol недостающие символы погашенных и светящихся точек в столбце и удлинить вниз прямоугольник базового символа. И вот здесь нас ожидает еще одна неприятная неожиданность Протеуса, о которой я «в пылу азарта» забыл упомянуть. Максимальное количество букв, цифр и спецсимволов подчеркивания в имени символа не должно превышать 15. Кстати, это же ограничение качается и DeviceName на первой вкладке MakeDevice, так что возможно кто-то уже сталкивался с ним. Теперь посмотрим внимательно на исходные имена символов, начинающиеся с LEDMATRIX_G. Это уже 11 позиций, значит, нам под остальное осталось только 4. Делалась эта модель еще в ранних версиях Протеуса и тогда автор об этом не задумывался. Пока номера символов состояли из одной цифры, этого хватало, но, мы то пойдем дальше – будут и 10 и 11 и т.д. Ну что-ж, придется делать все символы сначала, укоротив имя. Я просто выбросил гласные буквы из слова MATRIX, и мои новые символы имеют обозначение LEDMTRX_G. Почему я не убрал вместо этого _G в конце имени? Да все из того же любопытства – не повлияет ли этот первый символ подчеркивания, находящийся в имени символа, на работу модели. Забегая вперед, скажу, что не повлиял. Следовательно, допустимо использовать в имени символа знак подчеркивания.
Но, продолжим наш титанический труд. Формирование новых символов, да и вообще работу с графикой активных индикаторов лучше делать с шагом сетки 50th. И править их лучше в непосредственной близости от готового графического изображения всего компонента, чтобы не потерять ориентацию. Для начала удлиним базовый символ и скомпилируем его с новым именем LEDMTRX_G(Рис. 89). Попутно восстанавливаем «статус кво» маркера ORIGIN – я разместил его непосредственно над прямоугольником на том же расстоянии, что и в графическом изображении всей модели.
Затем начинаем формирование погашенных и светящихся точек матрицы. Поступаем также, ка и с базовым символом помещаем их поблизости от изображения всего компонента на уровне первой строки. MakeSymbol из левой погашенной точки и маркера ORIGIN над ней символ LEDMTRX_0_0, а из светящейся точки и ее маркера ORIGIN– символ LEDMTRX_0_1. Затем смещаем обе точки (только точки, без маркера) на две клеточки вниз – вторая строка матрицы, и создаем соответствующие символы LEDMTRX_1, опять смещаем вниз – создаем LEDMTRX_3 и так до символов последней строки матрицы LEDMTRX_15.
После этого нам осталось только Make Device нашу новую модель, но не забудьте, что мы поменяли имена символов и увеличили их количество. Поэтому на первой вкладке MakeDevice изменяем эти значения (Рис. 91). Если при создании модели используется скрипт от старой модели 8х8, то в имени девайса достаточно просто поправить имя, если же вы создаете устройство «с нуля», то необходимо ввести DeviceName полностью. Не забудьте также и про флажки бит-зависимости и связи с DLL.
Вторую вкладку назначения корпуса проходим транзитом, на третьей остановимся подробнее. Если использовался старый скрипт, то свойства будут взяты оттуда и здесь, кроме добавления имен сегментов (точек) в свойство INVERT, ничего менять не надо. Если же мы создаем устройство заново, то необходимо через кнопку New добавить и отредактировать следующие свойства:
MODDLL – В графе Description умолчание или по своему усмотрению, первый TypeString, второй TypeReadOnly, DefaultValueLEDMPX, или полностью LEDMPX.DLL (Рис. 92);
PRIMITIVE – В графе Description умолчание или по своему усмотрению, первый TypeString, второй TypeHidden, DefaultValueDIGITAL,LEDMPX– через запятую без пробелов (Рис. 93);
INVERT – В стандартных нет, добавляется через BlankItem. В графе Descriptionу молчание или по своему усмотрению, первый TypeString, второй TypeHidden (но тем, кто активно работает, с матрицами рекомендую поставить Normal, чтобы оперативно менять полярность выводов), DefaultValueA,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P – все через запятую без пробелов (Рис. 94);
TTRIGMIN – В стандартных нет, добавляется через BlankItem. В графе DescriptionMinimum Trigger Time (русскоязычные пользователи могут вписать– Время переключения), первый TypeFloat, выбрать ограничения LimitsPositive, Non-Zero, второй TypeNormal, DefaultValue1ms (Рис. 95).
Я ничего не сказал по PACKAGE – корпус, потому что пока мы его не добавляли и он по умолчанию примется None (отсутствует). Кроме того, для TTRIGMIN я указал значение, как и у остальных моделей – 1 миллисекунда, хотя сам же рекомендовал его уменьшать. Но это сделано только для того, чтобы не путаться при добавлении в проекты, а то у одной модели так, у другой по-другому.
Проходим нашу процедуру MakeDevice до конца и сохраняем матрицу в разделе оптоэлектроники, в подкатегории точечных матриц (Рис. 96). У меня для сохранения на данный момент открыта только USRDVC, но вы можете сохранить в своей библиотеке, предварительно создав ее в LibraryManager. Напомню, что все остальные матрицы лежат в DISPLAY, но там только 13 свободных мест. Если собираетесь и далее создавать активные индикаторы, то лучше создать свою библиотеку, например, DISPLAY2 на сотню «посадочных мест».
Нам осталось только проверить нашу матрицу в работе, что я и сделал (Рис. 97). Здесь я специально подсветил только угловые и центральные точки матрицы, чтобы убедиться, что нет повторных подсвечиваний точек и библиотека LEDMPX.DLL ведет себя адекватно с таким размерностью матрицы.
На этом рассмотрение данной динамической библиотеки завершено, но не закончен материал по ее применению. Я вознамерился окончательно расставить точки над «и», да и в матрице тоже, с вопросами по динамической индикации в ISIS. Поэтому в следующем материале на примере данной матрицы мы этим и займемся. Первоначально хотел сделать это прямо здесь, но думаю данный вопрос заслуживает отдельного параграфа.
Рисунки 87, 88, 89.
Рисунки 90, 91, 92.
Рисунки 93, 94, 95.
Риунки 96, 97.
Миниатюры:
Нажмите на изображение для увеличения
Название: Pic_87.gif
Просмотров: 849
Размер:	100.4 Кб
ID:	18445   Нажмите на изображение для увеличения
Название: Pic_88.gif
Просмотров: 682
Размер:	12.7 Кб
ID:	18446   Нажмите на изображение для увеличения
Название: Pic_89.gif
Просмотров: 437
Размер:	6.8 Кб
ID:	18447  

Нажмите на изображение для увеличения
Название: Pic_90.gif
Просмотров: 467
Размер:	13.3 Кб
ID:	18448   Нажмите на изображение для увеличения
Название: Pic_91.gif
Просмотров: 528
Размер:	23.2 Кб
ID:	18449   Нажмите на изображение для увеличения
Название: Pic_92.gif
Просмотров: 462
Размер:	21.8 Кб
ID:	18450  

Нажмите на изображение для увеличения
Название: Pic_93.gif
Просмотров: 445
Размер:	21.6 Кб
ID:	18451   Нажмите на изображение для увеличения
Название: Pic_94.gif
Просмотров: 449
Размер:	24.1 Кб
ID:	18452   Нажмите на изображение для увеличения
Название: Pic_95.gif
Просмотров: 432
Размер:	23.1 Кб
ID:	18453  

Нажмите на изображение для увеличения
Название: Pic_96.gif
Просмотров: 443
Размер:	25.0 Кб
ID:	18454   Нажмите на изображение для увеличения
Название: Pic_97.gif
Просмотров: 435
Размер:	12.3 Кб
ID:	18455  
Вложения:
Тип файла: rar 8_8.rar (21.1 Кб, 1112 просмотров)

Последний раз редактировалось Halex07; 26.06.2011 в 13:18.
Halex07 вне форума   Ответить с цитированием
Эти 33 пользователя(ей) сказали Спасибо Halex07 за это сообщение:
alexp58 (06.03.2011), andrrev (04.05.2011), bobby1968 (16.02.2011), bozhko (09.03.2011), Burjachok (13.02.2011), chkmatulla (16.03.2011), edt (09.05.2011), EKuzmich (10.03.2011), fiksx (25.08.2011), gena1959 (16.02.2011), gerashchenkovd (18.03.2011), grbizly (16.02.2011), jtp (10.07.2011), kittec (16.02.2011), lisergin (21.05.2011), malyshevsergey (09.05.2011), Nik0lay (16.02.2011), parcshin (23.04.2011), pay_to_play (15.05.2012), ReLe1 (14.08.2011), Sergey_Vl (09.08.2020), skver (10.03.2011), TarAP (17.05.2011), toklyn (11.03.2011), Traan (16.09.2013), vale1 (16.02.2011), vik64 (20.05.2011), ДимаК (21.06.2011)