Программирование BASCOM
Меню сайта
Категории каталога
Мои статьи [115]
Наш опрос
Оцените мой сайт
Всего ответов: 1292
Главная » Статьи » Мои статьи

Бегущая строка
Бегущая строка
 
 
Схема особенностей не имеет. Посредством преобразователя уровня на транзисторе организована односторонняя связь с ПК. Контроллер принимает текст, заносит его в энергонезависимую память EEPROM и в динамическом режиме выводит в сдвиговые регистры. Сборки транзисторных ключей умощняют выходы, и для невысокой яркости от них можно отказаться.
 
 
Программа контроллера в главном цикле ожидает появления символа "S", после чего происходит загрузка данных. После её окончания считываются значения количества переданных символов и текущей скорости. Далее считываются первые 7 символов, и им тут же присваиваются данные из кодовой таблицы. Почему семь? Знакоместо организовано как 8х8 пикселей, при длине строки 48 вмещается 6 символов. Семь необходимо для того, чтобы было что сдвигать. После этого программа считанные из кодовой таблицы данные, последовательно загружает в регистры сдвига, включает ключ первой строки, выдерживает необходимую паузу, выключает ключ, следующая порция данных, следующий ключ и т.д., пока не пройдут все восемь строк. Сдвигается ряд, и вновь заносятся данные в регистры, причём если в первом случае выводились значения столбцов с 1 по 48, то здесь выводятся со 2 по 49. Затем с 3 по 50 и наконец с 9 по 56. Вот зачем нужно семь символов! В результате мы сдвинули текст на одно знакоместо. Теперь необходимо сдвинуть текст на один символ, и считать символы со второго по восьмой. Далее процедура повторяется по кольцу.
Благодаря динамической развёртке, текст перемещается очень плавно, как бы едет на колёсиках, нет никакого утолщения букв, но заметен их наклон, что, в общем то не портит всю картину, а придаёт ей своеобразную пикантность.
 
 
Исходники рабочие, но мало прокомментированы и совсем не оптимизированы. Если будет время, доработаю. Вместо указанных регистров можно применять другие, специализированные и не очень, лишь бы по току подходили ( а он при скважности 8 будет намного больше стандартной статики).

   Что показали результаты? При правильном построении алгоритма удалось получить вполне рабочую конструкцию, зрительно не уступающую промышленным образцам. И это без всяких таймеров и прочего. Оптимизировав программу, всё таки придётся вывод графики переместить в таймер, потому что планируемое создание разнообразных эффектов будет влиять на качество вывода строки. 

   И ещё один нюанс. Пока не была написана программа-загрузчик, текст заливался в EEPROM вручную, из подготовленного в блокноте файла. Тестовый EEPROM можно открыть в блокноте и подредактировать. На первых порах здорово помогло. Байты под номером 00000 и 00001 - сумма длины выводимого текста. Максимум - 510 символов. Если символов меньше, чем 255 , то значение только  в первом байте, а во втором - 0. Если больше, то в первом - 255, а во втором разность меду значением и 255. В третьем байте текущая скорость (максимум 6). С четвёртого байта сам текст. Вначале стоит несколько пробелов, чтобы буквы при старте появлялись по одной, а не сразу на всю строку.
 
 
Некоторые буквы  в таблице символов пока не дописаны. Но их визуальная кодировка позволяет сделать это самим, даже полностью изменить шрифт.
По просьбе выкладываю фьюзы.
 
 

Кодировка символов в русской версии Windows (CP1251) - символы с 80 по FF.
Кто захочет добавить в шрифты недостающие символы (например, украинские), должен ориентироваться на эту таблицу.
Например, символ "№" в таблице имеет порядковый номер B9 - в шестнадцатеричной системе или  185 в десятичной.



 
 
Оптимизированные и прокомментированные исходники.
 
 
Исходники и бинарники для строки 8х96.


Загрузчик на C++ builder (с исходниками)

Загрузчик на VBNET  (с исходниками)

Загрузчик на VBNET для КПК (НУЖНО ПРОТЕСТИРОВАТЬ! (с исходниками)

Как вы думаете, если строку с горизонтального положения перевести в вертикальное, что будет?
Нет, не угадали, вам не придётся голову поворачивать на 90 градусов!
Мы перевернули шрифт, и теперь можно сделать вертикальную бегущую строку, не изменяя основной код программы!
Правда не переворачивали английские буквы за ненадобностью. Кто это сделает, поделитесь с нами, мы выложим на сайт.

А вот появилась модификация строки с часами, термометром и большим текстом!!!

Не удержался, попробовал строку в Протеусе (7.10 SP0) - работает!!!




Категория: Мои статьи | Добавил: bascom (27.01.2009)
Просмотров: 35988 | Комментарии: 109
Всего комментариев: 1081 2 3 4 5 6 »
105 montuni  
0
Прошу автора или пользователей  прокомментировать   подпрограмму "Download". Какая процедура здесь выполняется?

106 bascom  
0
Там же написано:
Download:                                                   'загрузка данных через RS232
В подпрограмме отключаются порты, чтобы на экране во время приёма данных не было мусора, затем принимается 512 символов с управляющей программы.

107 montuni  
0
Я это прочел)). Правильно ли я понял, что код каждого символа передается(принимается) в два приема?   Хотелось коммент к каждой строке подпрограммы. Или ссылку, где можно прочитать как организована передача кода символа.

108 bascom  
0
Да, один символ передаётся в 2 приёма.
На первых порах сделал как мог, сейчас этот код значительно бы упростил.
Но тогда нужно будет править и управляющую программу, она тоже символ разделяет на старший и младший байт перед отправкой.

97 bascom  
0
Нужно исправить файл 8х48_EEP.bin, даже в обычном блокноте.
Следует обратить внимание на первые 3 байта.
Байты под номером 00000 и 00001 - сумма длины выводимого текста. Максимум - 510 символов. Если символов меньше, чем 255 , то значение только  в первом байте, а во втором - 0. Если больше, то в первом - 255, а во втором разность меду значением и 255. В третьем байте текущая скорость (максимум 6). С четвёртого байта сам текст. Вначале стоит несколько пробелов, чтобы буквы при старте появлялись по одной, а не сразу на всю строку.

98 Reeestinpeace  
0
Если я правильно понимаю, что даже если изменить пару букв в блокноте данного файла, протеус уже должен выводить новую строку?

99 bascom  
0
Да, только протеус нужно перезапускать, чтобы он увидел изменения, налету не получится.

100 Reeestinpeace  
0
Спасибо за ответ, но не получается. Я делаю следующим образом. Скачиваю папку там где лежит исходник схемы в протеусе, переименовываю файл в папке 8х48 с расширением EEP, в той же папке HEX файл вставляю в микроконтроллер, перезапускаю протеус и он должен показывать новую надпись? Заранее извиняюсь за глупые вопросы!!
И у меня еще есть один вопрос, я бы хотел перебить вашу программу под другой язык программирования и другой микроконтроллер, не могли бы вы рассказать алгоритм действия данной программы. Заранее спасибо за ответ!!

101 bascom  
0
HEX трогать нельзя, в нём сама программа вывода текста.
Нужно только править файл 8х48_EEP.bin, при этом в самом протеусе ничего не менять.
А чтобы изменения вступили в силу нужно нажать ОТЛАДКА - сброс постоянных данных модели.

102 Reeestinpeace  
0
"А чтобы изменения вступили в силу нужно нажать ОТЛАДКА - сброс постоянных данных модели."
Это необходимо сделать в протеусе? Если да то где?

103 bascom  
0
Конечно в протеусе.
Меню ОТЛАДКА, а там пункт - сброс постоянных данных модели

104 Reeestinpeace  
0
Огромное спасибо))

96 bascom  
0
Загрузчиков в статье аж целых 3 штуки, на разных языках. Причём все тестировались, правда на 32 разрядке.
А как вы вообще собираетесь поменять текст, если у вас нет СОМ-порта или преобразователя ЮСБ-СОМ?
Или вам в протеусе поменять нужно?

95 bascom  
0
С помощью загрузчика.

94 bascom  
0
Выложил рабочую схему в Протеусе, налетайте!!!

92 killrill  
0
доброго времени суток, достал спустя год из кладовки строку включаю болт, прошиваю 8х96 шьется епром говорит файл пуст, включаю нет реакции, загрузчиком ввожу свой текс все гуд побежала, но одно но не сохраняет емпром после выключения питания!, атмегу менял результат тот же, вчем грабли?

93 bascom  
0
В качестве БП. Попробовать другой или на ресет супрессор.

90 drug  
0
а можно список деталей выложить или в каком файле схема находится blink

91 bascom  
0
http://bascom.at.ua/2008/runstring/Runstring.zip
SPlan - формат, в котором нарисована схема.

88 alenik  
0
bascom, есть проблема, прошу подсказать в чем может быть причина.
Собрал схему 8х48, все прекрасно работает. Но пытаюсь добавить украинские буквы.
Забил их в исходник, скомпилировал, но украинские символы так и не появились.
Вместо них в слове пробел. Bascom-avr- 2.0.5.0
Вот, загрузил прошивку с исходником: http://letitbit.net/download/86953.80151b19dfdfb3d291e867a228cc/8x48.rar.html

89 bascom  
0
Конечно не будет работать! Ведь вы их расположили сразу за большим "Я", как раз на месте маленьких "а, б, в". Я в статье добавил картинку кодировки символов, ориентируйтесь на неё, куда добавлять недостающие.

86 alenik  
0
bascom, а можно Вас попросить, если это не очень сложно, изменить код прошивки для работы с AT90S8515 .
AT90S8515 у меня от фанкарты (пиратка для sat-tv) осталась, думаю у людей их тоже много лежит, вот как раз
в таком народном проекте могли бы ещё пригодится.

87 bascom  
0
В принципе код видоизменить можно. Только мне это не нужно. Я выложил исходники для того, чтобы люди правили под свои нужды сами. Сложного в этом ничего нет. Если сами не сможете, пишите в личку, попробуем договориться.

84 alenik  
0
bascom , несколько вопросов если позволите.
1. Буде-ли в этой схеме работать ATMEGA48 или AT90S8515, хотя-бы для начала, чтобы запустить.
2. Будут-ли отображатся все украинские буквы (исходник нечем посмотреть да и в программировании не смыслю).
3. Я не сомневаюсь в работоспосоности схемы, но прошу подтвердить или опровергнуть, если эту схему нарисовать в Протэусе, она работать не будет?.

85 bascom  
0
1. ATMEGA48- Не влезет код. AT90S8515 - без изменения кода настройки портов работать не будет.
2. Сейчас в программе коды русских и английских букв. Украинские ввести очень легко. Исходник можно посмотреть в обычном блокноте.
3. Насчёт Протеуса не могу ответить - пробуйте.

1-10 11-20 21-30 31-40 41-50 51-60
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа
Поиск
Друзья сайта
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Copyright Radan Studio © 2024