Вот одним управлять научился, а вот как двумя? Знаю что надо поочереди транзисторы включать, интересует именно сама программа. С какой скоростью и т.д. Спасибо
честно сказать не знаю точно но рассуждал бы так. нормальная смена кадров в телевизоре 50раз в сек, в принципе можно эту скорость опустить до 15-20 раз в сек - это как сильно сжатый видеоролик. Ну и продолжительность свечения по отношению к погашенному режиму (точнее скважность) будет напрямую задавать яркость свечения.
Например зажигая 50раз в сек (50гц -> раз в 20мс) и длительность свечения в 10мс , получим очень плавную смену индикации с 50% яркостью
Для управления двумя семисегментными индикаторами необходимо подключить катоды через резисторы 330 Ом на пины порта B0-B6 а базы транзисторов на D0 и D1 соответственно. А дальше пишем прогу... В общем я надрываться не буду, если еше интересует подробный ответ скажи....
я как раз этим занимаюсь, только у меня их четыре, пришли мне на мыло свою схему я подпрограмму индикации накатаю, только нужно знать что еще программа делает. Если схемы нет могу предложить свою. Вообщем на форуме бываю редко пиши на мыло. v_gavenko@mail.ru
Итак, имеем микруху, кварц. На порт В вешаем катодами вперед два индикатора с общим анодом. Катоды соединяем с портом через резисторы 330 Ом следующим образом В0-a, В1-b,B2-c,B3-d,B4-e,B5-f,B6-g. Так получится что одинаковые сегменты разных индикаторов закорочены, но управлять будем динамически транзисторами. На D0 и D1 вешаем базы транзисторов (у меня КТ503Е) через резисторы 1.2 кОм. Коллектор на +5В, емитер на анод индикатора. Причем D0 - первый, а D1 - второй. Даем питание и сброс, вот собственно и вся схема. Током коллектора - эмитера будет ограничивать резистор 330 Ом и сегмент индикатора. На счет программы распространятся не буду, скажу только что таймер через каждые 5 мс выдает добро на прерывание которое в свою очередь считает секунды и выдает их на индикаторы. Программу подаю без комментариев, 100% работает как на софте так и на плате. Советую лишь разобраться с командами и прошивкой Епромки. Программу писал в AVRStudio4.0 прошивал SP12slavomir... При перекомпиляции нужно позаботиться о наличии файла 2313def.inc А начертание цифир можно посмотреть из ЕЕпрома. В общем удачи, будут проблемы обращайся. :lol:
; ************** векторы прерываний *********** rjmp RESET ;Reset Handle reti ;irq0 reti ;irq1 reti ;timer1 reti ;timer1 comA reti ;timer1 over rjmp OVER0 ;timer0 over reti ;spi reti ;uart reti ;uart reti ;uart reti ;anacomp
Расскажите ламеру что означает запись 1<<что-то (SE,CS02)
eseg .org 0 table1: .db 0x40, 0x79, 0x24, 0x30, 0x19, 0x12, 0x02, 0x78, 0x00, 0x10, 0xFF ;dig 0 1 2 3 4 5 6 7 8 9 это я так понимаю значения порта при посылке цифирок(чтобы каждый раз не писать ldi регистр,значение) А можно не много поподробней о выводе. Текстом рассказать что как, а то для меня пока тяжко.
А теперь про табличку. Это таблица перекодировки из десятичного в семисегментный код, то есть когда тебе нужно зажечь на индикаторе "3", то ты берёшь по смещению +3 берёшь байт (а именно "0x30") и суёшь его в порт на вывод. И так работаешь с каждой цифрой.
По поводу кода к семисегментным индикаторам --а- f| |b надеюсь понятно что это семисегминтный индикатор -g-- что бы зажечь сегмент нужно в порт выдать 0 e| |c получается что для "3" будет код b00100100 или 0x24 --d- в общем то и все....