Полная версия этой страницы:
Динамическая индикация
Reboot_s
Oct 20 2005, 13:07
Мне нужно с помощью динамической индикации, отображать информацию на трех светодиодных дисплеях. МК - AT90S2313. Дисплеи подвешены на порт B, а управление транзисторами которые включают общие катоды на змелю на порт D. Сколько сам не бился, нормально отображает только "первый" так сказать, первый,который подключишь. включаю два - первый мигает одним сегментом, а второй попросту рябит.
Может кто сказать какая нужна частота и дать пример программы. Только динамическая индикация за счет тамера0, а то таймер1 уже задействован.
MALLOY2
Oct 20 2005, 13:21
Частота должна быть не менее 100 Гц * кол-во сегментов, в данном случае 3.
типа пример:
#define SEGMENT_COUNT 3
volatile unsigned int segment[SEGMENT_COUNT];
в прерывании от таймера вот такая шняга
{
static unsigned char cnt_seg = 0;
if (++cnt_seg == SEGMENT_COUNT) cnt_seg=0;
switch(cnt_seg)
{
case 0:
PORTD = xxx; //включаем 1 сегмент
PORTB = segment[0]; //выводим число
break;
case 1:
PORTD = xxx; //включаем 2 сегмент
PORTB = segment[1];
break;
case 2:
PORTD = xxx; //включаем 3 сегмент
PORTB = segment[2];
break;
}
}
в программе
segment[0] = 0x01; //вывести на 1 сегмент
segment[1] = 0x08; //вывести на 2 сегмент
P.S. Это программа только как пример в реальной жизни не рекомендую использовать в программах С особенно в прерываниях конструкции switch
andrvisht
Oct 20 2005, 13:22
Частота выбирается с учетом инерционности человеческого зрения
Минимум считается 25Гц, приемлимой будет 50 Гц.
Т. о. Вам нужно чтобы время отображения на всех 3-х индикаторах составило макимум 20ms. Т .е. делителем ставите 7ms и счетчик на 3. По каждому прерыванию сначала гасите всех, потом ложите данные в порт по соответствующему индикатору, и включаете всех. И так далее. Желательно еще разрешить глобальные прерывания во всех кроме индикаторного чтобы не было подмаргивания.
Примерно так.
prottoss
Oct 20 2005, 13:30
Побольше посещай сайт производителя
http://atmel.com и российский
http://atmel.ru. Снимется масса вопросов
AVR242 прочти, он есть на русском, вроде на www.gaw.ru, да и на atmel.com всё это есть
Reboot_s
Oct 20 2005, 18:14
За пример спасибо, жаль только, что я в С ни в зуб ногою)) А данные сайты я посещаю и AVR242 у мну есть, и по русски и по английски. В общем, что надо я услышал. Особое спасибо &-rey
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.