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

Бегущая Строка На Led Матрицах 5Х8 И Ch595


Viktor26

Рекомендуемые сообщения

Все правильно написал. По моей ссылке практически твоя схема. Только в ней гасятся строки

через 595, а в твоей схеме, через 138. Геннадий выкладывал твой дешифратор, а ты

писал, что 4 вывод НС138 у тебя выведен. Соответствено им ты и гасишь строки.

Алгоритм простой. В ОЗУ МК создаешь массив из 8 строк. Каждая строка длинной равной

длинне твоей строки в панели. Туда ты записываешь то, что планируешь выводить.

Дальше гасишь панель 4 выводом НС138. Загоняешь в линейку НС595 первую строку

из ОЗУ. Зажигаешь строку 4 выводом. Держишь например 10мС. Гасишь и сразу загоняешь

в 595 вторую строку. Меняешь 000 на входе 138 на 001 и 4 выводом зажигаешь 2 строку

на 10мС. Дальше по кругу подаешь на 138 --- 010 загоняешь 3 строку зажигаешь- гасишь

и так все 8 строк. И по кругу с 000 до 111 на НС138.

Давай вопросы.

Изменено пользователем croc19
Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

Надо разобраться сначала с одной строкой: я создаю массив на одну строку длиною в 95 точек.

Например stroka1[95]{ }

В этом массиве 95 значений 1 и 0 вот каким образом их поледовательно загнать в пин в течении 10 милисикунд.

Блин я ну очень начинающий))) может еще месяца 2 кнопки поопрашивать да светиком помигать.

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

Изменено пользователем Viktor26

Не знаеш как? Спроси у Google'а !!!

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

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Не Нужно их загонять по времени. Ты их просто загоняешь. А потом, выводишь ноль на 4 ногу НС138.

Строка загорается. Ждешь 10мС.

Затем выводишь 1 на 4 ногу НС138 и строка гаснет.

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

Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

и пока она не горит нужно загнать новую строку в 595е, а на это нужно время, правильно?

Изменено пользователем Viktor26

Не знаеш как? Спроси у Google'а !!!

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

Я не пишу на СИ. Но по моей ссылке есть исходник. В нем в файле 1.С есть подпрограмма

Вывод символов -- void vivod(void) В ней все написано. Только там длина строки 40.

for(i = 0; i < 40; i++)

{

if((l & Bit(0)) != 0)

{

PORTB.7 = 1;

}

else

{

PORTB.7 = 0;

};

Меняй по твою длину 95 и твой порт вывода.

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

ща будет эксперимент на часика полтора-два и потом отпишусь, а если что получится видюху скину)) впринципе начинаю въезжать

Не знаеш как? Спроси у Google'а !!!

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

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

Сбрасывать регистры не обязательно. Старые данные будут вытесняться по мере заполнения новыми. Надо только заводить полную длину строки и все выходы обновятся. А вот если выводы OE не подключены к общему (на 595-х), то можно и ими гасить светики (или использовать для регулировки яркости ШИМ), хоть совместно со 138, хоть раздельно.

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

очень сильно переоценил свои возможности) за 2 часа не управлюсь

вывод OE на землю у всех посажен.

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


maciv[5]{1,0,1,1,0};
l++;
if(maciv[l] == 0)
{
bla-bla
}
else
{
bla-bla
}


я сам не пробывал но будет работать так или нет???

Изменено пользователем Viktor26

Не знаеш как? Спроси у Google'а !!!

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

и пока она не горит нужно загнать новую строку в 595е, а на это нужно время, правильно?
Да сколько там времени надо то? Сравни: тактовая частота Атмеги, граничные 138 и 595 и всего 95 тактовых импульсов, чтобы вывести строку. Изменено пользователем DoG70

Переубедить Вас мне не удастся, поэтому сразу перейдем к оскорблениям.

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

if(maciv[l] == 0)

Тут ты берешь байт и его сравниваешь. А тебе нужно проверьть все биты этого байта

и соответственно их вывести на 595. Не могу сказать как это на СИ, я сдвигаю байт

с переносом и проверяю бит С в регистре статуса. Соответственно его состоянию

вывожу в порт.

Вопрос. Какие ноги НС595 у тебя выведены на разъем?

Изменено пользователем croc19
Ссылка на комментарий
Поделиться на другие сайты

...всего 95 тактовых импульсов, чтобы вывести строку.

Скажем точнее 95 циклов, но не тактов.С другой стороны, я заполняю 32 шт 595-х за 5mS (прим.), при тактовой Меги 8МГц.

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

Геннадий, я имел ввиду тактовые импульсы, подаваемые на регистры. А там как раз получается один импульс - одна точка в строке. Запись происходит по фронту импульса. А вообще, я просто хотел сказать, что времени на это нужно очень мало.

Переубедить Вас мне не удастся, поэтому сразу перейдем к оскорблениям.

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

Тут ты берешь байт и его сравниваешь. А тебе нужно проверьть все биты этого байта

и соответственно их вывести на 595.

я так понимаю чтобы проверить бит в байте нужно сделать по аналогии проверки PIN в PORTe. или это разные вещи???

Не знаеш как? Спроси у Google'а !!!

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

...я имел ввиду тактовые импульсы, подаваемые на регистры.

На регистрах да. Но для вывода на регистры нужно хотя бы

- прочитать байт,

- 8 раз его сдвинуть с переносом,

- 8 раз проверить наличие переноса и принять решение, что выводить 0 или 1,

- сформировать 8 стробов (по одному на каждый бит),

- выполнить эти 3 пункта 12 раз.

Получается не так уж и мало, но в 10мС вписаться можно.

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



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

Не знаеш как? Спроси у Google'а !!!

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

Для начала создай 8 массивов по 12 байт в каждом.

Соответственно берешь в цикле по очереди 12 байт 1 массива и выводишь .

Зажигаешь первую строку.

Затем берешь 12 байт 2 массива, загоняешь, пока горит первая строка

и зажигаешь 2 строку. и т.д.

Когда в голове отложится, перепишешь на 2-ух мерный массив.

Изменено пользователем croc19
Ссылка на комментарий
Поделиться на другие сайты

массив создать это одно, но мне же надо не байт проверять а каждый бит в байте и вот я так понимаю его каким то образом нужно разложить (байт) и прыгать по битам проверяя их,вот это для меня ядерная физика в современном балете)))

Не знаеш как? Спроси у Google'а !!!

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

- 8 раз его сдвинуть с переносом,

- 8 раз проверить наличие переноса и принять решение, что выводить 0 или 1,

Вот так. Но как это реализовать, спроси у наших гуру по Си.

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

Интересно получается. Я ноль в СИ, ты как я понял, тоже не намго дальше меня в СИ.

Попробуем побыдлокодить. Повторю кусочек кода с коментариями.

Объяви 2 переменные i и c.

Записываешь в переменную с первый байт

дальше идет цикл

for(i=0;i<8;i++) // ---------- запускаешь цикл на 8 кругов.

{

if(c & 0x80) // ---------- проверяешь старший бит в переменной с

вывести единицу; // Здесь записываешь 1 в бит порта который выводит данные на 595

else

вывести ноль; // Здесь записываешь 0 в бит порта который выводит данные на 595

c <<= 1; // Сдвигаешь биты переменной с влево один раз

Включаешь строб 595

выключаешь строб 595

}

Таким образом последовательно выводятся 8 бит байта в 595

Затем записывашь 2-ой байт в переменную с и повторяешь цикл на 8 кругов. и т.д.

Полезная закладочка.

Все, я спать. Мне днем проще общаться.

работа с портами.txt

Изменено пользователем croc19
Ссылка на комментарий
Поделиться на другие сайты

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

Изменено пользователем Viktor26

Не знаеш как? Спроси у Google'а !!!

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

вот это для меня ядерная физика в современном балете)))

Вот тут довольно понятно расписано как работать с битам. (Не реклама)

http://chipenable.ru...redeleniya.html

Проверка от старшего к младшему идет из-за того, что в сдвиговый регистр запись идет начиная со старшего бита, т.е 7-ой бит пишется первым,а 0-ой последним. Ну и соответсвенно также и для массива регистров.

Изменено пользователем Vitemk
Ссылка на комментарий
Поделиться на другие сайты

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

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

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

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

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

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

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

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