Страница 1 из 2
Индикация LED через сдвиговые регистры
Добавлено: Пт мар 26, 2010 12:18:32
slesar
Интересует информация о принципе работы микросхем логики для 7-сегментных индикаторов, что как, примерчик исполнения. Т.е. как по 2-3 проводам с контроллера упавлять цифрой. Также совет-наставление какую микросхемку применить.
Re: Снова индикация
Добавлено: Пт мар 26, 2010 12:25:15
Arlleex
применить можно регистры сдвига и управлять по 3 проводам.
Зайди на сайт ДиХалт-а, там есть статейка, как подключить индикаторы по 1 проводу.
Re: Снова индикация
Добавлено: Сб мар 27, 2010 00:59:38
MTF
Есть такая микруха 74LS164 для управления 7 сегментного индикатора по 2 проводам !!!!!!
Re: Снова индикация
Добавлено: Вс мар 28, 2010 11:56:41
neon-f
сто раз писано и разжевано, но все же.
само удобно выводить с помощью 74нс595 или 4094 регистров. я бы рекомендовал STPIC6C595MTR, это 595 регистр с мощным высоковольтным выходом, стоит всего 0,7уе, и можно прямо к нему цеплять индикаторы любого типа, без всяких транзисторных ключей. Одним словом красота, контроллер-STPIC6C595MTR-индикатор.
Re: Снова индикация
Добавлено: Вс мар 28, 2010 13:04:47
kalobyte
Re: Снова индикация
Добавлено: Вс мар 28, 2010 17:02:53
GP1
Отмечусь в теме и я.
Вопрос какой максимальный ток через выводы Vcc/GND для 74hc595? Отвечаю - +-70мА, или 10мА/сегмент это максимум при статике, при динамической индикации - соответсвенно
А теперь смотрим 74ALS164 Io (т.е. через вывод GND) - -112мА что на 60% больше.
Отсюда вывод: для индикаторов с ОА 74ALS164 предподчительнее.
Re: Снова индикация
Добавлено: Вс мар 28, 2010 20:29:56
Aheir
Автору - переименовать тему, срок - сутки.
Re: Индикация LED через сдвиговые регистры
Добавлено: Ср мар 31, 2010 10:12:35
pcb432
Почему-то радио любители практически не используют (встречал несколько попыток) м/с драйверы 7-сегментных LED индикаторов (самых разных цветов и разрядов), применяемых в DVD плеерах, видеомагнитофонах и другой аппаратуре. Умногих DVD плеера валяются неисправные из-за нецелесообразности ремонта и их отдают на запчасти даром или по символической цене.
Эти драйвера насколько я понял несколько упрощённые и значительно более дешёвые аналоги MAX7219, MAX7221. Например AP6928, AS1628B,CS1664EQ,PT6961,PT6964 и т.п..
Управляются они по SPI интерфейсу. Это всего 3 провода и широкие возможности вывода цифровой и некоторой текстовой информации в разнообразных режимах, регулировка яркости.
Допускается каскадное (также как и при использовании регистров 74HC595) соединение драйверов для увеличения разрядности индикаторов. Можно подключить и клавиатуру с достаточным колличеством кнопок.
На плате с индикатором уже припаяна мс драйвера, кнопки и фотоприемник, распаян разъём или кабель да ещё с маркировкой контактов. Т.е. это готовая к применению конструкция и не надо тратить время на изготовление платы для отладки и проверки своих программ.
Есть и вакумно-люминисцентные индикаторы разных размеров с большим колличеством сегментов и самых разных цветов.
В этом случае микроконтроллер освобождается от рутиной и занимающей довольно много памяти функции вывода информации.
Re: Индикация LED через сдвиговые регистры
Добавлено: Ср мар 31, 2010 11:20:13
MisterDi
Вариант интересен только в случае, когда есть стабильный источник требуемых ИС. Изучать каждый раз по-новой систему комманд контроллера и протокол работы - не у всех и не всегда есть возможность.
Re: Индикация LED через сдвиговые регистры
Добавлено: Пт апр 02, 2010 08:21:13
pcb432
В том то и дело, что благодаря нашим братьям теперь не меньшим, источник практически не ограничен. В разных изделиях используются практически однотипные драйвера с однотипной системой команд + яркие бесплатные индикаторы в комплекте.
В ремонтных мастерских этих плат скапливается уже в достаточном колличестве и всё это идёт на выброс.
Re: Индикация LED через сдвиговые регистры
Добавлено: Вс май 02, 2010 19:46:25
andrewtitoff
2 pcb432
Угу, только не всегда они подписаны, а даташит например на AP6928 ненайти... =(((
Re: Индикация LED через сдвиговые регистры
Добавлено: Чт май 06, 2010 10:13:44
andrewtitoff
Млин, чегото никак не могу разобраться как подключить AP6928 к LPT... =(((
Прочитал статейку
http://kazus.ru/articles/345.html , посмотрел схему DVD от которого эта плата(схему прилагаю), но ничего не получается..., сравнив схемы я так понял что вся обвязка на плате уже есть, соединил DI/O, CS, CLC с LPT, 5в взял от USB, землю на всякий случай соединил LPT и USB ну и естенственно с платой, в итоге напряжения приходят, т.к. подключал паралельно LPT-тестеру - видно что что то ппосылается, покрайне мере при отправке светодиод на тестере один раз мигает, но дисплей молчит... =((((
Re: Индикация LED через сдвиговые регистры
Добавлено: Ср май 15, 2013 09:18:08
pcb432
В статье описаны драйверы LED фирмы MAXIM. У них в отличии от драйвера типа AP6928, TM1628 и т.п. команды разные и отправляются начиная со старшего бита. Более точная информация в даташитах.
Re: Индикация LED через сдвиговые регистры
Добавлено: Пт май 17, 2013 07:39:47
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 цифр. Рядом с работающими силовыми установками в композитном корпусе проблем не было.
Re: Индикация LED через сдвиговые регистры
Добавлено: Пт май 17, 2013 08:14:10
akl
Полярность светодиодов на схеме правильно показана?
Johnson писал(а):мега лучше коммутирует порты на общий провод, чем на плюсовой, ей так проще.
Выходной драйвер у AVR'ок уже давно симметричный. Не вводите в заблуждение.
Each output buffer has symmetrical drive characteristics with both high sink and source capability.
Re: Индикация LED через сдвиговые регистры
Добавлено: Пт май 17, 2013 09:50:23
Johnson
Полярность светодиодов на схеме правильно показана?
Да, конечно. По этой схеме налажено производство. Драйверы в TPIC коммутируют на общий (инвертированные).
Про симметричность меги не знал, спасибо, изучу.
Добавлено: Ой, схема не та... Разумеется, полярность неправильная.
Re: Индикация LED через сдвиговые регистры
Добавлено: Пт май 17, 2013 09:56:14
akl
Johnson писал(а):Драйверы в TPIC коммутируют на общий (инвертированные).
Да, и подключают аноды к общему проводу, в то время как катоды подключены к +Vin. Не убедили.
Re: Индикация LED через сдвиговые регистры
Добавлено: Пт май 17, 2013 10:11:23
Johnson
Выше подправил пост. Да, схему не ту отправил. Разумеется, Вы правы, полярность перепутана.
Хороший повод перетряхнуть всю документацию на наличие таких вот промежуточных ляпов...
Исправил ошибку в посте.
Re: Индикация LED через сдвиговые регистры
Добавлено: Вт май 21, 2013 15:44:52
Alexeyslav
на e-bay некогда были популярны 8-ми и 16-битные регистры специально для светодиодов - питание 3.3В, выход - источник входящего тока, его величина управляется для всех выводов одним резистором - от 0 до 80ма на вывод! Распиновка довольно удобная - все сигналы управления и питание с одной стороны микросхемы, а выходы в другой. сейчас чего-то их давно не видать...
Re: Индикация LED через сдвиговые регистры
Добавлено: Вт янв 07, 2014 14:04:02
NCy
Я ставил 595 регистры и цеплял их на SPI микроконтроллера - данные выдаются по стандартному протоколу SPI, не надо городить библиотеки. Реализовано на 3DLed cube, так что скорости хватает.