Индикация LED через сдвиговые регистры

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Аватара пользователя
slesar
Открыл глаза
Сообщения: 71
Зарегистрирован: Пн июн 11, 2007 14:16:06
Откуда: Таганрог

Индикация LED через сдвиговые регистры

Сообщение slesar »

Интересует информация о принципе работы микросхем логики для 7-сегментных индикаторов, что как, примерчик исполнения. Т.е. как по 2-3 проводам с контроллера упавлять цифрой. Также совет-наставление какую микросхемку применить.
Последний раз редактировалось slesar Пн мар 29, 2010 12:38:11, всего редактировалось 1 раз.
Канифоли много не бывает!
Arlleex
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

Re: Снова индикация

Сообщение Arlleex »

применить можно регистры сдвига и управлять по 3 проводам.
Зайди на сайт ДиХалт-а, там есть статейка, как подключить индикаторы по 1 проводу.
Не умеешь - не берись, но не взявшись не научишься...
Аватара пользователя
MTF
Нашел транзистор. Понюхал.
Сообщения: 179
Зарегистрирован: Чт янв 07, 2010 11:25:12
Откуда: Москва

Re: Снова индикация

Сообщение MTF »

Есть такая микруха 74LS164 для управления 7 сегментного индикатора по 2 проводам !!!!!!
neon-f
Потрогал лапой паяльник
Сообщения: 392
Зарегистрирован: Сб дек 12, 2009 02:15:45

Re: Снова индикация

Сообщение neon-f »

сто раз писано и разжевано, но все же.

само удобно выводить с помощью 74нс595 или 4094 регистров. я бы рекомендовал STPIC6C595MTR, это 595 регистр с мощным высоковольтным выходом, стоит всего 0,7уе, и можно прямо к нему цеплять индикаторы любого типа, без всяких транзисторных ключей. Одним словом красота, контроллер-STPIC6C595MTR-индикатор.
kalobyte
Друг Кота
Сообщения: 13796
Зарегистрирован: Чт сен 20, 2007 14:08:00

Re: Снова индикация

Сообщение kalobyte »

тематические ответы только в форуме, в приват не пишите
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Re: Снова индикация

Сообщение GP1 »

Отмечусь в теме и я.
Вопрос какой максимальный ток через выводы Vcc/GND для 74hc595? Отвечаю - +-70мА, или 10мА/сегмент это максимум при статике, при динамической индикации - соответсвенно
А теперь смотрим 74ALS164 Io (т.е. через вывод GND) - -112мА что на 60% больше.
Отсюда вывод: для индикаторов с ОА 74ALS164 предподчительнее.
Чем дальше, тем больше становлюсь занудой...
Изображение
Аватара пользователя
Aheir
Модератор
Сообщения: 4517
Зарегистрирован: Пн апр 03, 2006 11:43:25
Откуда: Санкт - Петербург
Контактная информация:

Re: Снова индикация

Сообщение Aheir »

Автору - переименовать тему, срок - сутки.
Оптимизм х (Опыт + Знания) = const
pcb432
Мудрый кот
Сообщения: 1808
Зарегистрирован: Пт мар 26, 2010 17:16:52
Откуда: Kazan

Re: Индикация LED через сдвиговые регистры

Сообщение pcb432 »

Почему-то радио любители практически не используют (встречал несколько попыток) м/с драйверы 7-сегментных LED индикаторов (самых разных цветов и разрядов), применяемых в DVD плеерах, видеомагнитофонах и другой аппаратуре. Умногих DVD плеера валяются неисправные из-за нецелесообразности ремонта и их отдают на запчасти даром или по символической цене.
Эти драйвера насколько я понял несколько упрощённые и значительно более дешёвые аналоги MAX7219, MAX7221. Например AP6928, AS1628B,CS1664EQ,PT6961,PT6964 и т.п..
Управляются они по SPI интерфейсу. Это всего 3 провода и широкие возможности вывода цифровой и некоторой текстовой информации в разнообразных режимах, регулировка яркости.
Допускается каскадное (также как и при использовании регистров 74HC595) соединение драйверов для увеличения разрядности индикаторов. Можно подключить и клавиатуру с достаточным колличеством кнопок.
На плате с индикатором уже припаяна мс драйвера, кнопки и фотоприемник, распаян разъём или кабель да ещё с маркировкой контактов. Т.е. это готовая к применению конструкция и не надо тратить время на изготовление платы для отладки и проверки своих программ.
Есть и вакумно-люминисцентные индикаторы разных размеров с большим колличеством сегментов и самых разных цветов.
В этом случае микроконтроллер освобождается от рутиной и занимающей довольно много памяти функции вывода информации.
Вложения
indikator.JPG
Небольшая кучка.
(184.62 КБ) 2284 скачивания
MisterDi
Встал на лапы
Сообщения: 85
Зарегистрирован: Сб мар 13, 2010 13:52:10

Re: Индикация LED через сдвиговые регистры

Сообщение MisterDi »

Вариант интересен только в случае, когда есть стабильный источник требуемых ИС. Изучать каждый раз по-новой систему комманд контроллера и протокол работы - не у всех и не всегда есть возможность.
misterdi<@>i.ua
pcb432
Мудрый кот
Сообщения: 1808
Зарегистрирован: Пт мар 26, 2010 17:16:52
Откуда: Kazan

Re: Индикация LED через сдвиговые регистры

Сообщение pcb432 »

В том то и дело, что благодаря нашим братьям теперь не меньшим, источник практически не ограничен. В разных изделиях используются практически однотипные драйвера с однотипной системой команд + яркие бесплатные индикаторы в комплекте.
В ремонтных мастерских этих плат скапливается уже в достаточном колличестве и всё это идёт на выброс.
Аватара пользователя
andrewtitoff
Первый раз сказал Мяу!
Сообщения: 36
Зарегистрирован: Вс май 02, 2010 19:44:22
Откуда: Санкт-Петербург
Контактная информация:

Re: Индикация LED через сдвиговые регистры

Сообщение andrewtitoff »

2 pcb432
Угу, только не всегда они подписаны, а даташит например на AP6928 ненайти... =(((
С уважением, А.С. Титов
Бесплатный вывоз и утилизация компьютерной техники.
т. 716-90-60 http://recycling.spb.ru/
Аватара пользователя
andrewtitoff
Первый раз сказал Мяу!
Сообщения: 36
Зарегистрирован: Вс май 02, 2010 19:44:22
Откуда: Санкт-Петербург
Контактная информация:

Re: Индикация LED через сдвиговые регистры

Сообщение andrewtitoff »

Млин, чегото никак не могу разобраться как подключить AP6928 к LPT... =(((
Прочитал статейку http://kazus.ru/articles/345.html , посмотрел схему DVD от которого эта плата(схему прилагаю), но ничего не получается..., сравнив схемы я так понял что вся обвязка на плате уже есть, соединил DI/O, CS, CLC с LPT, 5в взял от USB, землю на всякий случай соединил LPT и USB ну и естенственно с платой, в итоге напряжения приходят, т.к. подключал паралельно LPT-тестеру - видно что что то ппосылается, покрайне мере при отправке светодиод на тестере один раз мигает, но дисплей молчит... =((((
Вложения
AP6928 копия.jpg
(167.62 КБ) 1817 скачиваний
С уважением, А.С. Титов
Бесплатный вывоз и утилизация компьютерной техники.
т. 716-90-60 http://recycling.spb.ru/
pcb432
Мудрый кот
Сообщения: 1808
Зарегистрирован: Пт мар 26, 2010 17:16:52
Откуда: Kazan

Re: Индикация LED через сдвиговые регистры

Сообщение pcb432 »

В статье описаны драйверы LED фирмы MAXIM. У них в отличии от драйвера типа AP6928, TM1628 и т.п. команды разные и отправляются начиная со старшего бита. Более точная информация в даташитах.
Johnson
Встал на лапы
Сообщения: 93
Зарегистрирован: Чт мар 05, 2009 08:15:25
Контактная информация:

Re: Индикация LED через сдвиговые регистры

Сообщение Johnson »

Что-ж, отмечусь и я...

Последнее время производим 7-сегментные инликаторы на регистре TPIC6B595, стоимость микросхемы 19руб, ток выхода более 500мА.

Пример схемы сегмента: Изображение

Произведено более 1000 экземпляров, нареканий пока не было.

Распиновка разъема:
1 - Сигнал PWM (управлению яркостью). Не стоит забывать, что при единице выходы переходят в высокоимпедансное состояние.
2 - Вход данных (DATA) (Либо выход на втором разъеме).
6 - Вход стробирования (CLK).
10 - Вход защелки (Latch, #LE).
3,5,7,9 - Общий.

В целом протокол представляет из себя однонаправленную шину SPI, следовательно, можно использовать аппаратный SPI контроллера.

Из меги (IDE - CodeVisionAVR) управляется так:

Код: Выделить всё

unsigned char dig_font[16] = {
    0b11111100, // 0
    0b01100000, // 1
    0b11011010, // 2
    0b11110010, // 3
    0b01100110, // 4
    0b10110110, // 5     
    0b10111110, // 6
    0b11100000, // 7
    0b11111110, // 8
    0b11110110, // 9
    0b00000010, // Minus (10)
    0b00000001, // Pset (11)
    0b00000000, // None (12)
    0b10011110, // E (13)
    0b00001010, // r (14)
    0b00010000, // _ (downshift) (15)
};

// Font defines
#define FONT_MINUS 10
#define FONT_PSET 11
#define FONT_NONE 12
#define FONT_E 13
#define FONT_r 14
#define DONT_DOWNSHIFT 15
//LED display
#define HC595_PORT      PORTD
#define HC595_DATA_PIN  7
#define HC595_SCK_PIN   6
#define HC595_RCK_PIN   5
#define HC595_PWM_PIN   4

unsigned char led_bufer[LED_BUFFER_LEN];
unsigned char led_last_position = 0;

void clearBuffer(){
    unsigned char i;
    for(i=0;i<LED_BUFFER_LEN;i++){
        led_bufer[i] = 0x00;
    }
}

void HC595_shiftDigits(unsigned char length){
    unsigned char i;
    // Поиграем клоками, чтобы сдвинуть данные. В освободившемся месте - 0x00.
    BIT_CLR(HC595_PORT,HC595_DATA_PIN);
    #asm("nop");
    for (i=0;i==length*8-1;i++){
        BIT_CLR(HC595_PORT,HC595_SCK_PIN);
        #asm("nop");
        BIT_SET(HC595_PORT,HC595_SCK_PIN);
        #asm("nop");
    }
}

void HC595_putBuffer(){
    unsigned char x,i;
    // Выводим очередной буффер.
    for(i=0;i<LED_BUFFER_LEN;i++){
        x=1;
        while (x){
            BIT_CLR(HC595_PORT,HC595_DATA_PIN);
            #asm("nop");
            if(led_bufer[i]&x)
                BIT_SET(HC595_PORT,HC595_DATA_PIN);
                                               
            #asm("nop");
            BIT_CLR(HC595_PORT,HC595_SCK_PIN);
            #asm("nop");
            BIT_SET(HC595_PORT,HC595_SCK_PIN);
            #asm("nop");
            x<<=1;
        }
        led_last_position++;
    }
}

void HC595_Latch(){
    BIT_CLR(HC595_PORT,HC595_RCK_PIN);
    #asm("nop");
    BIT_SET(HC595_PORT,HC595_RCK_PIN);
    #asm("nop");
    led_last_position = 0;
}

void putDigitIntoBuffer(unsigned char position,unsigned char number){
    led_bufer[position] = dig_font[number];
}
void putNumberIntoBuffer(unsigned char offset, signed int number, unsigned char length, unsigned char removeZeros){
    unsigned char pos=offset, dig, isMinus=number<0, isMinusShowed = 0;
    number = abs(number);
    while (pos<offset+length){
        dig = number%10;
        if((removeZeros>0)&(dig==0)&(number<10)){
            if((isMinus>0)&(isMinusShowed==0)){
                dig = FONT_MINUS;
                isMinusShowed = 1;
            }else{
                dig = FONT_NONE;
            }
        }
        number /= 10;   
        putDigitIntoBuffer(pos, dig);
        pos++;
    }
}


Исходники старые, код малость бредовый, зато суть показывает хорошо. Новых исходников не дам из-за NDA.
NOPы можно поудалять, без них нормально работает.

Резисторы R1..R3 имеет смысл ставить на каждую 4ю плату, начиная с первой. Нужны они для подавления помех, улавливаемых шлейфом.

Если нужна печатка в протеусе или готовый гербер на высоту цифры 150мм - могу предоставить при условии неразглашения и для некоммерческого использования - в аську 305224880, в рабочее время (в другое антиспам не пустит).

PS: Максимальная цепочка, которую испытывали - 48 цифр. Рядом с работающими силовыми установками в композитном корпусе проблем не было.
Последний раз редактировалось Johnson Пт май 17, 2013 10:24:53, всего редактировалось 3 раза.
akl
Друг Кота
Сообщения: 4444
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Re: Индикация LED через сдвиговые регистры

Сообщение akl »

Полярность светодиодов на схеме правильно показана?
Johnson писал(а):мега лучше коммутирует порты на общий провод, чем на плюсовой, ей так проще.
Выходной драйвер у AVR'ок уже давно симметричный. Не вводите в заблуждение.
Each output buffer has symmetrical drive characteristics with both high sink and source capability.
Johnson
Встал на лапы
Сообщения: 93
Зарегистрирован: Чт мар 05, 2009 08:15:25
Контактная информация:

Re: Индикация LED через сдвиговые регистры

Сообщение Johnson »

Полярность светодиодов на схеме правильно показана?


Да, конечно. По этой схеме налажено производство. Драйверы в TPIC коммутируют на общий (инвертированные).

Про симметричность меги не знал, спасибо, изучу.

Добавлено: Ой, схема не та... Разумеется, полярность неправильная.
Последний раз редактировалось Johnson Пт май 17, 2013 10:10:32, всего редактировалось 1 раз.
akl
Друг Кота
Сообщения: 4444
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Re: Индикация LED через сдвиговые регистры

Сообщение akl »

Johnson писал(а):Драйверы в TPIC коммутируют на общий (инвертированные).
Да, и подключают аноды к общему проводу, в то время как катоды подключены к +Vin. Не убедили.
Johnson
Встал на лапы
Сообщения: 93
Зарегистрирован: Чт мар 05, 2009 08:15:25
Контактная информация:

Re: Индикация LED через сдвиговые регистры

Сообщение Johnson »

Выше подправил пост. Да, схему не ту отправил. Разумеется, Вы правы, полярность перепутана.
Хороший повод перетряхнуть всю документацию на наличие таких вот промежуточных ляпов...

Исправил ошибку в посте.
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

Re: Индикация LED через сдвиговые регистры

Сообщение Alexeyslav »

на e-bay некогда были популярны 8-ми и 16-битные регистры специально для светодиодов - питание 3.3В, выход - источник входящего тока, его величина управляется для всех выводов одним резистором - от 0 до 80ма на вывод! Распиновка довольно удобная - все сигналы управления и питание с одной стороны микросхемы, а выходы в другой. сейчас чего-то их давно не видать...
NCy
Первый раз сказал Мяу!
Сообщения: 25
Зарегистрирован: Сб апр 14, 2012 21:42:31

Re: Индикация LED через сдвиговые регистры

Сообщение NCy »

Я ставил 595 регистры и цеплял их на SPI микроконтроллера - данные выдаются по стандартному протоколу SPI, не надо городить библиотеки. Реализовано на 3DLed cube, так что скорости хватает.
Ответить

Вернуться в «Периферия»