Помогите с бегущей строкой.

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
miwutka07
Открыл глаза
Сообщения: 60
Зарегистрирован: Вт авг 24, 2010 17:07:25

Помогите с бегущей строкой.

Сообщение miwutka07 »

Полазил по всему инету, нашел кучу схем, прошивок, карявых исходников, но все эти "спецы" которые дают схемы и исходники сами не могут описать принцип как написать программу для бегущей строки. Если сдесь есть умные люди то помогите понять принцип написания программы. Я собрать схему могу. матрицы 8х8 штук 5. На каждую регистры сдвига которыми управляются атмегой напремер восьмой. Но я не могу додуматься как организовать в программе чтение второго символа, сдвиг символа и т.д. Помогите если есть тут ктото с мозгами :)
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3868
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Помогите с бегущей строкой.

Сообщение Engineer_Keen »

miwutka07 писал(а):Я не могу додуматься как организовать в программе чтение второго символа, сдвиг символа и т.д.


Не можете придумать алгоритм или реализовать его на конкретном языке/устройстве?
miwutka07
Открыл глаза
Сообщения: 60
Зарегистрирован: Вт авг 24, 2010 17:07:25

Re: Помогите с бегущей строкой.

Сообщение miwutka07 »

немогу придумать алгоритм. Пишу на Си в кодевижн. Хочу чтобы ктото помог, на пальцах расписал чего там и как посылать. Статические буквы я могу засветить, а вот чтоб они бежали - немогу организовать текст программы. Толи создать массивы с данными строк толи через оператор case написать кучу строк. Вот сдвинулась строка на 9-ую точку и как отобразить первый символ уже дальше, и второй который начинает появляться. Вообщем хочу чтоб мне помогли понять алгоритм, составить его чтоли..... Но никто не может. Только все пишут как это легко, а как до дела.......
денвер
Родился
Сообщения: 15
Зарегистрирован: Вт дек 22, 2009 20:59:38
Откуда: МО

Re: Помогите с бегущей строкой.

Сообщение денвер »

В архиве мой вариант бегущей строки,матрица 6х7(Ш хВ),имеются поиснения.Мож чем поможет.
светотабло.rar
(35.26 КБ) 388 скачиваний
Shplv
Первый раз сказал Мяу!
Сообщения: 28
Зарегистрирован: Пт июн 04, 2010 19:24:26

Re: Помогите с бегущей строкой.

Сообщение Shplv »

miwutka07 писал(а):немогу придумать алгоритм. ... Только все пишут как это легко, а как до дела.......
Алгоритм тесно связан со схематикой устройства, поэтому Вам трудно подсказать. При реализации "бегущей" строки легче всего хранить/выводить символы "по столбцам". При выводе "считайте" что выводится на один символ больше, чем есть места на табло, но начинайте вывод с N-ого столбца первой буквы, постепенно увеличивая N, до тех пор, пока N не достигнет ширины буквы. Кстати, при динамической индикации возможно нужно будет бороться с искажением формы символов на табло. В этом смысле лучше "статическая" индикация, но она гораздо затратнее по "железу"...
miwutka07
Открыл глаза
Сообщения: 60
Зарегистрирован: Вт авг 24, 2010 17:07:25

Re: Помогите с бегущей строкой.

Сообщение miwutka07 »

денвер писал(а):В архиве мой вариант бегущей строки,матрица 6х7(Ш хВ),имеются поиснения.Мож чем поможет.
светотабло.rar

спасибо :) но не помогло. Там даже ошибки есть...... :) Мне нужен алгоритм больше а не программа :) Ну конечно и программку почитаю, кто даст. У меня этих программ куча, и все они с ошибками...... Ну помогите же ктонибудь. Натолкните на мысль как надо организовать алгоритм перемещения букв. Считать я то их смогу.... Я и исходник потом выложу со схемой, только помогите..... Даже все подробно опишу :)
miwutka07
Открыл глаза
Сообщения: 60
Зарегистрирован: Вт авг 24, 2010 17:07:25

Re: Помогите с бегущей строкой.

Сообщение miwutka07 »

Shplv писал(а):
miwutka07 писал(а):немогу придумать алгоритм. ... Только все пишут как это легко, а как до дела.......
Алгоритм тесно связан со схематикой устройства, поэтому Вам трудно подсказать. При реализации "бегущей" строки легче всего хранить/выводить символы "по столбцам". При выводе "считайте" что выводится на один символ больше, чем есть места на табло, но начинайте вывод с N-ого столбца первой буквы, постепенно увеличивая N, до тех пор, пока N не достигнет ширины буквы. Кстати, при динамической индикации возможно нужно будет бороться с искажением формы символов на табло. В этом смысле лучше "статическая" индикация, но она гораздо затратнее по "железу"...

Да это всё я уже начитался по всему инету ))) Мне надо помочь с алгоритмом..... Например:
считал первую букву, обратился к ее массиву, разделенному на столбцы или строки (как удобнее). Потом вывел первую строку и столбец. А вот как это все написать через for, if case и т.д. Я же говорю подробный алгоритм нужен. Вот все только и говорят что схемотехнику надо смотреть как там я захотел выводить. Нечего тут смотреть. один регистр 595 на 8 строк, и 40 столбцов, где 5 регистров(по одному на каждые 8 столбика). Что вы все тут только теорию разводите. Давайте ближе к делу пожалуйста :)
miwutka07
Открыл глаза
Сообщения: 60
Зарегистрирован: Вт авг 24, 2010 17:07:25

Re: Помогите с бегущей строкой.

Сообщение miwutka07 »

Engineer_Keen писал(а):
miwutka07 писал(а):Я не могу додуматься как организовать в программе чтение второго символа, сдвиг символа и т.д.


Не можете придумать алгоритм или реализовать его на конкретном языке/устройстве?

нужен алгоритм подробный. Вроде и все в голове готово, но вот алгоритм как организовать передвижение не могу. Поможете?
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Помогите с бегущей строкой.

Сообщение ARV »

алгоритм? это не поможет? сам алгоритм бежания...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
miwutka07
Открыл глаза
Сообщения: 60
Зарегистрирован: Вт авг 24, 2010 17:07:25

Re: Помогите с бегущей строкой.

Сообщение miwutka07 »

ARV писал(а):алгоритм? это не поможет? сам алгоритм бежания...

Извините, но для просмотра этой страницы у Вас недостаточно прав. - зарегился и вот это пишет. Скинь плиз в текстовом файле.
miwutka07
Открыл глаза
Сообщения: 60
Зарегистрирован: Вт авг 24, 2010 17:07:25

Re: Помогите с бегущей строкой.

Сообщение miwutka07 »

Звеняй, зашел, сейчас читаю. Вроде чтото похоже на нужное. Прочитаю, отпишусь!
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Помогите с бегущей строкой.

Сообщение ARV »

miwutka07 писал(а):Извините, но для просмотра этой страницы у Вас недостаточно прав. - зарегился и вот это пишет. Скинь плиз в текстовом файле.
для просмотра материалов регистрации не требуется - это что-то у вас не то...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
miwutka07
Открыл глаза
Сообщения: 60
Зарегистрирован: Вт авг 24, 2010 17:07:25

Re: Помогите с бегущей строкой.

Сообщение miwutka07 »

ARV писал(а):
miwutka07 писал(а):Извините, но для просмотра этой страницы у Вас недостаточно прав. - зарегился и вот это пишет. Скинь плиз в текстовом файле.
для просмотра материалов регистрации не требуется - это что-то у вас не то...

провитал..... инчего нового не узнал... описана работа с семисегментником. Ничего нужного там нет... Как организовать через регистры вывод бегущей строки вообще не затронут. никто не может помочь...... (((
Murav
Опытный кот
Сообщения: 877
Зарегистрирован: Чт фев 18, 2010 13:51:56

Re: Помогите с бегущей строкой.

Сообщение Murav »

Статическую картинку сделать то получилось?
После этого нужно сделать чтобы при формировании картинки не хранить уже готовые данные для регистров, а составлять их на основе растра. Для начала советую вынести код, читающий растр из памяти(в случае растров отдельных букв - эта функция должна обращаться к ещё одной функции, которая принимает номер буквы и координаты) в отдельную функцию(например называющуюся GetPixel), которая принимает координаты точки(x и y) и возвращает цвет этой точки(то есть 0 или 1) и уже на основе результатов вызовов этой функции составлять байты, которые выдавать на регистры. Такой код конечно не оптимальный, но на нём проще разобраться как всё это должно работать, а потом как разберёшься и всё сделаешь уже можно будет и оптимизировать программу.
А дальше для того чтобы сделать строку бегущей в этой функции вначале надо просто добавить x=(x+position)%длинна изображения и время от времени увеличивать переменную position.

Ну и формирование байтов для регистров нужно делать в цикле(на сколько я понимаю, у тебя должно быть три вложенных цикла). И если используется динамическая индикация, то потребуется ещё один внешний цикл для неё.
miwutka07
Открыл глаза
Сообщения: 60
Зарегистрирован: Вт авг 24, 2010 17:07:25

Re: Помогите с бегущей строкой.

Сообщение miwutka07 »

Murav писал(а):Статическую картинку сделать то получилось?
После этого нужно сделать чтобы при формировании картинки не хранить уже готовые данные для регистров, а составлять их на основе растра. Для начала советую вынести код, читающий растр из памяти(в случае растров отдельных букв - эта функция должна обращаться к ещё одной функции, которая принимает номер буквы и координаты) в отдельную функцию(например называющуюся GetPixel), которая принимает координаты точки(x и y) и возвращает цвет этой точки(то есть 0 или 1) и уже на основе результатов вызовов этой функции составлять байты, которые выдавать на регистры. Такой код конечно не оптимальный, но на нём проще разобраться как всё это должно работать, а потом как разберёшься и всё сделаешь уже можно будет и оптимизировать программу.
А дальше для того чтобы сделать строку бегущей в этой функции вначале надо просто добавить x=(x+position)%длинна изображения и время от времени увеличивать переменную position.

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


Ну в голове то я это понял, а вот как сажусь писать текст, так куча не стыковок вылазит..... даже нигде нет нормального исходного кода чтобы посмотреть. Все с недоработками. Растр я так понял это буква из памяти. Счет букв я сделаю. "(в случае растров отдельных букв - эта функция должна обращаться к ещё одной функции, которая принимает номер буквы и координаты)" - а вот как еще координаты втулить в программу непойму! Функцию GetPixel вроде понял как сделать. Вот и загвоздка в этих координатах... Еслеб кто помог примером кода, хотя б на скорую руку...... А то пол 70% проги в голове готово, а вот такие нюансы не могу шото сообразить ))) Тяжко мне с этими регистрами работать )))) Вот АЦП, ПИД_регялтор - эт легче раз в 50..... Помогите еще кто может.... (((((
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Помогите с бегущей строкой.

Сообщение ARV »

miwutka07 писал(а):провитал..... инчего нового не узнал... описана работа с семисегментником. Ничего нужного там нет... Как организовать через регистры вывод бегущей строки вообще не затронут. никто не может помочь...... (((

я с вас фигею... я давал ссылку совсем на другую статью!!! что вы там читали и какую ересь написали в комментах - просто диву даюсь... вот еще раз ПРАВИЛЬНАЯ ССЫЛКА
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
asteroid7
Опытный кот
Сообщения: 703
Зарегистрирован: Вс янв 18, 2009 21:12:49

Re: Помогите с бегущей строкой.

Сообщение asteroid7 »

ARV, перепроверь, такая же фигня с ссылкой. Ведёт на Извините, но для просмотра... Вы должны...
Раздел "Начинающим > Пробуем программировать". Куки и JS включены.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Помогите с бегущей строкой.

Сообщение ARV »

asteroid7 писал(а):ARV, перепроверь, такая же фигня с ссылкой. Ведёт на Извините, но для просмотра... Вы должны...
Раздел "Начинающим > Пробуем программировать". Куки и JS включены.

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

что касается бегущей строки, то все просто. эй, miwutka07, будь внимателен, даю алгоритм :)))

1. должен быть какой-то массив байтов, соответствующий "экранной области", т.е. каждый бит в этом массиве - есть точка на матрице. записали в массив какое-то число - и тут же на матрице засветились нужные точки (где единички в битах). как вы это обеспечите - мне все равно. я предполагаю, что будет некая фоновая процедура динамической индикации по прерываниям.
2. должен быть массив (двумерный) с символами знакогенератора или иными картинками, которые выводятся на экран. почему двумерный? потому что по одному измерению будут номера символов-картинок, а по второму - номер байта внутри самого символа. этот массив лучше хранить во flash.
3. должна быть функция, которая на входе имеет координаты X, Y и указатель на первый байт внутри знакогенератора и по этим параметрам копирует из знакогенератора фиксированное число байтов в экранную область. левый верхний угол в экранной области определяется координатами.

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

4. делается функция, которая получает координату X и указатель на строку с текстом, и выводит этот текст на экран в точку с координатой (X,0) - считаем, что 0 - это самая верхняя строка матрицы. делает это она при помощи функции из п.3 - по очередной букве строки определяет номер символа в знакогенераторе, выводит это символ, затем сдвигает координату Х на ширинут символа, определяет номер следующего символа и т.д.

на этом этапе вы сумеете вывести строку текста в вашу экранную область, начиная с указанной координаты Х

5. делается цикл, который с задержкой выводит при помощи функции из п.4 заданный текст сначала в позицию, равную максимальному номеру точки в вашей матрице по горизонтали, затем в предыдущую точку, затем в пред-предыдущую и т.д.

на этом этапе строка у вас побежит от правого края до левого.

ВНИМАНИЕ!!!
все функции должны контролировать соответствие реальных координат и тех, что получили на входе: если передана координата по Х раная -12, то НИЧЕГО ВЫВОДИТЬ НЕ НАДО. точно так же не надо выводить и в том случае, если Х стало больше, чем ширина экрана. иначе вы начнете портить ОЗУ со страшной силой.

6. вы должны уметь вычислять ширину текста в точках.

теперь, если ширина текста в точках у вас 120, а ширина экрана в точках 64, то вам остается только производить в цикле простые вычисления и задавать координаты вывода текста в диапазоне от 64 до -120, чтобы весь текст пробежал справа налево.

в общих чертах, это весь алгоритм. есть всякие нюансы типа очистки экрана правее текста строки и т.п. - но для основы этого достаточно.

удачи! :)))
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
marinkaest
Потрогал лапой паяльник
Сообщения: 374
Зарегистрирован: Ср сен 14, 2011 10:37:28
Откуда: Кострома
Контактная информация:

Re: Помогите с бегущей строкой.

Сообщение marinkaest »

Мне понравилось...
А как быть в случае бегущей строки пропеллера?
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»