roboforum.ru

Технический форум по робототехнике.

Проблема с динамической индикацией

Проблема с динамической индикацией

loid » 16 фев 2009, 13:20

Суть проблемы вы можите посмотреть в прикрепленном файле. Комутацию индикитора производил как обычно, на порт D посадил через резисторы 100 Ом семь сегментов индикатора, переключение индикаторов произвожу с порта B через транзистор (переключаю "минус"). Выводиться то они выводятся, но друг другу мешают, как бы немного засвечивают. Пробывал менять честоту, думал возможно она как то влияет - нет не помогло. Может я что то упустил из виду. Ткните носом, где не прав.
Вложения
MOV00458.rar
(284.82 КиБ) Скачиваний: 17

Re: Проблема с динамической индикацией

=DeaD= » 16 фев 2009, 13:28

А при отключенном индикаторе (транзистор закрыт) - оно подтянуто к питанию? Схемку бы выложить вообще.

Re: Проблема с динамической индикацией

RoboTok » 16 фев 2009, 13:31

Или ток проходит слишком большой и из-за больше мощности идёт засветка...

У меня на плате драйвера один светодиод горит при лог. 0 на выходе МК :ROFL:
(светодиод подключён на землю)

Re: Проблема с динамической индикацией

$ilent » 16 фев 2009, 13:42

Выходной порт в Z-состоянии.

Re: Проблема с динамической индикацией

loid » 16 фев 2009, 13:53

вот схема
Вложения
nm.JPG
nm.JPG (15.85 КиБ) Просмотров: 1857

Re: Проблема с динамической индикацией

Duhas » 16 фев 2009, 14:04

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

Re: Проблема с динамической индикацией

[MC] » 16 фев 2009, 14:30

А осцилом не судьба посмотреть что там на транзисторах?
Ну или код покажи.

Re: Проблема с динамической индикацией

=DeaD= » 16 фев 2009, 14:37

loid писал(а):вот схема

А что нельзя попробовать подтяжки поставить к питанию выше транзисторов, чтобы когда цифра отключена - у неё хвост в воздухе не болтался?

Re: Проблема с динамической индикацией

loid » 16 фев 2009, 14:42

С временем индикации уже химичел - ни к чему не приводит. Уже транзисторы убрал, думал они межленно затухают. Результата нет.
Кто то же делал на форуме часы, как индикацию сочинял?

Добавлено спустя 4 минуты 29 секунд:
вот код:
Код: Выделить всёРазвернуть
#include <mega8.h>
#include <delay.h>
int n;
int nm1;
int nm; //числовое значение для вывода на дисплей
int number[]={0b01101111,0b00001100,0b00111011,0b00111101,0b01011100,0b01110101,0b01010111,0b00101100,0b01111111,0b01111100};
//int step;

void printnm()  //вывод числового значения на дисплей
             {
             for (n=0; n<4; n++){
             PORTB.0=0;
             PORTB.1=1;
             PORTD =number[nm%100/10];
             PORTB.0=1;
             PORTB.1=0;
             PORTD =number[nm%10];
                                 }
             }     
             

void main(void)
{
PORTB=0xFF;
DDRB=0xFF;

PORTC=0x7F;
DDRC=0x7F;

PORTD=0x00;
DDRD=0xFF;

TCCR0=0b00000101;
TCNT0=0x00;

while (1)
      {
      //nm=TCNT0;
      //ta++;
      //if(ta>1000){ta=0; printnm();}
      if(TCNT0>10){printnm(); nm1++; TCNT0=0;}
      PORTD=0x00;
      if(nm1>50){nm1=0; nm++;}
      if(nm>99){nm=0;}
      };
}



Re: Проблема с динамической индикацией

=DeaD= » 16 фев 2009, 14:44

loid писал(а):Кто то же делал на форуме часы, как индикацию сочинял?

http://www.gaw.ru/html.cgi/txt/app/micr ... AVR242.htm - читали?

А вообще подтяжку таки пробовали сделать? :)

Re: Проблема с динамической индикацией

yak-40 » 16 фев 2009, 14:50

В базы транзисторов ОБЯЗАТЕЛЬНО надо ставить ограничительные резисторы 500ом - 1ком.

Re: Проблема с динамической индикацией

=DeaD= » 16 фев 2009, 14:53

yak-40 писал(а):В базы транзисторов ОБЯЗАТЕЛЬНО надо ставить ограничительные резисторы 500ом - 1ком.

Кстати, да, что опять же указано в приведённой выше статье.

Re: Проблема с динамической индикацией

blindman » 16 фев 2009, 14:59

1. Сначала выключай все разряды, затем выставляй нужные сегменты, и только потом включай нужный разряд.
2. Сильно не пытался в твоем коде разбираться, но сдается мне что он совсем не рабочий. Не вижу кода, который циклически меняет текущий отображаемый разряд.

Re: Проблема с динамической индикацией

loid » 16 фев 2009, 16:18

blindman, спасибо, ошибку ты мне показал. Всё заработало. :Yahoo!:
Ошибка была в следующем:
- включаю нужный разряд
- зажигаю нужные сегменты (не гашу их)
- переключаю разряд
- зажигаю нужные сегменты (другие)

как должно быть:
- включил разряд
- зажег нужные сегменты
- гашу сегменты
- включаю другой разряд
- зажигаю нужные сегменты (другие)
- нашу сегменты

Re: Проблема с динамической индикацией

[MC] » 16 фев 2009, 16:49

дык очевидно все

PORTB.0=0;
PORTB.1=1;
тут сделай паузу
PORTB.1=0;
PORTD =number[nm%100/10];
PORTB.0=1;
...

ты сам засвечиваешь разряды.
и про резюки в базах не забудь


Rambler\'s Top100 Mail.ru counter