adruha 0 8 января, 2011 Опубликовано 8 января, 2011 · Жалоба Есть светодиодная панель 7х21 собранная на четырех 74hc595 все подключено к меге8, пытаюсь реализовать бегущую строку. Но вот беда попал в тупик уже несколько дней сдвинуться не могу строка движется не как строка а как столбец вверх, и как это исправить не пойму. Мало опыта у меня в этом деле, сильно не пинайте. Исходник на винавр прилагаю. Подскажите как это исправить? at16_16_led.zip Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ae_ 2 8 января, 2011 Опубликовано 8 января, 2011 · Жалоба Есть светодиодная панель 7х21 собранная на четырех 74hc595... Хорошо было бы посмотреть на схему подключения, т.к. в файле font.h большинство символов 3х5, но встечаются и 7х8, 5х7, причём цифры 0...6 расположены "стоя", остальные символы - "лёжа" (3х5) и "лёжа на другом боку" - 7х8. Поскольку текст для вывода = "01234561111", то используется только та часть фонта, где символы "стоя", но в исходнике я не увидел попиксельного сдвига символов для вывода на табло, только байтовый сдвиг. Поэтому текст и движется вверх. Для бегущей строки надо каждый байт символа сдвигать влево, пока не сдвинем на ширину символа (зависит от используемого фонта, у Вас=7). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adruha 0 9 января, 2011 Опубликовано 9 января, 2011 · Жалоба Хорошо было бы посмотреть на схему подключения, т.к. в файле font.h большинство символов 3х5, но встечаются и 7х8, 5х7, причём цифры 0...6 расположены "стоя", остальные символы - "лёжа" (3х5) и "лёжа на другом боку" - 7х8. Поскольку текст для вывода = "01234561111", то используется только та часть фонта, где символы "стоя", но в исходнике я не увидел попиксельного сдвига символов для вывода на табло, только байтовый сдвиг. Поэтому текст и движется вверх. Для бегущей строки надо каждый байт символа сдвигать влево, пока не сдвинем на ширину символа (зависит от используемого фонта, у Вас=7). фонт я делал сам, там еще не все буквы доделаны, а точнее сказать переделаны, но там все что вывожу они "стоя", а вот как попиксельно сдвигать? можно кусочек примера или разжевать? а то я такое не вытворял. Заранее благодарен! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ae_ 2 9 января, 2011 Опубликовано 9 января, 2011 · Жалоба Нужно сначала добиться по-символьной бегущей строки, например: "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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adruha 0 9 января, 2011 Опубликовано 9 января, 2011 · Жалоба дык это понятно что их нужно сдвигать, но их ее нужно и объединить, то есть когда еденица сдвигается на ее мест о должна въезжать побитно двойка, но как это реализовать я не пойму. сдвигать пробовал например единица сдвигается потом исчезает и пипейц двойку то как туды запихнуть не врублюся никак. Простите за тупость но читото не доходит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ae_ 2 9 января, 2011 Опубликовано 9 января, 2011 · Жалоба А схему можно увидеть? проще будет разобраться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adruha 0 9 января, 2011 Опубликовано 9 января, 2011 · Жалоба А схему можно увидеть? проще будет разобраться. Схема с протеуса только. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
S.A.G 0 9 января, 2011 Опубликовано 9 января, 2011 · Жалоба Привет всем.Тебе повезло,я сделал строки на 192*16,240*32.Сейчас мучаюсь над china программой LedCenter, у этого очень крутая структура. Совет 1-> не мучай себя,управляй через SPI,это и быстро и без проблем.У меня mega на 12MHZ,clk SPI max*2,работает на ОК.время строки 1,8 мс на 16 строк,ты можешь и по медленее. :rolleyes: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kosyak© 0 9 января, 2011 Опубликовано 9 января, 2011 · Жалоба В качестве совета - делайте сразу аналог функции bitblt(). Когда Вам надоест текст бегущий справо налево можно быстро будет пришнуровать "эффект", например, движение слева направо :))) или сверху вниз..или еще как душа пожелает :). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adruha 0 10 января, 2011 Опубликовано 10 января, 2011 · Жалоба Привет всем.Тебе повезло,я сделал строки на 192*16,240*32.Сейчас мучаюсь над china программой LedCenter, у этого очень крутая структура. Совет 1-> не мучай себя,управляй через SPI,это и быстро и без проблем.У меня mega на 12MHZ,clk SPI max*2,работает на ОК.время строки 1,8 мс на 16 строк,ты можешь и по медленее. :rolleyes: А в чем мне повезло :-) ? Когда есть интерфейс SPI то я именно так и делаю. В этой схеме тоже используется трех проводное управление, на мой взгляд разница лиш только в том что тут так сказать программный SPI ... а во всем остальном одно и тоже если я не ошибаюсь. В качестве совета - делайте сразу аналог функции bitblt(). Когда Вам надоест текст бегущий справо налево можно быстро будет пришнуровать "эффект", например, движение слева направо :))) или сверху вниз..или еще как душа пожелает :). Советы эт хорошо..... но вот примерчик бы как это тут реализовать! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vvkka 0 10 января, 2011 Опубликовано 10 января, 2011 · Жалоба Советы эт хорошо..... но вот примерчик бы как это тут реализовать! готовые примерчики теперь только за денюшки делают , всем семью кормить надо в свое время делали через циклы попиксельного сдвига из буферных значение (иначе как высветить например половина выдвигаемой цифры или символа) вот и пришлось дополнительно ставить память , работка еще та оказалась пока все варианты пропесали сейчас думаю делают подругому!!! сталкиватся пока неприходилось Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adruha 0 10 января, 2011 Опубликовано 10 января, 2011 · Жалоба готовые примерчики теперь только за денюшки делают , всем семью кормить надо в свое время делали через циклы попиксельного сдвига из буферных значение (иначе как высветить например половина выдвигаемой цифры или символа) вот и пришлось дополнительно ставить память , работка еще та оказалась пока все варианты пропесали сейчас думаю делают подругому!!! сталкиватся пока неприходилось Учитывая сколько я уже бъюсь с этим я готов заплатить! Сколько? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adruha 0 11 января, 2011 Опубликовано 11 января, 2011 · Жалоба Больше нет соображений!? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ae_ 2 11 января, 2011 Опубликовано 11 января, 2011 · Жалоба Больше нет соображений!? да какие деньги?! за что?! а подумать?! предлагаю двигаться от простого к сложному: 1) вариант по-символьного сдвига работает правильно? когда сдвигать "1234", "234?", "34??", "4???" 2) сделать просто бегущую вертикальную линию/точку, справа налево, но уже попиксельно, безо всяких фонтов. "___ |", "__|_", "_|__", ... 3) перерисовать фонт символами "на боку", так проще выводить по-пиксельно. 4) начинать с левого конца дисплея, даже с символа левее дисплея, сдвинуть его на N бит, то что вышло за пределы+правый край символа справа - вывести на дисплей, то же самое проделать вправо с остальными символами, сливая вместе выдвинутый хвост символа слева и текущий символ, тоже сдвинутый на N бит. и т.д. исходником на С не помогу, т.к. не владею. могу на асме. ещё у Вас регистры на схеме включены не последовательно, это так задумано? для бегущей строки намного удобнее соединить последовательно: 1,2,3, а не 3,1,2. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kosyak© 0 11 января, 2011 Опубликовано 11 января, 2011 · Жалоба А бегущая строка будет иметь только "эффект" движения текста справа налево? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться