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

 
 
 
Reply to this topicStart new topic
> Динамическая индикация
Reboot_s
сообщение Oct 20 2005, 13:07
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 26
Регистрация: 9-05-05
Пользователь №: 4 855



Мне нужно с помощью динамической индикации, отображать информацию на трех светодиодных дисплеях. МК - AT90S2313. Дисплеи подвешены на порт B, а управление транзисторами которые включают общие катоды на змелю на порт D. Сколько сам не бился, нормально отображает только "первый" так сказать, первый,который подключишь. включаю два - первый мигает одним сегментом, а второй попросту рябит.
Может кто сказать какая нужна частота и дать пример программы. Только динамическая индикация за счет тамера0, а то таймер1 уже задействован.
Go to the top of the page
 
+Quote Post
MALLOY2
сообщение Oct 20 2005, 13:21
Сообщение #2


Знающий
****

Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317



Частота должна быть не менее 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
Go to the top of the page
 
+Quote Post
andrvisht
сообщение Oct 20 2005, 13:22
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 298
Регистрация: 29-08-05
Пользователь №: 8 064



Частота выбирается с учетом инерционности человеческого зрения
Минимум считается 25Гц, приемлимой будет 50 Гц.
Т. о. Вам нужно чтобы время отображения на всех 3-х индикаторах составило макимум 20ms. Т .е. делителем ставите 7ms и счетчик на 3. По каждому прерыванию сначала гасите всех, потом ложите данные в порт по соответствующему индикатору, и включаете всех. И так далее. Желательно еще разрешить глобальные прерывания во всех кроме индикаторного чтобы не было подмаргивания.
Примерно так.
Go to the top of the page
 
+Quote Post
prottoss
сообщение Oct 20 2005, 13:30
Сообщение #4


Гуру
******

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



Побольше посещай сайт производителя http://atmel.com и российский http://atmel.ru. Снимется масса вопросов
Прикрепленные файлы
Прикрепленный файл  avr_led_key.pdf ( 148.49 килобайт ) Кол-во скачиваний: 261
 


--------------------
Go to the top of the page
 
+Quote Post
Rash
сообщение Oct 20 2005, 14:52
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 639
Регистрация: 5-09-05
Пользователь №: 8 231



AVR242 прочти, он есть на русском, вроде на www.gaw.ru, да и на atmel.com всё это есть
Go to the top of the page
 
+Quote Post
Reboot_s
сообщение Oct 20 2005, 18:14
Сообщение #6


Участник
*

Группа: Новичок
Сообщений: 26
Регистрация: 9-05-05
Пользователь №: 4 855



За пример спасибо, жаль только, что я в С ни в зуб ногою)) А данные сайты я посещаю и AVR242 у мну есть, и по русски и по английски. В общем, что надо я услышал. Особое спасибо &-rey biggrin.gif
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


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


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