Перейти к содержанию
    

светодиодная панель 7х21, Подскажите как реализовать?

Есть светодиодная панель 7х21 собранная на четырех 74hc595 все подключено к меге8, пытаюсь реализовать бегущую строку. Но вот беда попал в тупик уже несколько дней сдвинуться не могу строка движется не как строка а как столбец вверх, и как это исправить не пойму. Мало опыта у меня в этом деле, сильно не пинайте. Исходник на винавр прилагаю. Подскажите как это исправить?

at16_16_led.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть светодиодная панель 7х21 собранная на четырех 74hc595...

Хорошо было бы посмотреть на схему подключения, т.к. в файле font.h большинство символов 3х5, но встечаются и 7х8, 5х7, причём цифры 0...6 расположены "стоя", остальные символы - "лёжа" (3х5) и "лёжа на другом боку" - 7х8.

Поскольку текст для вывода = "01234561111", то используется только та часть фонта, где символы "стоя", но в исходнике я не увидел попиксельного сдвига символов для вывода на табло, только байтовый сдвиг. Поэтому текст и движется вверх.

Для бегущей строки надо каждый байт символа сдвигать влево, пока не сдвинем на ширину символа (зависит от используемого фонта, у Вас=7).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хорошо было бы посмотреть на схему подключения, т.к. в файле font.h большинство символов 3х5, но встечаются и 7х8, 5х7, причём цифры 0...6 расположены "стоя", остальные символы - "лёжа" (3х5) и "лёжа на другом боку" - 7х8.

Поскольку текст для вывода = "01234561111", то используется только та часть фонта, где символы "стоя", но в исходнике я не увидел попиксельного сдвига символов для вывода на табло, только байтовый сдвиг. Поэтому текст и движется вверх.

Для бегущей строки надо каждый байт символа сдвигать влево, пока не сдвинем на ширину символа (зависит от используемого фонта, у Вас=7).

 

фонт я делал сам, там еще не все буквы доделаны, а точнее сказать переделаны, но там все что вывожу они "стоя", а вот как попиксельно сдвигать? можно кусочек примера или разжевать? а то я такое не вытворял. Заранее благодарен!

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нужно сначала добиться по-символьной бегущей строки, например: "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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А схему можно увидеть? проще будет разобраться.

 

Схема с протеуса только.

post-33203-1294579847_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В качестве совета - делайте сразу аналог функции bitblt().

Когда Вам надоест текст бегущий справо налево можно быстро будет пришнуровать "эффект", например, движение слева направо :)))

или сверху вниз..или еще как душа пожелает :).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

В качестве совета - делайте сразу аналог функции bitblt().

Когда Вам надоест текст бегущий справо налево можно быстро будет пришнуровать "эффект", например, движение слева направо :)))

или сверху вниз..или еще как душа пожелает :).

 

Советы эт хорошо..... но вот примерчик бы как это тут реализовать!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Советы эт хорошо..... но вот примерчик бы как это тут реализовать!

 

 

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

 

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

 

 

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

 

 

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

 

 

Учитывая сколько я уже бъюсь с этим я готов заплатить! Сколько?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Больше нет соображений!?

да какие деньги?! за что?! а подумать?!

предлагаю двигаться от простого к сложному:

1) вариант по-символьного сдвига работает правильно? когда сдвигать "1234", "234?", "34??", "4???"

2) сделать просто бегущую вертикальную линию/точку, справа налево, но уже попиксельно, безо всяких фонтов. "___ |", "__|_", "_|__", ...

3) перерисовать фонт символами "на боку", так проще выводить по-пиксельно.

4) начинать с левого конца дисплея, даже с символа левее дисплея, сдвинуть его на N бит, то что вышло за пределы+правый край символа справа - вывести на дисплей, то же самое проделать вправо с остальными символами, сливая вместе выдвинутый хвост символа слева и текущий символ, тоже сдвинутый на N бит.

и т.д.

исходником на С не помогу, т.к. не владею. могу на асме.

ещё у Вас регистры на схеме включены не последовательно, это так задумано?

для бегущей строки намного удобнее соединить последовательно: 1,2,3, а не 3,1,2.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А бегущая строка будет иметь только "эффект" движения текста справа налево?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...