реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> светодиодная панель 7х21, Подскажите как реализовать?
adruha
сообщение Jan 8 2011, 16:49
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 38
Регистрация: 11-12-07
Из: Москва
Пользователь №: 33 203



Есть светодиодная панель 7х21 собранная на четырех 74hc595 все подключено к меге8, пытаюсь реализовать бегущую строку. Но вот беда попал в тупик уже несколько дней сдвинуться не могу строка движется не как строка а как столбец вверх, и как это исправить не пойму. Мало опыта у меня в этом деле, сильно не пинайте. Исходник на винавр прилагаю. Подскажите как это исправить?
Прикрепленные файлы
Прикрепленный файл  at16_16_led.zip ( 2.31 килобайт ) Кол-во скачиваний: 42
 
Go to the top of the page
 
+Quote Post
ae_
сообщение Jan 8 2011, 19:50
Сообщение #2


Участник
***

Группа: Свой
Сообщений: 462
Регистрация: 2-04-07
Из: Иркутск
Пользователь №: 26 695



Цитата(adruha @ Jan 9 2011, 03:49) *
Есть светодиодная панель 7х21 собранная на четырех 74hc595...

Хорошо было бы посмотреть на схему подключения, т.к. в файле font.h большинство символов 3х5, но встечаются и 7х8, 5х7, причём цифры 0...6 расположены "стоя", остальные символы - "лёжа" (3х5) и "лёжа на другом боку" - 7х8.
Поскольку текст для вывода = "01234561111", то используется только та часть фонта, где символы "стоя", но в исходнике я не увидел попиксельного сдвига символов для вывода на табло, только байтовый сдвиг. Поэтому текст и движется вверх.
Для бегущей строки надо каждый байт символа сдвигать влево, пока не сдвинем на ширину символа (зависит от используемого фонта, у Вас=7).
Go to the top of the page
 
+Quote Post
adruha
сообщение Jan 9 2011, 03:28
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 38
Регистрация: 11-12-07
Из: Москва
Пользователь №: 33 203



Цитата(ae_ @ Jan 9 2011, 01:50) *
Хорошо было бы посмотреть на схему подключения, т.к. в файле font.h большинство символов 3х5, но встечаются и 7х8, 5х7, причём цифры 0...6 расположены "стоя", остальные символы - "лёжа" (3х5) и "лёжа на другом боку" - 7х8.
Поскольку текст для вывода = "01234561111", то используется только та часть фонта, где символы "стоя", но в исходнике я не увидел попиксельного сдвига символов для вывода на табло, только байтовый сдвиг. Поэтому текст и движется вверх.
Для бегущей строки надо каждый байт символа сдвигать влево, пока не сдвинем на ширину символа (зависит от используемого фонта, у Вас=7).


фонт я делал сам, там еще не все буквы доделаны, а точнее сказать переделаны, но там все что вывожу они "стоя", а вот как попиксельно сдвигать? можно кусочек примера или разжевать? а то я такое не вытворял. Заранее благодарен!
Go to the top of the page
 
+Quote Post
ae_
сообщение Jan 9 2011, 05:34
Сообщение #4


Участник
***

Группа: Свой
Сообщений: 462
Регистрация: 2-04-07
Из: Иркутск
Пользователь №: 26 695



Нужно сначала добиться по-символьной бегущей строки, например: "1234", "234_", "34__", "4___"
затем добавить промежуточные кадры со сдвигом на 1 бит влево. по 6 дополнительных кадров между фиксированными , когда символ точно попадает на своё знакоместо.

сдвигать влево побитно: var<<1, но нужно добавлять справа биты, которые выдвигаются из знакоместа справа.

начальный текст '01_'
0011100 0001000
0100010 0011000
0100010 0001000
0100010 0001000
0100010 0001000
0100010 0001000
0011100 0011100

текст сдвинут на 1 бит влево
0111000 0010000
1000100 0110000
1000100 0010000
1000100 0010000
1000100 0010000
1000100 0010000
0111000 0111001

текст сдвинут на 4 бита влево
1000001 0000000
0100011 0000000
0100001 0000000
0100001 0000000
0100001 0000000
0100001 0000000
1000011 1001111

текст '01_' сдвинут на 1 знакоместо влево (7 бит) получилось '1_?'
0001000 0000000
0011000 0000000
0001000 0000000
0001000 0000000
0001000 0000000
0001000 0000000
0011100 1111111
Go to the top of the page
 
+Quote Post
adruha
сообщение Jan 9 2011, 09:16
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 38
Регистрация: 11-12-07
Из: Москва
Пользователь №: 33 203



дык это понятно что их нужно сдвигать, но их ее нужно и объединить, то есть когда еденица сдвигается на ее мест о должна въезжать побитно двойка, но как это реализовать я не пойму. сдвигать пробовал например единица сдвигается потом исчезает и пипейц двойку то как туды запихнуть не врублюся никак. Простите за тупость но читото не доходит.
Go to the top of the page
 
+Quote Post
ae_
сообщение Jan 9 2011, 10:32
Сообщение #6


Участник
***

Группа: Свой
Сообщений: 462
Регистрация: 2-04-07
Из: Иркутск
Пользователь №: 26 695



А схему можно увидеть? проще будет разобраться.
Go to the top of the page
 
+Quote Post
adruha
сообщение Jan 9 2011, 13:31
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 38
Регистрация: 11-12-07
Из: Москва
Пользователь №: 33 203



Цитата(ae_ @ Jan 9 2011, 16:32) *
А схему можно увидеть? проще будет разобраться.


Схема с протеуса только.
Прикрепленное изображение
Go to the top of the page
 
+Quote Post
Stepan_L
сообщение Jan 9 2011, 14:44
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 59
Регистрация: 26-08-08
Из: Ереван
Пользователь №: 39 828



Привет всем.Тебе повезло,я сделал строки на 192*16,240*32.Сейчас мучаюсь над china программой LedCenter, у этого очень крутая структура. Совет 1-> не мучай себя,управляй через SPI,это и быстро и без проблем.У меня mega на 12MHZ,clk SPI max*2,работает на ОК.время строки 1,8 мс на 16 строк,ты можешь и по медленее. rolleyes.gif


--------------------
ARM_enia
Go to the top of the page
 
+Quote Post
kosyak©
сообщение Jan 9 2011, 18:01
Сообщение #9


Частый гость
**

Группа: Свой
Сообщений: 179
Регистрация: 1-10-07
Из: НЧ
Пользователь №: 30 966



В качестве совета - делайте сразу аналог функции bitblt().
Когда Вам надоест текст бегущий справо налево можно быстро будет пришнуровать "эффект", например, движение слева направо sm.gif))
или сверху вниз..или еще как душа пожелает sm.gif.
Go to the top of the page
 
+Quote Post
adruha
сообщение Jan 10 2011, 13:12
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 38
Регистрация: 11-12-07
Из: Москва
Пользователь №: 33 203



Цитата(Stepan_L @ Jan 9 2011, 20:44) *
Привет всем.Тебе повезло,я сделал строки на 192*16,240*32.Сейчас мучаюсь над china программой LedCenter, у этого очень крутая структура. Совет 1-> не мучай себя,управляй через SPI,это и быстро и без проблем.У меня mega на 12MHZ,clk SPI max*2,работает на ОК.время строки 1,8 мс на 16 строк,ты можешь и по медленее. rolleyes.gif


А в чем мне повезло :-) ? Когда есть интерфейс SPI то я именно так и делаю. В этой схеме тоже используется трех проводное управление, на мой взгляд разница лиш только в том что тут так сказать программный SPI ... а во всем остальном одно и тоже если я не ошибаюсь.

Цитата(kosyak© @ Jan 10 2011, 00:01) *
В качестве совета - делайте сразу аналог функции bitblt().
Когда Вам надоест текст бегущий справо налево можно быстро будет пришнуровать "эффект", например, движение слева направо sm.gif))
или сверху вниз..или еще как душа пожелает sm.gif.


Советы эт хорошо..... но вот примерчик бы как это тут реализовать!
Go to the top of the page
 
+Quote Post
vvkka
сообщение Jan 10 2011, 14:57
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 57
Регистрация: 9-07-08
Из: Волгоградская обл
Пользователь №: 38 838



Цитата(adruha @ Jan 10 2011, 19:12) *
Советы эт хорошо..... но вот примерчик бы как это тут реализовать!



готовые примерчики теперь только за денюшки делают , всем семью кормить надо

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



сейчас думаю делают подругому!!! сталкиватся пока неприходилось
Go to the top of the page
 
+Quote Post
adruha
сообщение Jan 10 2011, 15:18
Сообщение #12


Участник
*

Группа: Участник
Сообщений: 38
Регистрация: 11-12-07
Из: Москва
Пользователь №: 33 203



Цитата(vvkka @ Jan 10 2011, 20:57) *
готовые примерчики теперь только за денюшки делают , всем семью кормить надо

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



сейчас думаю делают подругому!!! сталкиватся пока неприходилось



Учитывая сколько я уже бъюсь с этим я готов заплатить! Сколько?
Go to the top of the page
 
+Quote Post
adruha
сообщение Jan 11 2011, 12:58
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 38
Регистрация: 11-12-07
Из: Москва
Пользователь №: 33 203



Больше нет соображений!?
Go to the top of the page
 
+Quote Post
ae_
сообщение Jan 11 2011, 13:29
Сообщение #14


Участник
***

Группа: Свой
Сообщений: 462
Регистрация: 2-04-07
Из: Иркутск
Пользователь №: 26 695



Цитата(adruha @ Jan 11 2011, 23:58) *
Больше нет соображений!?

да какие деньги?! за что?! а подумать?!
предлагаю двигаться от простого к сложному:
1) вариант по-символьного сдвига работает правильно? когда сдвигать "1234", "234?", "34??", "4???"
2) сделать просто бегущую вертикальную линию/точку, справа налево, но уже попиксельно, безо всяких фонтов. "___ |", "__|_", "_|__", ...
3) перерисовать фонт символами "на боку", так проще выводить по-пиксельно.
4) начинать с левого конца дисплея, даже с символа левее дисплея, сдвинуть его на N бит, то что вышло за пределы+правый край символа справа - вывести на дисплей, то же самое проделать вправо с остальными символами, сливая вместе выдвинутый хвост символа слева и текущий символ, тоже сдвинутый на N бит.
и т.д.
исходником на С не помогу, т.к. не владею. могу на асме.
ещё у Вас регистры на схеме включены не последовательно, это так задумано?
для бегущей строки намного удобнее соединить последовательно: 1,2,3, а не 3,1,2.
Go to the top of the page
 
+Quote Post
kosyak©
сообщение Jan 11 2011, 16:17
Сообщение #15


Частый гость
**

Группа: Свой
Сообщений: 179
Регистрация: 1-10-07
Из: НЧ
Пользователь №: 30 966



А бегущая строка будет иметь только "эффект" движения текста справа налево?
Go to the top of the page
 
+Quote Post
adruha
сообщение Jan 11 2011, 17:47
Сообщение #16


Участник
*

Группа: Участник
Сообщений: 38
Регистрация: 11-12-07
Из: Москва
Пользователь №: 33 203



Цитата(ae_ @ Jan 11 2011, 19:29) *
да какие деньги?! за что?! а подумать?!
предлагаю двигаться от простого к сложному:
1) вариант по-символьного сдвига работает правильно? когда сдвигать "1234", "234?", "34??", "4???"
2) сделать просто бегущую вертикальную линию/точку, справа налево, но уже попиксельно, безо всяких фонтов. "___ |", "__|_", "_|__", ...
3) перерисовать фонт символами "на боку", так проще выводить по-пиксельно.
4) начинать с левого конца дисплея, даже с символа левее дисплея, сдвинуть его на N бит, то что вышло за пределы+правый край символа справа - вывести на дисплей, то же самое проделать вправо с остальными символами, сливая вместе выдвинутый хвост символа слева и текущий символ, тоже сдвинутый на N бит.
и т.д.
исходником на С не помогу, т.к. не владею. могу на асме.
ещё у Вас регистры на схеме включены не последовательно, это так задумано?
для бегущей строки намного удобнее соединить последовательно: 1,2,3, а не 3,1,2.


Да говорю же я уже в отчаянии вот и готов на любые жертвы чтобы добиться результата! А я его все ровно победю любыми путями но разумными:-) !
Я к сожалению на асме ни бум бум.... так что мне это не поможет!
По поводу регистров, ет так задумано не мной, эт китайцы. Я пытаюсь русифицировать изделие.
Go to the top of the page
 
+Quote Post
MasterM12
сообщение Jan 12 2011, 10:09
Сообщение #17





Группа: Новичок
Сообщений: 6
Регистрация: 18-08-07
Из: Омск
Пользователь №: 29 871



Могу вам помочь - пишите MasterM12@mail.ru или icq 400384398? думаю договоримся...
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 23:33
Рейтинг@Mail.ru


Страница сгенерированна за 0.01484 секунд с 7
ELECTRONIX ©2004-2016