Страница 3 из 4
Re: управление семисегментными индикаторами
Добавлено: Вс ноя 28, 2010 15:19:36
Серёга_
Речь пока идёт об управлении одним разрядом
Re: управление семисегментными индикаторами
Добавлено: Вс ноя 28, 2010 15:28:16
Серёга_
можно абстрагироваться и представить что имеется не четырёхразрядный, а одноразрядный семисегментный индикатор. Так вот, пробовал я мигать точкой, а потом одной из планок индикатора, результат один и тот же, когда мигающий элемент (точка или планка) горит, отображаемой число светится тускло, а когда не горит - ярко. Вот. Мне кажется что связано это с подключением нового резистора и уменьшением общего тока протекающего черег индикатор, но как это решить...
Re: управление семисегментными индикаторами
Добавлено: Вс ноя 28, 2010 15:35:59
uldemir
лучше не абстрагироваться, а локализовать проблему. проверить в статике работу. попробовать зажигать в другом или других разрядах. я бы например, закоментировал строчку, где вы гасите запятую и посмотрел как картинка изменится. и повторю, проблема может оказаться и аппаратной. Сегодня я тоже боролся со своим индикатором - оказалось в одном месте не дотравилось до конца и база транзистрора оказалась на массе.
Re: управление семисегментными индикаторами
Добавлено: Вс ноя 28, 2010 16:29:30
Серёга_
Если точку не гасить (закомментировать строчку), то точка отображается во всех разрядах, всё отображается нормально. В статике нет ведь ничего не мигает, и поэтому разницу в яркости разобрать трудно.
Re: управление семисегментными индикаторами
Добавлено: Вс ноя 28, 2010 16:53:02
uldemir
а если в одном разряде переключать 1 и 8? и вообще, сделали бы включение точки вместе с остальными сегментами. Что вам мешает передавать в функцию set_segment еще один параметр и во всех разрядах передавайте 0, а в 3-ем значение SetDot. Ну и конечно, неплохо покурить даташиты на максимально допустимые токи через порты и через выводы питания.
Re: управление семисегментными индикаторами
Добавлено: Вс ноя 28, 2010 17:26:44
Серёга_
Полистал даташит. цитата:"DC Current per I/O Pin .... 40.0 mA". Вот, а если посмотреть схему, то, без учёта сопротивления индикатора, ток получается равным 5/(530+530)= 4.7мА, если правильно посчитал.
Re: управление семисегментными индикаторами
Добавлено: Вс ноя 28, 2010 17:30:44
uldemir
R1 засуньте... ой выбросите
Re: управление семисегментными индикаторами
Добавлено: Вс ноя 28, 2010 18:03:19
Серёга_
Попробую
Re: управление семисегментными индикаторами
Добавлено: Пн ноя 29, 2010 13:00:08
diim
Приветствую всех! прочитал здесь про вывод точки на семисегментник хочу поделиться как сделал я, сразу извенюсь т.к. не силён в программировании.
так вот:
перебор разрядов происходит по прерыванию от таймера
Код: Выделить всё
[b]
#define secON 1
#define secOFF 0
int DP1,DP2,DP3,DP4;
int digits [21] ={0x3F, 0x6, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x7, 0x7F, 0x6F, 0xBF, 0x86, 0xDB, 0xCF, 0xE6, 0xED, 0xFD, 0x87, 0xFF, 0xEF, 0x00 };//0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0. 1. 2. 3. 4. 5. 6. 7. 8. 9.
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{ //прерывание происходит 31250 раз(8000000/256==31250 раз в сек)
if(sec==secON){se++;if(se==15625){se=0;DP2=!DP2;};};//секундная точка
// ad++;
//if(ad==x){PORTB^=(1<<BEEP); ad=0;};
a++;
if(a==111) { // при а==111 каждый разряд будет моргать с частотой ~ 70.38 Гц
a=0;//сброс счётчика
b++;//перебираем разряды
if(b==5){b=1;};
switch(b){case 1: if(DP4==1){PORTD=digits [four+10]; }else PORTD=digits [four];
PORTC.2=0; PORTC.3=1; PORTC.4=1; PORTC.5=1; break;
case 2: if(DP3==1){PORTD=digits [tree+10]; }else PORTD=digits [tree];
PORTC.2=1; PORTC.3=0; PORTC.4=1; PORTC.5=1; break;
case 3: if(DP2==1){PORTD=digits [two+10]; }else PORTD=digits [two];
PORTC.2=1; PORTC.3=1; PORTC.4=0; PORTC.5=1; break;
case 4: if(DP1==1){PORTD=digits [one+10]; }else PORTD=digits [one];
PORTC.2=1; PORTC.3=1; PORTC.4=1; PORTC.5=0; break;
};
}}
[/b]
т.е. присвоение в программе переменным DP1,DP2,DP3,DP4 лог 1 или 0 мы сможем зажигать любую точку на какое захотим время или перебирая их сделать бегущую точку.
Re: управление семисегментными индикаторами
Добавлено: Пн ноя 29, 2010 16:49:07
Серёга_
Спасибо большое Uldemir'у! Выпаял резистор R1 и теперь индикатор, во-первых, светиться стал ярче, а во-вторых исчезли мерцания. Почему светиться стал ярче - это понятно: сопротивление уменьшилось и, как следствие, увеличился ток, а вот почему мерцания пропали - до сих пор остаётся загадкой:) Может быть из-за яркого свечения незначительные перепады просто не заметны...
Re: управление семисегментными индикаторами
Добавлено: Пн ноя 29, 2010 16:56:31
uldemir
Госпадя! быстро идти изучать закон ома! Вот потому я и говорю, что надо предоставлять максимально информацию к описанию проблемы. Да никому, в здравом уме, не пришло бы в голову на общий вывод поставить резистор. Именно из-за того, что в таком случае ток через сегмент сильно зависит от того включены другие или нет. Потому и ставят 8 резисторов на каждый сегмент, а не один общий на все.
А телепатический модуль все-же был прав: проблема та - аппаратная!

Re: управление семисегментными индикаторами
Добавлено: Вт дек 07, 2010 12:38:07
Пряник_174
Soir писал(а):dj-alik писал(а):хочу спросить у умных котиков,посоветуйте как можно и на чём,может кто схемку подкинет пожалуйста,у меня есть семисегментный индикатор,нужна схема которая при нажатии на нефиксирующий контакт даст на индикаторе надпись,ON при повторном нажатии даст надпись OFF,фотки индикатора прилагаю снизу
Индикаторы для динамической индикации, тут уж действительно надо целую схему городить, или МК. Вы что предпочитаете?
Jack_A писал(а):Тут, пожапуй, сам старик Хотябыч отступился бы : на 7-сегментном индикаторе изобразить 'N' .
В таких случаях изображают On.
А почему бы не использовать 16 сегментные индикаторы, думаю намного проще будет?!))
Re: управление семисегментными индикаторами
Добавлено: Вт дек 07, 2010 13:05:27
Jack_A
Пряник_174 писал(а):
А почему бы не использовать 16 сегментные индикаторы, думаю намного проще будет?!))
Если нужно выводить много текста - таки да. Но дороже.
Re: управление семисегментными индикаторами
Добавлено: Вт дек 07, 2010 13:17:28
Пряник_174
Jack_A писал(а):Пряник_174 писал(а):
А почему бы не использовать 16 сегментные индикаторы, думаю намного проще будет?!))
Если нужно выводить много текста - таки да. Но дороже.
на мой взгляд если "много текста" то тогда ЖКИ, а 16 сегментники стоят в районе 100 +/- 20 рублей за единицу
Re: управление семисегментными индикаторами
Добавлено: Ср дек 08, 2010 12:10:30
Jack_A
Пряник_174 писал(а):
на мой взгляд если "много текста" то тогда ЖКИ, а 16 сегментники стоят в районе 100 +/- 20 рублей за единицу
Дык кто спорит? а 7-сегментники раз в 5 дешевше. Так что для 16-сег. вроде и своей ниши не остается

Да и не нашел я их в LED исполнениии. Может, они только как ВЛИ или газоразрядные бывают?
Re: управление семисегментными индикаторами
Добавлено: Ср дек 08, 2010 12:49:26
Пряник_174
FYD-5622FS-21
сдвоенный семисегментник стоит 25 рублей, так то это дешево, норма индикатор, а одинарный 16 сегментник стоит в том же магазе 40 рублей, так что я не понимаю ващу логику?))))
Re: управление семисегментными индикаторами
Добавлено: Пн дек 13, 2010 18:38:38
sezador
gregor писал(а):Жестковат ток, светодиоды при таком токе эмиссию значительно быстрей потеряют...
Импульсы сольного тока - характерная особенность т.н. "динамической" индикации. Одно время серьезно исследовал вопрос долговечности светодиодов. Фирмы-производители нечасто раскрывают такую информацию, но вот как-то удалось найти данные от
Hewlett Packard. Так вот оказалось, что ресурс светодиодов увеличивается на порядок, а то и на два при переходе от динамической индикации к статической! Вот пример построения статического светодиодного цифрового семисегментного индикатора практически любой разрядности:
Статический светодиодный цифровой индикатор, управляемый по SPI
Информация на отображение спокойно загружается по двум проводам и в нужный момент просто "защелкивается" специальным импульсом. Можно ШИМ-ом организовать регулировку яркости, причем без мерцаний от нулевых биений как при динамической индикации. Индикатор не создает радиопомех, можно каскадно включить несколько таких индикаторов без увеличения количества управляющих сигналов, можно расположить индикатор на удалении от схемы управления, и т.д. и т.п.
Re: управление семисегментными индикаторами
Добавлено: Пт дек 24, 2010 18:16:48
Серёга_
Скажите, можно ли выводить информацию на 4-х разрядный семисегментный ЖКИ, тактируя контроллер от кварца на 32768Гц? Нашёл в интернете информацию, что минимальная частота обновления разряда - 100Гц, по моим подсчётам, частоты часового кварца должны быть достаточно, но практике получается что дисплей мерцает (причём так мерцает, что аж глаза болят, даже от краткосрочного наблюдения). Код обновления дисплея:
//инициализируем таймер
TIMSK = (1<<TOIE0); //разрешение прерывания по переполнению
TCCR0 = (0<<CS02)|(0<<CS01)|(1<<CS00); // предделитель счетчика 1
TCNT0 = 254; // = 10M*2/1024
SREG |=0x80; // общее разрешение прерываний
ISR(TIMER0_OVF_vect)//Обработка прерывания по переполнения таймера Т0 (обновляем дисплей)
{
clearDisplay(); //стираем всю информацию
PORTC&=~(1<<DISP_OUT3); //сбрасываем точку (точка включается только в третьем разряде, как в часах)
i++;
if(i>4)
i=1;
if(i==1){
set_segment(firstnum); //устанавливаем первый разряд ЖКИ
}
if(i==2){
set_segment(secondnum); //устанавливаем второй разряд ЖКИ
}
if(i==3){
set_segment(thirdnum); //устанавливаем третий разряд ЖКИ
if(setDot) { // данная переменная используется для мигания точкой
PORTC|=(1<<DISP_OUT3); // включаем точку
}
}
if(i==4){
set_segment(fourthnum); //устанавливаем четвёртый разряд ЖКИ
}
setDisplay(i); //выводим информацию на экран
TCNT0 = 254; // = 10M*2/1024
}
Re: управление семисегментными индикаторами
Добавлено: Вс дек 26, 2010 17:09:59
pyzhman
Частота обновления при динамической индикации должна быть не менее 50 Гц. Не реже. В вашем случае каждый разряд должен обновляться не позднее чем через 5 мсек (20мсек/4). Настройте прерывания для обработки индикации на это время. Вашу программу не тестировал, но! В конце стоит TCNT0= 254. Стало быть по выходу из ISR управление передастся сразу опять обработчику прерывания, а там во первых строках - стирание дисплея. Индикатор чаще не показывает, чем показывает. Еще бы не болеть глазам!!!
Re: управление семисегментными индикаторами
Добавлено: Вс дек 26, 2010 17:21:08
uldemir
в первый раз не въехал... павтарите истчо рас - что за жки и как включен. простой жки не работает в динамике как светодиодные индикаторы. для динамики (вообще-то для жки используется термин мультиплексирование) в жки надо управлять уровнями напряжения.