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

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


Viktor26

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

#define Bit(n)    _BV(n)
void data (unsigned char dat)
{
 for(unsigned char counter=0;counter<8;counter++)
 {
	    if((dat&Bit(counter))!=0)
	    {
				 тут устанавливаем пин в 1
	    }else
	    {
				 тут устанавливаем пин в 0
	    };
 };
};

в if else еще нужно добавить управление стробами для сдвигового.

- А совесть в курсе? - А совесть в доле! :-D

Эксперт — это человек, который совершил все возможные ошибки в некотором узком поле.

Все грамматические ошибки являются авторским стилем изложения материала.

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

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

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

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

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

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

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

Особенности хранения литиевых аккумуляторов и батареек

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

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

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

кстати в отладчике в watch все переменные принимают значения как надо, порты тоже дрыгаются как надо при проходе кода а в железе ппц

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

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

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

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

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

у меня еще лежат 5 матриц из отдельных светиков, вроде 16х8 каждая, не помню точно, вечером сфоткаю покажу)))post-166713-0-59100700-1422553517_thumb.jpgpost-166713-0-02535500-1422553530_thumb.jpg

Вот такие еще есть, 5 штук 7х16

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

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

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

unsigned char slovo[8]={0b11111111,//в массиве буква А
0b11111011,
0b11110101,
0b11101110,
0b11101110,
0b11100000,
0b11101110,
0b11101110,
};
unsigned char str=0;
unsigned char l=0;
unsigned char a=0;



void preset()
{
DDRC=0xFF;
DDRB=0xFF;
PORTC=0x00;
PORTB=0x00;

}
// 0й,1й,2й PORTC биты выбор строки, 3й бит разрешает работу hc138
// pb0-тактовый, pb1-данные, pb2-защелка,PORTB


void vivod (void)
{

for (char str=0;str<=8;str++)//str записываятся в порт С как указатель строки
// и в переменную l как указатель байта из массива
{
l=slovo[str];// здесь переменной l присваивается байт из массива

for (char i=0;i<=8;i++)// цикл проверки битов
{
if ((l & (1<<a))!=0)//проверка бита переменная а прибавляется ниже
{
PORTB |= (1<<PB1);// данные 1
}
else
{
PORTB &=~ (1<<PB1);//данные 0
}
PORTB |= (1<<PB0);// тактовый для 595 on
PORTB &=~ (1<<PB0);//тактовый для 595 оff
a++;//проверяемый бит
if (a>8)a=0;

}
PORTC = str;// включить строку
PORTB |= (1<<PB2);//включить строб
PORTB &=~ (1<<PB2);//выключть строб
PORTC = 0;//выключить строку

}

}

вот код про который я говорил,

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

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

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

PORTC = 0;//выключить строку

В этой строке ты устанавливаешь на входе НС138 адрес 0 (т.е. первую строку)

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

СМ. ДАТАШИТ.

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

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

Вот такое смещение получается, как я понял, из-за цикла проверки бита, его надо увеличить до количества столбцов))) ну а так я впринципе стал чуть ближе к истине)))post-166713-0-24616100-1422555302_thumb.jpg

блин с задержкой в 2 милисикунды ток потребления при 3х волтах 0.5 ампера :shok: а при задержке в 10 микросекунд свечение еле видно

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

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

У тебя получается сдвиг по линейке регистров. Ты же не затираешь регистр после записи 8 бит.

Соответственно инфа сдвигается дальше. Записывай сразу все столбцы. Все правильно.

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

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

Попробуй писать не в одной подпрограмме, а как положено. Разбей на подпрограммы.

Напиши сначала подпрограмму ввода строки в регистры 595. Потом подпрограмму переключения

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

не одной программой. Одна подпрограмма будет двигать влево. Другая вправо. Вверх, вниз

мигать и т.д.

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

Этот момент с линиями я переделалpost-166713-0-39463800-1422559029_thumb.jpg

видно не очень это потому что я напряжение подубавил а то БП кипит

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

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

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

for (char i=0;i<=8;i++)

Не силен в си, но здесь i<=8 или равно7 или 8 без меньше.

А вместо if (a>8)a=0; присваивать а ноль при входе в подпрограмму.

Меньше кода будет после компиляции.

for (char i=0;i<=8;i++) перепиши

for (char i=0;i=7;i++) А то ты 9 столбцов выводишь, вместо 8.

Вроде так. И лучше подпрограммами. Легче искать ошибки будет.

Вот програмка.

Запускаешь. Выбираешь справа СВОЙСТВА. Выставляешь 64 на 8. Больше она не позволяет.

Продолжение можешь на 2 странице сделать или нолями добить до 96.

Пишешь текст или картинку. Нажимаешь РЕДАКТОР -- ЭКСПОРТ ФАЙЛА.

Слева вверху тип выход. файла -- С\СИ++ совместимый.

ФОРМИРОВАНИЕ ФАЙЛА --- горизонтальное.

ПОРЯДОК БИТ ПИКСЕЛЕЙ -- первый снизу или справа.

Дальше ЭКСПОРТИРОВАТЬ.

Название вписываешь и СОХРАНИТЬ.

Открываешь файл любым редактором. Там твой массив.

BitEditor.rar

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

Viktor26, а не было мысли заменить 138-й на 595-й и добавить его в общую линейку. Добавить байт в выводимую цепочку и двигать по нему 0, тогда управление 138-м отпадает и линии порта освободятся. Останется только алгоритм работы с 595-ми.

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

Я я не думал но кажется стоит попробовать позже. Сначала этот вариант до конца добью. Должен же я хоть чему-то научится, а то так и буду от проэкта к проэкту прыгать, и нихрена нигде ничего не сделаю))))

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

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

в 1-ном байте 8 бит. 0 - это тоже бит. В цикле

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

нужно писать или ...<8 или <=7 иначе получите неопределенное состояние в переменной которую выводите.

- А совесть в курсе? - А совесть в доле! :-D

Эксперт — это человек, который совершил все возможные ошибки в некотором узком поле.

Все грамматические ошибки являются авторским стилем изложения материала.

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

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

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

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

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

Строка состоит из 96 бит.

В сроке двенадцать регистров 595. Они соединены последовательно.

Вы заталкиваете 8 раз по восемь бит первой сроки, заполняя её полностью.

Т.е. каждые новые 8 бит, продвигают старые дальше, по строке.

Включаете её на 2-10 мС через 138. Дольше не надо. Этого достаточно, чтоб первая строка

вспыхнула.

Затем её гасите.

Затем загоняете в регистры вторую строку . 8 раз по 8 бит --- 96 бит.

Включаете 2 строку.

И так все 8 строк.

Затем все заново.

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

это я понимаю, чтоб вывелась одна буква я использовал отдельно цикл 87 раз чтоб забить строку пустышками а остальные 8 раз я выводил байт, а теперь мне в переменную нужно загнать например 6 байт сразу чтоб вывести слово, или также поочереди подставлять по одному байту и проверять их?

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

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

Можно в однну переменную Загнать 12 байт и двигать 96 бит переменной в строку.

А можно 12 раз по байту загонять.

В первой строке будут верхушки всего текста.

Во второй строке следующие верхушки ВСЕГО текста.

И так до низа всего текста. Дерзай. Хочешь цикл на 96 бит сразу.

Хочешь 12 раз по 8 бит. Как удобнее

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

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

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

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

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

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

Поэтому писал про подпрограммы.

Сбрасывал тебе программу. В ней пишешь текст.

Получаешь массив из 64 байт

Делаешь из него массив 8 строк по 8 байт.

Но тебе нужно для строки 96 бит. Добиваешь каждую строку из 8 байт, еще 4-мя нолевыми

байтами, до 12 байт.

Получаешь массив из 8 строк по 12 байт == 96 бит.

И выводишь их по очереди на панель, меняя адреса в НС138.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Сообщения

    • Ага.... пару раз с проц. LG и Funai так делал. На какое то время спасает.... Если поможет, то уже 100% даная имс. Лучше, конечно, феном греть....
    • Дополню - в ремонте аналогичный утюг, подключил pickit, PIC16F18855 читается и пишется, в процессе проверки выявлено что, через короткое время (не более часа) на обоих платах PIC теряет память, т.е. читая позже память контроллера пустая.
    • @VIT13 усилители ещё и "свистеть" умеют.
    • Спасибо за наводку на AIFEN!  Взял себе на озоне A5 pro ( там она оказалась гораздо дешевле чем на али https://www.ozon.ru/product/sugon-payalnaya-stantsiya-120-vt-nihromovyy-nagrevatel-1257369280/ ) Единственное - лажанулся с выбором ручки, но она довольно прикольно паяет мелочевку. Ручку по больше и жала так же можно взять отдельно. Ну и мне все таки он показался по интересней Fnirsi ( хотя этот можно таскать с собой в рюбзаке, что довольно удобно) Под катом - габариты.  
    • На этом Иппоне я проводил разные тесты на даче, цеплял два автоаккума по 60А\ч. Оказалось, что можно накачать тонну воды глубинным насосом со скважины 35метров. Ну подогреть чай кипятильником 500Вт тоже можно. С дополнительной подзарядкой от солнечных батарей\контроллера уже можно как-то жить, во всяком случае освещение есть постоянно. Хотя для полного фен-шуя нужно и батарей больше, и аккумов, и более мощный преобразователь в 220В. И стараться использовать топливные печки\нагреватели там, где это возможно, например, хорошо показали себя туристические газовые плитки, ну а если к ним подсоединить баллон литров на 10-20, то вообще хорошо. Хотя, конечно, опасное это дело газ...
    • Актуальная потребность) Тоже развлекался подобным способом, только с немного другим ибп. Хотел перевести его на железофосфат, но он до конца не заряжал батарею. Блок зарядки у него не калибровался, и по моему с микроконтроллером. В итоге оставил свинец. Когда то он тянул серверную на 4х батарейках по 200а/ч. Серверную он вытянул за ночь, а вот из за отсутствия охлаждегия все пошло в разнос. В итоге все закончилось полной заменой силовой комплектухи и устранением лишних отверстий в плате. Но картошку хватило сварить и даже немного поработать, зимой на железофосфате 4 часа отапливал тепловентилятором балкон)). Дешевле чем из розетки днем)) А для ленивых( ну или если в лом или нет достойного донора) можно взять инвертор от SVC он довольно не дорогой и мощный, при этом может работать с авто батарейками, зарядный ток до 10А. Я на нем гоняю насосы котла и кондиционер в шкафу, иногда еще станок.  
    • @Александр2, это у тебя в голове что-то с чем-то вступает в противоречие.  Я знаю, что ты ярый поклонник Ланзара. Поэтому пояснение для тебя того, почему симметричная на бумаге/на экране монитора схема, и спаянная на реальной плате с реальными комплектующими в отличии от неё за редким исключением вместо 0 на выходе зачастую имеет сдвиг напряжения величиной в +/- километр, думается мне излишняя трата времени.    
×
×
  • Создать...