Вывод информации на линейный дисплей ССИ. При динамической индикации байт индикации поступает одновременно на входы всех ССИ, образующих линейный дисплей, а выбор знакоместа осуществляется байтом выборки, представляющим собой код "бегущий нуль" (рис. 7.7). При бездешифраторном способе формирования байта выборки максимальное число знакомест линейного дисплея ограничено разрядностью порта. Использование для формирования кода "бегущий нуль" внешнего дешифратора позволяет значительно увеличить число знакомест линейного дисплея.
Для динамической индикации группы символов удобно воспользоваться процедурой индикации символа, оформив ее в виде параметризуемой подпрограммы в соответствии с БСА, показанной на рис. 7.8.
Входными параметрами для подпрограммы DSPLY являются исходный код отображаемого символа и номер знакоместа, на которое осуществляется вывод. Исходный код символа задается текущим адресом в массиве CODE (регистр R0), а номер знакоместа — текущим значением байта выборки (регистр R2) и значением счетчика знакомест (регистр R7):
|
|
Подпрограмма DSPLY реализует выборку кода очередного символа из РПД (исходные коды символов должны быть размещены в последовательно расположенных ячейках памяти), его перекодировку и отображение на текущем знакоместе. Для получения яркой и ровной (немигающей) индикации необходимо обеспечить: во-первых, запрет выборки знакомест на время изменения байта индикации в порте 1 (бланкирование), во-вторых, регенерацию изображения на каждом знакоместе
Рис. 7.7. Линейный дисплей на семисегментных светодиодных индикаторах
с частотой 20 раз в секунду, т.е. обращение к подпрограмме DSPLY через каждые 50/N мс, где N — число знакомест на дисплее. Бланкирование осуществляется выдачей байта выборки "все единицы". Требуемая частота регенерации изображения обеспечивается основной программой МК-системы, если она организована в соответствии со структурой:
Требуемая частота обращений к подпрограмме DSPLY может быть обеспечена также с помощью прерывания от таймера.
Вывод символа на МСИ. Для отображения символа на матричный
индикатор обычно используется принцип динамической индикации по колонкам. Байт индикации в этом случае представляет собой код засветки светодиодов колонки, и графический образ символа "набирается" из последовательности байтов индикации путем перебора колонок (рис. 7.9). Процедуру вывода символа на МСИ целесообразно
представить в виде двух частных процедур: перекодировки и отображения.
Перекодировка. Представление исходного двоичного кода символа в виде последовательности кодов колонок осуществляется таблично. Каждому символу в таблице CODTBL соответствует пять ячеек. Адрес первого кода колонки (КК) для символа формируется как CODTBL + + 5 х (двоичный код символа):
|
|
Длина таблицы CODTBL для шестнадцатеричных символов (0 - F) равна 80 ячейкам памяти программ (5 х 16),
Процедуре CODER должна предшествовать процедура инициализации, обеспечивающая загрузку регистров-указателей и гашение МСИ;
Отображение. Частная процедура отображения символа реализуется на основе параметризуемой подпрограммы индикации текущего столбца. Подпрограмма строится по тому же принципу, что и рассмотренная ранее подпрограмма отображения символа на текущем знакоместе линейного дисплея на основе ССИ. Отличием подпрограммы COLUMN является то, что блок перекодировки вынесен в самостоятельную процедуру, а формирование нового байта выборки осуществляется не сдвигом, а инкрементом регистра. Входными параметрами для подпрограммы являются: номер колонки (регистр R2), текущий адрес кода колонки (КК) в массиве CWORD (регистр R1) и текущее значение счетчика колонок (регистр R7):
Перед первым вызовом подпрограммы в нее должны быть переданы исходные параметры:
Задание исходного значения содержимого счетчика колонок символическим именем CTCOL позволяет использовать подпрограмму COLUMN для реализации процедуры динамической индикации группы символов на линейном дисплее. Символическое имя CTCOL должно быть определено директивой ассемблера. Например, для МСИ 5x7
Для обеспечения немерцающей и яркой индикации обращение к процедуре COLUMN должно осуществляться через каждые 50/5 = 10 мс.
Вывод строки символов. Линейный дисплей на основе МСИ представляет собой устройство, показанное на рис. 7.10. С точки зрения разработчика программы это совокупность из 5N колонок, где N — число знакомест. Для вывода группы символов на дисплей с помощью процедуры COLUMN необходимо предварительно определить символическое имя CTCOL как 5N. Для 8-позиционного линейного дисплея это определение выглядит так:
Коды всех колонок должны быть сформированы до обращения к подпрограмме COLUMN процедурой перекодировки, которая для рассматриваемого случая будет иметь вид
Рис. 7.10. Линейный дисплей на матричных индикаторах
Для обеспечения немерцающей и яркой индикации обращение к подпрограмме COLUMN должно осуществляться через каждые 50/40 ~
= 1,25 мс. Удобнее всего это делать по прерыванию от таймера.,