Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Управление 7 сигментным индикатором.
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
TamTam
Тут решил прекрутить 7 сегментник, зашол в магазин купил 2-а 2ух значных с 10 выходами, как соединять понятно, но вот только они 2,5 В как с этим быть ??? да еще и 4 светика на одну ногу МК.

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

Код
void show_number(unsigned char segment,unsigned char number);
void show(int num);
void show_number(unsigned char segment,unsigned char number)
{    
   switch(segment)
      {
      case 1:seg_1;break;
      case 2:seg_2;break;
      case 3:seg_3;break;
      case 4:seg_4;break;
      default: seg_1;break;
      }                      
   switch(number)        
      {
      case 0:port_data=~63;break;
      case 1:port_data=~6;break;
      case 2:port_data=~91;break;
      case 3:port_data=~79;break;
      case 4:port_data=~102;break;
      case 5:port_data=~109;break;
      case 6:port_data=~125;break;
      case 7:port_data=~7;break;
      case 8:port_data=~127;break;
      case 9:port_data=~111;break;
      default:port_data=~63;break;      
      }  
}
Serj78
Для начала не ясно жки это или нет. smile.gif учитывая, что если "ногами не дергать, не показывает", наверное, жки.
Они питаются переменым током. от постоянного быстро дохнут. на советских ИЖЦ был вывод подложки, общий для всех сегменттов, его надо телепать туда-сюда. если напряжение на сегменте синфазно с подложкой, то сегмент не виден, и наоборот. частота -от нескольких сотен герц до нескольких килогерц.
мое личное мнение- 7-сегментники не выглядят красиво.smile.gif проще символьные индикаторы брать, они от 4-5$ - 16 символов и уже с подсветкой. ну или на худой конец телефонные- HTxxx они по 50р - десять 7 сегментников в ряд, и часы встронные есть, и обмен по 2-м проводам.

если выражение "4 светика на 1 ногу мк" понимать так, что это светодиодный индикатор тогда не ясно, почему их 4, а не 2- если они 2-х значные- 8 сегментов + общий хвост на 1 цифру и на другую.

в любом случае при таких ногах нужен динамический опрос- сначала выводим одну цифру, потом вторую. и так с частотой 200-300 гц. чтоб не мигало.
unichorn
Для простого ЖКИ без встроенного контроллера хватает 50 - 100гЦ. smile.gif
haker_fox
Используйте таймер для динамической индикации. Тогда об индикаторах заботится в основной программе уже не надо. Лишь только обнавлять информацию для вывода.
Например делаете переполнение таймера каждые 10 мс, в обработчике пишете программу, которая читает некий буфер (он содержит коды выводимых символов) и обновляет один индикатор. В следующем прерывании обновляете следующий индиктор и так до последнего, потом все сначала.
Также советую завести два буфера одинаковой размерности. Один черновой, с которым будете работать в основной программе - т.е. куда будете писать данные для вывода, а второй - "чистовой" с него уже делаете обновление индикаторов. Когда нужно обновить выводимую информацию, устанавливаете флажок, в прерывании, если флажок установлен, первый буфер копируется во второй и идет вывод на индикаторы, как написано выше. Этим исключается мельтешения индиктаторов. Об основах динамической индикации можно почитать в инете - ифны должно быть полно)))
TamTam
Цитата(Serj78 @ Jun 19 2006, 12:52) *
Для начала не ясно жки это или нет. smile.gif учитывая, что если "ногами не дергать, не показывает", наверное, жки.
Они питаются переменым током. от постоянного быстро дохнут. на советских ИЖЦ был вывод подложки, общий для всех сегменттов, его надо телепать туда-сюда. если напряжение на сегменте синфазно с подложкой, то сегмент не виден, и наоборот. частота -от нескольких сотен герц до нескольких килогерц.
мое личное мнение- 7-сегментники не выглядят красиво.smile.gif проще символьные индикаторы брать, они от 4-5$ - 16 символов и уже с подсветкой. ну или на худой конец телефонные- HTxxx они по 50р - десять 7 сегментников в ряд, и часы встронные есть, и обмен по 2-м проводам.


Да самые обычные по 10р (светодиодные, красного свечения).
Pyku_He_oTTyda
Цитата
Тут решил прекрутить 7 сегментник, зашол в магазин купил 2-а 2ух значных с 10 выходами, как соединять понятно, но вот только они 2,5 В как с этим быть ??? да еще и 4 светика на одну ногу МК.


Через резисторы, при 5 вольтовом питании ом 330 - 470.
Общие катоды или аноды индикаторов рекомендуется подключить через транзисторные ключи.
Четыре индикатра - 4 ключа.
Serj78
ну тогда все просто. все ножки вешаем через резисторы 100 ом, и вперед. это потому, что ток нужен на сегмент несколько побольше- он светится только половину времени. общую ножку каждого знака динамически включаем на + или на - (в завистимости, что у них там общее- анод или катод) только через транзистор! МК таких токов непосредственно с ноги не потянет- все будет очень тускло.
beer_warrior
Цитата
Тут решил прекрутить 7 сегментник, зашол в магазин купил 2-а 2ух значных с 10 выходами, как соединять понятно, но вот только они 2,5 В как с этим быть ??? да еще и 4 светика на одну ногу МК.

1. Питать светодиод непосредственно от 5В нельзя, надо ограничивать ток. Обычно уровень 5-10мА на сегмент. Я ставлю резисторы 300 Ом.
2.Ножка которая подключена к общему выводу должна отдавать ток 7/8 сегментам. Если брать из рассчета 8*8мА= 64мА, что АВРу недоступно, поэтому ставим транзисторные ключики по этим линиям.
--
3.Пожалуйста следи за орфографией и стилем. Продираться через твои посты, это еще тот кусок счастья.
unichorn
Можно ещё использовать микросхемы типа 74HC595, в таком случае с микроконтроллера
нужно всего лиш 3 вывода.
beer_warrior
И еще кусочек кода, чтобы не плодить ошибки с case и константами:
Код
//seven_seg.h
//LED segments
#define    LA    0x01    // 1
#define    LB    0x02    // 2
#define    LC    0x04    // 4
#define    LD    0x08    // 8
#define    LE    0x10    // 16
#define    LF    0x20    // 32
#define    LG    0x40    // 64
#define    LH    0x80    //128
//Seven Segment Signs
#define    SS_0    LA | LB | LC | LD | LE | LF
#define    SS_1         LB | LC
#define    SS_2    LA | LB      | LD | LE         | LG
#define    SS_3    LA | LB | LC | LD             | LG
#define    SS_4         LB | LC            | LF    | LG
....
//seven_seg.c
typedef struct _decode_table
    {
    BYTE ss;
    BYTE ch;
    } decode_table;
    
const decode_table ss_table[] =     
{
    {SS_0,'0'},
    {SS_1,'1'},
    {SS_2,'2'},
    {SS_3,'3'},
....
void OutLED(char* str)
{
for(BYTE i=0; i<DISPLAY_X; i++ )
    {
    led_buf[i] = char2SS(str[i]);
    }
}
...
BYTE char2SS(BYTE b)
{
for(BYTE i = 0; i < sizeof(ss_table)/sizeof(decode_table); i++)
    {
    if(b == ss_table[i].ch)
        {
        return ss_table[i].ss;
        }
    }
return SS_USC;
}
...
//это запускается по таймеру
void UpdateDisplay(void)
{
kbd_timer++;
OffSegment();
OffCommon();
OutSegment(led_buf[pos]);
OutPoint();
OutCommon(pos);
if(kbd_timer > 70)
    {
    CheckKBD();
    kbd_timer = 0;
    }
pos++;
if(pos == DISPLAY_X)
    {
    pos = 0;
    }
}
...
//а это ARMовский код, но идея должна быть понятна
void OffSegment(void)
{
AT91F_PIO_SetOutput(AT91C_BASE_PIOA,(0xff << SEG_A));  
}
//--------------------------------------------------------------------------
void OffCommon(void)
{
AT91F_PIO_SetOutput(AT91C_BASE_PIOA,(0x0f << COM0));
}
//--------------------------------------------------------------------------
void OutSegment(BYTE s)
{
AT91F_PIO_ClearOutput(AT91C_BASE_PIOA,(s << SEG_A));
}
//--------------------------------------------------------------------------
void OutCommon(BYTE p)
{
AT91F_PIO_ClearOutput(AT91C_BASE_PIOA,(1 << (COM0 + p)));
}
//--------------------------------------------------------------------------
void OutPoint(void)
{
if(dec_point > DISPLAY_X)
    {
    AT91F_PIO_SetOutput(AT91C_BASE_PIOA,(1 << SEG_H));
    }
if(dec_point == pos)
    {
    AT91F_PIO_ClearOutput(AT91C_BASE_PIOA,(1 << SEG_H));
    }
}

SEG_A младший из восьми сегментных битов( для восьмибитки 0)
COM0 младший из 4-х общих.
Pyku_He_oTTyda
Цитата
это правильно и здорово! но почему же не посмотрел в ПРОТЕУСЕ пример КАК это делать ? Там ведь 210 примеров - на все про все.


Поддерживаю! Например пример на tiny15, там как раз прикручен четырехразрядный семисегментник через 74HC595
Alex_Pol
Через любой сдвиговый регистр с последовательным входом и параллельным выходом.
prottoss
Цитата(TamTam @ Jun 19 2006, 16:28) *
Тут решил прекрутить 7 сегментник....


Млин, извините за ОФФТОП - чел плодит темы как рыба на нересте, одни вопросы...

Извините, конечно, TamTam, но вопрос к Вам - вы учитесь где нибудь? Проходили там всякие законы Омов, еще че путнее, типа электротехники, схемотехники и других разных умных предметов. Может какие книжки умные любите на ночь почитать, просто поиском по разным форумам в сетях попользоваться. Мож у Вас в Вузе или другом учзаве по программированию конкурсы разные проходили, мож люди Вам какие советы по теме умные давали?

Извиняте, конечно, за грубости...
otrog
Чем не устраивает атмеловская апликуха?
AVR242: 8-bit Microcontroller Multiplexing LED Drive & a 4x4 Keypad.
http://www.atmel.com/dyn/resources/prod_do...nts/DOC1231.PDF
http://www.atmel.com/dyn/resources/prod_documents/Avr242.zip

Гууугль рулит


Поддерживаю prottoss angry.gif
TamTam
Цитата(prottoss @ Jun 19 2006, 14:54) *
Цитата(TamTam @ Jun 19 2006, 16:28) *
Тут решил прекрутить 7 сегментник....


Млин, извините за ОФФТОП - чел плодит темы как рыба на нересте, одни вопросы...

Извините, конечно, TamTam, но вопрос к Вам - вы учитесь где нибудь? Проходили там всякие законы Омов, еще че путнее, типа электротехники, схемотехники и других разных умных предметов. Может какие книжки умные любите на ночь почитать, просто поиском по разным форумам в сетях попользоваться. Мож у Вас в Вузе или другом учзаве по программированию конкурсы разные проходили, мож люди Вам какие советы по теме умные давали?

Извиняте, конечно, за грубости...


Нет не учусь ! Но Учился, законы изучал, а вопросов много потому-что немогу найти на них ответы или просто не могу понять, дело для меня это новое просто как увлечение.

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

Звиняйте если что не так.
С уважением ТамТам.

Цитата(otrog @ Jun 19 2006, 15:01) *
Чем не устраивает атмеловская апликуха?
AVR242: 8-bit Microcontroller Multiplexing LED Drive & a 4x4 Keypad.
http://www.atmel.com/dyn/resources/prod_do...nts/DOC1231.PDF
http://www.atmel.com/dyn/resources/prod_documents/Avr242.zip

Гууугль рулит


Поддерживаю prottoss angry.gif


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

А вот еслиб Вам было лет 20 и вам так хотелосьбы сделать что то хорошее и друзьям показать, а вот своих знаний нехвоталобы, Вы бы сели в угол и тихо молчали ????. И я никогда чужих заслуг себе не присваивал.

Звиняйте если что нетак.

Всей конфе огромный респект и уважуха, за терпение ко мне.
haker_fox
Цитата
Меня всем а вас ??? вы всегда делаете так как в шитах пишут и в апликухах ??? вот китайцы всегда так делают поэтому у них все так дешево и плохо работает (я не наезжаю, просто наблюдение из жизни), просто люди умные могут посоветовать иные пути решения, и болле правильные.

А вот еслиб Вам было лет 20 и вам так хотелосьбы сделать что то хорошее и друзьям показать, а вот своих знаний нехвоталобы, Вы бы сели в угол и тихо молчали ????. И я никогда чужих заслуг себе не присваивал.

1. Даташиты и "аппликухи" предназначены не для побайтного копирования исходника smile.gif , а для того, что бы показать, как это грамотно делается.
2. Китайцы только ширпотреб дрянной делают, а фабричное производство у них очень даже хорошее.
3.Вы часто задаете вопросы, решения на которые уже есть в инете и в книгах, надо только поискать, хорошо поискать. А задавая такие простые вопросы, вполне естественно, что народ не доволен и реагирует немного не так)))) Поэтому мой Вам совет, присмотритесь к себе и переоцените свою стратегию задавания вопросов.
4. Мне тоже 20 лет. Возраст здесь не причем.

Цитата
Всей конфе огромный респект и уважуха, за терпение ко мне.

Это не конфа, а форум)))))))))
prottoss
Цитата(haker_fox @ Jun 20 2006, 09:12) *
4. Мне тоже 20 лет. Возраст здесь не причем.


2TamTam: OFF: А мне 24...надо было не букварь курить...
otrog
Цитата(TamTam @ Jun 20 2006, 04:50) *
Меня всем а вас ??? вы всегда делаете так как в шитах пишут и в апликухах ???

Нет не всегда. ДШ и апноты использую в основном как учебник с картинками, принимая во внимание то, что их рекомендует производитель того железа, с которам я работаю. А не доверять производителю считаю неправильным.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.