реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Closed TopicStart new topic
> Управление 7 сигментным индикатором.
TamTam
сообщение Jun 19 2006, 08:28
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 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;      
      }  
}
Go to the top of the page
 
+Quote Post
Serj78
сообщение Jun 19 2006, 08:52
Сообщение #2


Знающий
****

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



Для начала не ясно жки это или нет. smile.gif учитывая, что если "ногами не дергать, не показывает", наверное, жки.
Они питаются переменым током. от постоянного быстро дохнут. на советских ИЖЦ был вывод подложки, общий для всех сегменттов, его надо телепать туда-сюда. если напряжение на сегменте синфазно с подложкой, то сегмент не виден, и наоборот. частота -от нескольких сотен герц до нескольких килогерц.
мое личное мнение- 7-сегментники не выглядят красиво.smile.gif проще символьные индикаторы брать, они от 4-5$ - 16 символов и уже с подсветкой. ну или на худой конец телефонные- HTxxx они по 50р - десять 7 сегментников в ряд, и часы встронные есть, и обмен по 2-м проводам.

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

в любом случае при таких ногах нужен динамический опрос- сначала выводим одну цифру, потом вторую. и так с частотой 200-300 гц. чтоб не мигало.

Сообщение отредактировал Serj78 - Jun 19 2006, 09:02
Go to the top of the page
 
+Quote Post
unichorn
сообщение Jun 19 2006, 08:57
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 96
Регистрация: 24-09-05
Пользователь №: 8 901



Для простого ЖКИ без встроенного контроллера хватает 50 - 100гЦ. smile.gif
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Jun 19 2006, 08:59
Сообщение #4


Познающий...
******

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



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


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
TamTam
сообщение Jun 19 2006, 09:00
Сообщение #5


Местный
***

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



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


Да самые обычные по 10р (светодиодные, красного свечения).
Go to the top of the page
 
+Quote Post
Pyku_He_oTTyda
сообщение Jun 19 2006, 09:08
Сообщение #6


Профессионал
*****

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



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


Через резисторы, при 5 вольтовом питании ом 330 - 470.
Общие катоды или аноды индикаторов рекомендуется подключить через транзисторные ключи.
Четыре индикатра - 4 ключа.


--------------------
Андрей Смирнов
Go to the top of the page
 
+Quote Post
Serj78
сообщение Jun 19 2006, 09:10
Сообщение #7


Знающий
****

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



ну тогда все просто. все ножки вешаем через резисторы 100 ом, и вперед. это потому, что ток нужен на сегмент несколько побольше- он светится только половину времени. общую ножку каждого знака динамически включаем на + или на - (в завистимости, что у них там общее- анод или катод) только через транзистор! МК таких токов непосредственно с ноги не потянет- все будет очень тускло.
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Jun 19 2006, 09:14
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 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.Пожалуйста следи за орфографией и стилем. Продираться через твои посты, это еще тот кусок счастья.


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
unichorn
сообщение Jun 19 2006, 09:18
Сообщение #9


Частый гость
**

Группа: Участник
Сообщений: 96
Регистрация: 24-09-05
Пользователь №: 8 901



Можно ещё использовать микросхемы типа 74HC595, в таком случае с микроконтроллера
нужно всего лиш 3 вывода.
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Jun 19 2006, 09:29
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 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-х общих.


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
Pyku_He_oTTyda
сообщение Jun 19 2006, 09:35
Сообщение #11


Профессионал
*****

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



Цитата
это правильно и здорово! но почему же не посмотрел в ПРОТЕУСЕ пример КАК это делать ? Там ведь 210 примеров - на все про все.


Поддерживаю! Например пример на tiny15, там как раз прикручен четырехразрядный семисегментник через 74HC595


--------------------
Андрей Смирнов
Go to the top of the page
 
+Quote Post
Alex_Pol
сообщение Jun 19 2006, 09:44
Сообщение #12


Частый гость
**

Группа: Свой
Сообщений: 192
Регистрация: 23-03-05
Из: Украина. Днепропетровск
Пользователь №: 3 626



Через любой сдвиговый регистр с последовательным входом и параллельным выходом.
Go to the top of the page
 
+Quote Post
prottoss
сообщение Jun 19 2006, 10:54
Сообщение #13


Гуру
******

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



Цитата(TamTam @ Jun 19 2006, 16:28) *
Тут решил прекрутить 7 сегментник....


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

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

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


--------------------
Go to the top of the page
 
+Quote Post
otrog
сообщение Jun 19 2006, 11:01
Сообщение #14


Местный
***

Группа: Свой
Сообщений: 232
Регистрация: 22-02-06
Из: Воронеж
Пользователь №: 14 589



Чем не устраивает атмеловская апликуха?
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


--------------------
Истина рождается в спорах; но когда страсти кипят, истина испаряется.
Go to the top of the page
 
+Quote Post
TamTam
сообщение Jun 20 2006, 00:50
Сообщение #15


Местный
***

Группа: Свой
Сообщений: 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) *
Чем не устраивает атмеловская апликуха?
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 и вам так хотелосьбы сделать что то хорошее и друзьям показать, а вот своих знаний нехвоталобы, Вы бы сели в угол и тихо молчали ????. И я никогда чужих заслуг себе не присваивал.

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

Всей конфе огромный респект и уважуха, за терпение ко мне.
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Closed TopicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 23:55
Рейтинг@Mail.ru


Страница сгенерированна за 0.0149 секунд с 7
ELECTRONIX ©2004-2016