9zip.ru - технологии для людей
9zip.ru Инструкции Если не хватает выводов МК

Наткнулся я в очередной раз на типичную проблему. Надо было включить в схему несколько светодиодов, а ног нехватало. Переходить на другой процессор было неудобно, и пришлось выдумывать очередной финт (или "hint"?).

Подключение светодиодов к МК Оказалось, что можно включить светодиоды вот так.

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

Можно выдумать мультиплексный режим, при котором зажигаются одновременно по два светодиода. В таком случае общая яркость увеличится (скважность больше). К сожалению, при этом яркость каждого светодиода будет зависеть от светящейся комбинации. Хотя в большинстве случаев это несущественно.

Таким образом можно повесить шесть светодиодов на три ноги, двенадцать - на четыре и т.д. Впрочем, советую не увлекаться.

Особенно удобно использовать такую схему для включения двуцветных светодиодов, которые соединены внутри встречно-параллельно.

Ниже приведен пример программы. Он компилировался AVR-GCC 3.3 для ATmega163. Светодиоды были подключены к ногами PB.0 - PB.3. В этом примере одновременно зажигаются до двух светодиодов (скважность 1/3).

Собственно процедура регенерации выглядит примерно так:

unsigned char leds; // Bits are the leds states

void LEDs_refresh(void)
{
static unsigned char state; // Current refresh state

OFF(); // Turn all pins to High-Z

switch (state)
{
default:
CLR_0(); // Turn pin 0 low
if (leds & 1) {SET_1();} // Turn pin 1 high for led 1
if (leds & 2) {SET_2();} // Turn pin 2 high for led 2
state=1; // Next state
break;
case 1:
CLR_1(); // Turn pin 1 low
if (leds & 4) {SET_0();} // Turn pin 0 high for led 3
if (leds & 8) {SET_2();} // Turn pin 2 high for led 4
state=2; // Next state
break;
case 2:
CLR_2(); // Turn pin 2 low
if (leds & 16) {SET_0();} // Turn pin 0 high for led 5
if (leds & 32) {SET_1();} // Turn pin 1 high for led 6
state=0; // Next state
break;
}
}

Эту процедуру нужно вызывать с частотой, скажем, герц сто, чтобы моргание светодиодов не было видно человеческим глазом. Это удобно делать из прерывания от таймера.


9 нравится? 7


01.02.2015 © 9zip.ru
Авторские права охраняет Роскомнадзор

Понравилась статья?
Робот Вертер говорит:
поделись с друзьями!

Хочешь почитать ещё про инструкции? Вот что наиболее популярно на этой неделе:
Простой генератор звуковой частоты
Согласование усилителя с аккустической системой
Как пользоваться эмулятором ZX-Spectrum



Есть вопросы, комментарии? Напиши:

Имя
Комментарий
Длина текста:
число с картинки
Правила прочитал(а)
Как вставить картинку в свой комментарий?

Пользовательские теги: если не хватает ножек на микроконтроллере если нехватает ножек мк [ Что это? ]

Дальше в разделе Инструкции: Описание работы схемы центрифуги, Электродвигатель питается от сети переменного тока напряжением 220 В частотой 50 Гц. Под крышкой центрифуги установлен выключатель, блокирующий включение двигателя при открытой крышке. Установкой требуемой выдержки времени подготавливают цепи включения реле и нагревателя.

Главная 9zip.ru База знаний радиолюбителя Контакты
Девять кучек хлама:

Радиотехника, электроника и схемы своими руками Ремонт домашней электроники Виртуальный музей старых радиодеталей XX века Ламповый звук hi-end и ретро электроника Катушки Теслы Радиодетали и модули с Aliexpress Интернет и сети, компьютеры и программы Категория свободна Инструкции


Дайджест
радиосхем

Новые схемы интернета - в одном месте!

 23.2 SCADA тепло-узлов гаражного кооператива
 23.2 Доработка паяльной станции Quicko T75
 18.2 Интерфейсы джойстиков мини-погрузчика МУМС-11 Барс
1

Задай вопрос радиолюбителям!


25.2 Как устроен резистор?
8
25.2 Как отличить танталовый конденсатор от ...
2
22.2 Почему напольные весы показывают разные значения ...
3