Программирование 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)
Просмотров: 36054 | Комментарии: 109
Всего комментариев: 108« 1 2 3 4 5 6 »
35 PCHELA  
0
на схеме COM - порт 2 и 3 ноги не перепутаны?(насколько я знаю 3 - ввод в МК, а 2 - из МК в комп)
и КТ973 p-n-p переход, кажется

36 bascom  
0
Да, так и есть, перепутаны! А я не обращал внимания, и ведь уже несколько человек собрали! Надо бы схему поправить... А транзистор там правильный указан. Можно ещё КТ816 ставить.

37 PCHELA  
0
указан-то правильно, но нарисован n-p-n

33 killrill  
0
Ну я по ссылкам вижу вот эти оптимизированные и откаментированые http://bascom.at.ua/2008/runstring/runstring.bas

34 bascom  
0
Попробуйте залить эти: http://bascom.at.ua/2008/runstring/Runstring.zip

31 killrill  
0
фьюзы согласно приведённых в статье, проц 8а пришёл на замену 8(так как оные сняты с производства) и не чем не отличается(оптимизировали по питанию) в исходниках скорость это байт и значит меньше единицы его выставить нельзя(((, как быть? может это связано с матрицами RL-M2388(хотя чего уж там обычная матрица 8х8 красных светодиодов)

32 bascom  
0
В статье куча исходников. Какие вы используете?

29 killrill  
0
Собрал на матрицах 8х8 букавки побежали, связь с ПК есть, но скорость ужасно быстрая даже при значении 1, поменял кварц на 4Мгц, скорость стала приемлемой, но естественно ужасно моргает, что делать? проц atmega8a

30 bascom  
0
С 8а не пробовал, но уже несколько человек собрали и проблем не было. Что с фьюзами? Попробуйте в исходниках поиграться, там комментарии есть.

27 levahyn  
0
Ура! Все работает! Впаял остальные светодиоды. На одном знакоместе 8*8 не читался текст. Схема работает на все 100, с первого тыка. Спасибо bascom! Какие лучше светодиоды ставить что-бы оптимально читался текст ?

28 bascom  
0
Светодиоды выбираются исходя из того, где строка установлена будет. При прямом ярком солнечном свете необходима общая яркость примерно 6000 кД на 1 м2. При сумерках достаточно в 10 раз меньше. Самые оптимальные для строки - светодиоды эллиптические. Угол обзора по горизонтали у них большой,а по вертикали - маленький. Ну ведь никто строку и не будет читать с вертолёта или в лежачем виде под ней. Им не до того tongue . А вот влево-право смотреться будет издалека. А вообще то надо экспериментировать.

25 levahyn  
0
Пытаюсь повторить данное устройство. Собрал схему пока только на одно знакоместо. Тоесть впаял 64 светодиода задействовав один блок ULN2803 + 74hc164(26 ногу проца соеденил с 1+2 выводами микросхемы 74164). Что-то бежит но на текст не похоже. Вопрос к bascom: Это что-либо я не так сделал или прошивка "тестовая"?

26 bascom  
0
Прошивка рабочая. Уже несколько человек собрало. Ищите ошибки в монтаже.

23 капуста  
0
да еще она должна быть в 4 раза больше

24 bascom  
0
Пишите ваши пожелания по строке на radan1970dogmail.ru.
Так как вариантов много.

22 капуста  
0
спасибо что прочитали! Меня интерисует комерческий вариант

21 капуста  
0
всётаки это статическая штука когда поставиш задачу чтобы горело всё табло то это будет ток . тем более эфект в обратном направлениии невозможен.

19 Алексей  
0
Здравствуйте. А кто нибудь уже сделал???? Работает????
Диплом на носу, а я еще ничего и не начинал. помогите!!! плиз!!! пришлите прошивку, листинг и схему.....
мой lexa108@yandex.ru. СПС!

20 bascom  
0
Похоже тяжёлый случай. Если вы в статье не нашли схему и прошивку с исходниками, может и в своём ящике не найдёте... wacko

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

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