|
Управление 7 сигментным индикатором. |
|
|
|
Jun 19 2006, 08:28
|

Местный
  
Группа: Свой
Сообщений: 293
Регистрация: 14-03-06
Пользователь №: 15 254

|
Тут решил прекрутить 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; } }
|
|
|
|
|
Jun 19 2006, 08:52
|

Знающий
   
Группа: Свой
Сообщений: 966
Регистрация: 27-05-06
Из: СПб
Пользователь №: 17 499

|
Для начала не ясно жки это или нет.  учитывая, что если "ногами не дергать, не показывает", наверное, жки. Они питаются переменым током. от постоянного быстро дохнут. на советских ИЖЦ был вывод подложки, общий для всех сегменттов, его надо телепать туда-сюда. если напряжение на сегменте синфазно с подложкой, то сегмент не виден, и наоборот. частота -от нескольких сотен герц до нескольких килогерц. мое личное мнение- 7-сегментники не выглядят красиво.  проще символьные индикаторы брать, они от 4-5$ - 16 символов и уже с подсветкой. ну или на худой конец телефонные- HTxxx они по 50р - десять 7 сегментников в ряд, и часы встронные есть, и обмен по 2-м проводам. если выражение "4 светика на 1 ногу мк" понимать так, что это светодиодный индикатор тогда не ясно, почему их 4, а не 2- если они 2-х значные- 8 сегментов + общий хвост на 1 цифру и на другую. в любом случае при таких ногах нужен динамический опрос- сначала выводим одну цифру, потом вторую. и так с частотой 200-300 гц. чтоб не мигало.
Сообщение отредактировал Serj78 - Jun 19 2006, 09:02
|
|
|
|
|
Jun 19 2006, 08:59
|

Познающий...
     
Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125

|
Используйте таймер для динамической индикации. Тогда об индикаторах заботится в основной программе уже не надо. Лишь только обнавлять информацию для вывода. Например делаете переполнение таймера каждые 10 мс, в обработчике пишете программу, которая читает некий буфер (он содержит коды выводимых символов) и обновляет один индикатор. В следующем прерывании обновляете следующий индиктор и так до последнего, потом все сначала. Также советую завести два буфера одинаковой размерности. Один черновой, с которым будете работать в основной программе - т.е. куда будете писать данные для вывода, а второй - "чистовой" с него уже делаете обновление индикаторов. Когда нужно обновить выводимую информацию, устанавливаете флажок, в прерывании, если флажок установлен, первый буфер копируется во второй и идет вывод на индикаторы, как написано выше. Этим исключается мельтешения индиктаторов. Об основах динамической индикации можно почитать в инете - ифны должно быть полно)))
--------------------
Выбор.
|
|
|
|
|
Jun 19 2006, 09:00
|

Местный
  
Группа: Свой
Сообщений: 293
Регистрация: 14-03-06
Пользователь №: 15 254

|
Цитата(Serj78 @ Jun 19 2006, 12:52)  Для начала не ясно жки это или нет.  учитывая, что если "ногами не дергать, не показывает", наверное, жки. Они питаются переменым током. от постоянного быстро дохнут. на советских ИЖЦ был вывод подложки, общий для всех сегменттов, его надо телепать туда-сюда. если напряжение на сегменте синфазно с подложкой, то сегмент не виден, и наоборот. частота -от нескольких сотен герц до нескольких килогерц. мое личное мнение- 7-сегментники не выглядят красиво.  проще символьные индикаторы брать, они от 4-5$ - 16 символов и уже с подсветкой. ну или на худой конец телефонные- HTxxx они по 50р - десять 7 сегментников в ряд, и часы встронные есть, и обмен по 2-м проводам. Да самые обычные по 10р (светодиодные, красного свечения).
|
|
|
|
|
Jun 19 2006, 09:08
|

Профессионал
    
Группа: Свой
Сообщений: 1 751
Регистрация: 4-08-05
Из: Великие Луки
Пользователь №: 7 360

|
Цитата Тут решил прекрутить 7 сегментник, зашол в магазин купил 2-а 2ух значных с 10 выходами, как соединять понятно, но вот только они 2,5 В как с этим быть ??? да еще и 4 светика на одну ногу МК. Через резисторы, при 5 вольтовом питании ом 330 - 470. Общие катоды или аноды индикаторов рекомендуется подключить через транзисторные ключи. Четыре индикатра - 4 ключа.
--------------------
Андрей Смирнов
|
|
|
|
|
Jun 19 2006, 09:14
|

Профессионал
    
Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380

|
Цитата Тут решил прекрутить 7 сегментник, зашол в магазин купил 2-а 2ух значных с 10 выходами, как соединять понятно, но вот только они 2,5 В как с этим быть ??? да еще и 4 светика на одну ногу МК. 1. Питать светодиод непосредственно от 5В нельзя, надо ограничивать ток. Обычно уровень 5-10мА на сегмент. Я ставлю резисторы 300 Ом. 2.Ножка которая подключена к общему выводу должна отдавать ток 7/8 сегментам. Если брать из рассчета 8*8мА= 64мА, что АВРу недоступно, поэтому ставим транзисторные ключики по этим линиям. -- 3.Пожалуйста следи за орфографией и стилем. Продираться через твои посты, это еще тот кусок счастья.
--------------------
Вони шукають те, чого нема, Щоб довести, що його не існує.
|
|
|
|
|
Jun 19 2006, 09:29
|

Профессионал
    
Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380

|
И еще кусочек кода, чтобы не плодить ошибки с 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-х общих.
--------------------
Вони шукають те, чого нема, Щоб довести, що його не існує.
|
|
|
|
|
Jun 19 2006, 10:54
|

Гуру
     
Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659

|
Цитата(TamTam @ Jun 19 2006, 16:28)  Тут решил прекрутить 7 сегментник.... Млин, извините за ОФФТОП - чел плодит темы как рыба на нересте, одни вопросы... Извините, конечно, TamTam, но вопрос к Вам - вы учитесь где нибудь? Проходили там всякие законы Омов, еще че путнее, типа электротехники, схемотехники и других разных умных предметов. Может какие книжки умные любите на ночь почитать, просто поиском по разным форумам в сетях попользоваться. Мож у Вас в Вузе или другом учзаве по программированию конкурсы разные проходили, мож люди Вам какие советы по теме умные давали? Извиняте, конечно, за грубости...
--------------------
|
|
|
|
|
Jun 20 2006, 00:50
|

Местный
  
Группа: Свой
Сообщений: 293
Регистрация: 14-03-06
Пользователь №: 15 254

|
Цитата(prottoss @ Jun 19 2006, 14:54)  Цитата(TamTam @ Jun 19 2006, 16:28)  Тут решил прекрутить 7 сегментник.... Млин, извините за ОФФТОП - чел плодит темы как рыба на нересте, одни вопросы... Извините, конечно, TamTam, но вопрос к Вам - вы учитесь где нибудь? Проходили там всякие законы Омов, еще че путнее, типа электротехники, схемотехники и других разных умных предметов. Может какие книжки умные любите на ночь почитать, просто поиском по разным форумам в сетях попользоваться. Мож у Вас в Вузе или другом учзаве по программированию конкурсы разные проходили, мож люди Вам какие советы по теме умные давали? Извиняте, конечно, за грубости... Нет не учусь ! Но Учился, законы изучал, а вопросов много потому-что немогу найти на них ответы или просто не могу понять, дело для меня это новое просто как увлечение. Я одно время общался на телесистемах, так там вообще невозможно стало, один п...... и ругань ругаться не скем нехачу, а если это возможно, помогите маленькому и глуполму. Звиняйте если что не так. С уважением ТамТам. Цитата(otrog @ Jun 19 2006, 15:01)  Меня всем а вас ??? вы всегда делаете так как в шитах пишут и в апликухах ??? вот китайцы всегда так делают поэтому у них все так дешево и плохо работает (я не наезжаю, просто наблюдение из жизни), просто люди умные могут посоветовать иные пути решения, и болле правильные. А вот еслиб Вам было лет 20 и вам так хотелосьбы сделать что то хорошее и друзьям показать, а вот своих знаний нехвоталобы, Вы бы сели в угол и тихо молчали ????. И я никогда чужих заслуг себе не присваивал. Звиняйте если что нетак. Всей конфе огромный респект и уважуха, за терпение ко мне.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|