Хелпикс

Главная

Контакты

Случайная статья





Бегающий текст.



Бегающий текст.

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

Аналогичные процессы пересчета содержимого видеопамяти происходят и в обычном ПК, когда требуется поменять содержимое экрана, однако есть некоторые нюансы: дешевые микроконтроллеры неспособны просчитать всю видеопамять за короткое время, попытки реализовать такой алгоритм привели к довольно большим задержкам процесса обновления экрана. Из-за того что один и тот же процессор отвечает за пересчет видеопамяти и вывод ее построчно на сдвиговые регистры - страдают обе эти операции, а задержка вывода строчек приводит к увеличению времени показа каждой, и глаза начинают видеть неприятные мерцания всей матрицы. Если же времени не хватает совсем, то глаз видит не всю матрицу целиком, а только одну горящую строчку в каждый момент времени, пробегающую сверху вниз.

В ПК такой проблемы не может быть в принципе, т.к за просчет видеопамяти и ее свежее наполнение отвечает ЦП, а за вывод на экран монитора видеокарта. С одной стороны никто не мешает повторить эту же архитектуру и в "бегущей строке", однако это привело бы к удорожанию всей платы контроллера матрицы. Однако, ввиду того, что набор задач, решаемых МК табло довольно ограничен, и сводится к простому выводу текста, эта проблема как правило решается построчным просчетом видеопамяти.

Просчет изменений одной строчки занимает совсем небольшое время, которое как раз можно отвести под ее же вывод на матрицу (дать погореть немного), затем можно переключаться к следующей. Хотя данный алгоритм действий может серьезно варьироваться в зависимости от применяемого МК. Как уже сказал в начале, данная разработка несколько устарела, отчасти потому что в ней был применен КМ AVR mega128, в свое время довольно функциональный, но его вычислительная мощь в 16Мгц, не достаточна для применения других алгоритмов для этой задачки, хотя можно было бы решить и асинхронным просчетом видеопамяти и отображению по разным таймерам.

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

В целом про эффекты движения текста писать особо нечего, это простенькая программисткая задачка.

 


 

Управляющая программа PC

Тут все довольно просто: состаляем некий массив строчек, которые нужно прокручивать по циклу, с параметрами их прокрутки. Затем сливаем все это в EEPROM платы контроллера табло бегущая строка через RS-232. Реализовано разумеется на DELPHI, т.к. подобного рода приблуды в нем создаются быстрее всего.

В моей убогой релизации выглядело все примерно так...

 

Ссылки

http://www.ampersant.ru/tablo-stroka/

 

 



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.