Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.76/42: Рейтинг темы: голосов - 42, средняя оценка - 4.76
dt_omdriw
0 / 0 / 0
Регистрация: 25.06.2011
Сообщений: 140
1

Регулировка яркости LED матрицы 24х8

17.11.2014, 08:27. Просмотров 7542. Ответов 12
Метки нет (Все метки)

Делаю очередной проект
МК мега32
матрица 24х8 - каждая матрица из 3 столбцами управляется регистром 74хх595 соедененныым последовательно
строками через ключи управляет 1 порт МК
частота МК 16Мгц
в прерывании по переполнению производиться сканирование матрицы
если смотреть на выходы управления строками то там идет такая последовательность, тоесть строки переключаются по очереди. со сдвигом, период сканирования 1мс

_|___|___|
__|___|___|
___|___|___|
... и т. д по всем строкам
яркость плавно регулируется если изменять длительность импульса включения строки |
вопрос, как это программно реализовать
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.11.2014, 08:27
Ответы с готовыми решениями:

непрерывная регулировка тока на AVR--как?
Предположим нагрузка лампа накаливания с напряжением 5в и током потребления...

Регулировка яркости на ноутбуке
Если пишу не в тот раздел - заранее извиняюсь. Спалил видеокарту от AMD на...

Регулировка яркости не работает. Wn 8.1
Ноутбук Emachines G730G с видеокартой ATI Mobility Radeon HD 5650. Установил...

Регулировка яркости экрана
Люди помогите как в vb.net написать регулировку яркости подсветки LCD монитора?...

Регулировка яркости монитора Delphi 7
Вот ищу, ищу .... не могу найти ... в том прикол что в "гугле" ... есть только...

12
stt
0 / 0 / 0
Регистрация: 03.11.2012
Сообщений: 9
17.11.2014, 08:52 2
В обработчик прерывания по переполнению вставить 2 программных счетчика, один из которых будет отвечать за частоту сканирования строк, а второй- за время наличия активного уровня, т.е. яркость. Отработал второй счетчик- гасим строку, отработал первый- переключаем на следующую. Загружая значение во второй счетчик получите возможность менять скважность (яркость). Или задействовать 2 таймера, что, на мой взгляд, расточительно.
0
dimyurk1978
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 3,047
17.11.2014, 08:54 3
Вам яркость всей матрицы регулировать или чтобы у каждого светодиода отдельно яркость регулировалась? Если всей матрицы, то все просто. У регистров есть вход разрешения выходов. Если на него подать ШИМ, то так можно добиться регулировки яркости. Если же каждым светодиодом в отдельности, то скорее всего ничего не выйдет. Нужны специальные драйверы светодиодов.
0
Pymkvym
0 / 0 / 0
Регистрация: 21.10.2013
Сообщений: 1,520
17.11.2014, 10:15 4
А я попробую!
Как хочу?

Например - четыре прохода.
Если в каждом проходе включим диод - максимальная яркость.
Если только в одном - минимальная.
Если в двух - средняя яркость.

Улавливаете?

У 32 Атмеги аппаратный SPI отлично сопрягается со сдвиговым регистром 74хх595.
Не далее как на прошлой неделе пробовал.
0
Pymkvym
0 / 0 / 0
Регистрация: 21.10.2013
Сообщений: 1,520
17.11.2014, 10:26 5
Может схему выложите?
Хочу сделать нечто подобное.
Может будем друг другу взаимополезны. :-)
0
dt_omdriw
0 / 0 / 0
Регистрация: 25.06.2011
Сообщений: 140
17.11.2014, 10:36 6
спасибо за ответы
яркость надо регулировать всей матрицы
предложение изменять количество проходов сканирования не подходит
начинает моргать хотя яркость и регулируется
если заводить 2 счетчика как предложил STT, то надо таймер настраивать на высокую частоту - может это и не так страшно
период то у нас довольно большой 1 мс, а длительность надо регулировать в мкс

схема почти полностью от проекта http://rodyokot.ru/konkursCatDay2014/22/
только я не просто часы хочу сделать, а типа погодной станции с приемником

с ножкой OE регистра надо попробывать
тогда вопрос можно ли ШИМ организовать на программном уровне на любой ножке МК
0
dimyurk1978
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 3,047
17.11.2014, 10:52 7
Цитата Сообщение от dt_omdrew
с ножкой OE регистра надо попробывать
тогда вопрос можно ли ШИМ организовать на программном уровне на любой ножке МК
AVR плохо подходят для управления яркостью большого количества светодиодов. Если же вы хотите управлять яркостью всей матрицы, то задача становится элементарной. Не надо пробовать, делать надо. Мне коллеги когда-то подсказали такой способ.
ШИМ можно программно реализовать на любой ножке.
0
Pymkvym
0 / 0 / 0
Регистрация: 21.10.2013
Сообщений: 1,520
17.11.2014, 11:00 8
А я попробую!
Чтобы незаметно было мерцание, нужно увеличить частоту проходов.
Аппаратный SPI это позволит.
Либо сдвиговые поставить параллельно.
0
dt_omdriw
0 / 0 / 0
Регистрация: 25.06.2011
Сообщений: 140
17.11.2014, 11:09 9
понятно что можно частоту повысить, но тогда МК только и будет заниматься сканированием матрицы
0
Pymkvym
0 / 0 / 0
Регистрация: 21.10.2013
Сообщений: 1,520
17.11.2014, 11:52 10
Цитата Сообщение от dt_omdrew
понятно что можно частоту повысить, но тогда МК только и будет заниматься сканированием матрицы
Отнюдь!
Аппаратура на то и аппаратура, что контроллер не участвует.
По прерыванию по окончанию передачи SPI можно все делать (загрузить следующий байт).
У контроллера останется куча свободного времени!

Разгребусь - проверю на практике.
0
dt_omdriw
0 / 0 / 0
Регистрация: 25.06.2011
Сообщений: 140
17.11.2014, 11:56 11
когда попробуете код приложите плиз - тоже попробую
0
Pymkvym
0 / 0 / 0
Регистрация: 21.10.2013
Сообщений: 1,520
17.11.2014, 11:56 12
Цитата Сообщение от dt_omdrew
когда попробуете код приложите плиз - тоже попробую
Айн момент, но у меня там без прерываний пока.
Оп
Код
#define SPI_DDR  DDRB
#define SPI_PORT PORTB
#define SPI_SS   PB4//PB6//PB4
#define SPI_MOSI PB5 //+
#define SPI_MISO PB6
#define SPI_SCK  PB7 //+

void init_shift_rikystir( void )
{
//настраиваем выводы MOSI, SCL, SS на выход
SPI_DDR = ( 1 << SPI_MOSI) | ( 1 << SPI_SCK) | ( 1 << SPI_SS );
//выставляем SS в 1
SPI_PORT |= ( 1 << SPI_SS );
// разрешаем SPI, Master, режим 0, частота 1/4 от F_CPU, LSB first
SPCR = ( 1 << SPE ) | ( 1 << MSTR ) |(1 << SPR1) ;
//   SPSR = ( 1 << SPI2X ); //удвоение частоты SPI

}
void shift_rikystir_set_data(volatile uint8_t shift_data)//(unsykned char b )
{
unsykned char ret;

SPI_PORT &= ~(1 << SPI_SS );        //сбрасываем SS в 0
SPDR = shift_data;//b;                           //передаваемые данные
while( !( SPSR & ( 1 << SPIF ) ) ); //ждем окончания передачи
ret = SPDR;                         //считываем принятые данные

SPI_PORT |= ( 1 << SPI_SS );        //выставляем SS в 1

}

void shift_rikystir_clean(void){
shift_rikystir_set_data(0);
}
Я скорость ограничил потому, что у меня на сдвиговом ЖКИ сидел.
Тупить начинал на более высокой.
Но для ЖКИ тайминги критичны.
Светодиодам то - пофиг.
0
dt_omdriw
0 / 0 / 0
Регистрация: 25.06.2011
Сообщений: 140
17.11.2014, 18:25 13
спасибо всем за идеи и предложения
все получилось
так как проект на диспетчере ( в качестве образования и опыта)
сделал на 2 прерываниях переполнения и сравнения
яркость плавно регулируется в широком диапазоне от 40-255
идея demurg тоже не плоха и все работает, отказался по причине, что выводы мне нужны для датчиков
может кому и будет полезно - прикладываю тестовый проект в студии 4.19
Спасибо еще раз всем.

[62.58 Кб]
0
17.11.2014, 18:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.11.2014, 18:25

Регулировка яркости подсветки дисплея
Привет. Подскажите вариантов регулировки подсветки дисплея... Думал можно на...

Не работает регулировка яркости клавишами
Добрый день, формучане. поставил себе elementary os 0.4 Loki(64-bit), сначала...

Видео (регулировка яркости и контраста)
Посоветуйте рабочий компонент или алгоритм для регулировки яркости и контраста...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru