Главная » Статьи » Как подключить

Когда не хватает ног. Часть 1. Дешифратор 4-16.


 Когда нужно подключить большое количество светодиодов, а тратить драгоценные пины микроконтроллера совсем не хочется (или чаще всего такого количества ног просто напросто нет), на помощь могут придти микросхемы-дешифраторы. Например дешифратор 74HC154 (наш аналог К1533ИД3), который выставляет определенный выход в активное состояние в зависимости от 4х битного числа на входе.   
 
 
  Таблица истинности описывающа логику работы приведена ниже.
L-низкий уровень
Н-высокий уровень
Х-низкий или высокий, без разницы
 
 
   Если посидеть и повтыкать с минуту, то можно понять что ничего сложного тут нет =) Стоит отметить, что активный уровень на выходе - низкий (low). Помимо входов-выходов присутствуют два разрешающих вывода enable, включенных по логической И. Дешифратор будет выполнять свою функцию только тогда, когда обе эти ноги сидят на земле.
   Имхо, недостатком является только то, что в любой момент времени только на одном из выходов может быть активный уровень. Поэтому, если потребуется одновременное включение нескольких выходов, придется приделывать динамическое управление. 
 
Вот простой пример программы для ATTiny13, здесь поочереди выставляются пины выхода дешифратора в активное состояние, а-ля бегущий огонек:  
$regfile = "attiny13.dat"
$crystal = 1000000

Config Portb = Output
 
Do

Portb = &B00001111
Waitms 100
Portb = &B00001110
Waitms 100
Portb = &B00001101
Waitms 100
Portb = &B00001100
Waitms 100
Portb = &B00001011
Waitms 100
Portb = &B00001010
Waitms 100
Portb = &B00001001
Waitms 100
Portb = &B00001000
Waitms 100
Portb = &B00000111
Waitms 100
Portb = &B00000110
Waitms 100
Portb = &B00000101
Waitms 100
Portb = &B00000100
Waitms 100
Portb = &B00000011
Waitms 100
Portb = &B00000010
Waitms 100
Portb = &B00000001
Waitms 100
Portb = &B00000000
waitms 100

Loop

End
 

 Вот что получится в итоге:

 
 

 Еще на основе дешифратора можно построить расширитель для клавиатуры, и таким образом получить в распоряжение 16 кнопок занимающих 5 пинов микроконтроллера. Например вот простой пример для attiny2313:  


  В основном цикле выполняется какая-нибудь программа, например мигание светодиода. По переполнению таймера происходит прерывание, в обработчике прерывания происходит сканирование клавиатуры и если была нажата кнопка, на ноге PortB.7 появится низкий уровень. Узнав в какой момент было нажатие, можно узнать номер нажатой кнопки. Этот номер отправим по UART:

$regfile = "attiny2313.dat"
$crystal = 1000000
$baud = 1200

Dim M As Byte
Dim N As Byte

Config Portb = Output
Config Portb.7 = Input
Config Portd.2 = Output
Config Timer1 = Timer , Prescale = 8   'переполнение таймера каждые 0,5 сек
On Timer1 Keyboard:
Enable Interrupts
Enable Timer1

Do '***выполняем основную программу***

Portd.2 = 1
Wait 1
Portd.2 = 0
Wait 1
Loop
End

Keyboard:
For M = 0 To 15 Step 1
Portb = M
If Pinb.7 = 0 Then                    'если была нажата кнопка
 N = M                                'смотрим в какой момент она была нажата
 M = 0
 Print N                              'печатаем номер кнопки
 Return                               'и выходим из цикла
End If                                'если нажатия небыло, продолжим сканирование до конца
Waitms 10
Next M
Return                                'возвращаемся в основной цикл программы


Документация на микросхему 74HC154
Категория: Как подключить | Добавлено: 02.03.2011
Просмотров: 28495 | Комментарии: 16 | Теги: исходники, логика, bascom-avr, дешифратор | Рейтинг: 5.0/4
Всего комментариев: 16
16 Oboltus   (04.03.2014 10:21)
Разобрался. Спасибо! :)

15 Oboltus   (27.02.2014 18:10)
А можно немного подробнее объяснить логику работы второй программы(с опросом кнопок).Зачем мы проверяем нажата ли кнопка на Portb.7? Может вместо Portb.7 повесить ножку прерывания и по этому самому прерыванию опросить порт...в общем объясните оболтусу пжлста пошагово, а то меня эта 7 ножка в ступор вгоняет...

14 pchela5   (03.07.2012 12:09)
Скорее нет, чем да, так как этот ряд микросхем растет из 74 (155) ТТЛ серии, а у них для обеспечения нагрузочной способности из-за схемотехники использовали активный уровень - низкий.

13 exersizze   (02.07.2012 21:24)
Я кроме как с HC154 не сталкивался, поэтому сказать не смогу. Могу посоветовать только методом подбора по советским микрухам ид1, ид4, ид10 и т.д. Может среди них найдется.

12 SkSeMi   (02.07.2012 21:11)
Можете посоветовать микросхемы дешифраторов, но с высоким активным уровнем, а то я никак не нашел, а очень надо, чтобы не мудрить с инверторами на транзисторе на каждый вывод подобной микросхемы?
Т.е., чтобы на входе и на выходе микросхемы активным уровнем сигналов был высокий,
Заранее спасибо!

11 exersizze   (24.09.2011 20:53)
конечно можно. подавай управляющие сигналы на серву через выход дешифратора,
только использовать стандартную функцию Servo уже не получится.

10 space   (24.09.2011 19:52)
можно ли дешифратор использовать для управления сервоприводами(задавать градус поворота) в баскоме. если да. то как приблизительно выглядит?

9 exersizze   (20.08.2011 19:34)
Нет, в данном случае это просто порты ввода/вывода. Можно использовать другие ноги по желанию, естественно сконфигурировав их в программе.

8 cudi   (20.08.2011 18:57)
у этих портов особое назначение или нет?

7 cudi   (20.08.2011 18:56)
слушай, ты подключаешь микросхему к ain0/ain1/oc1a/oc0a/scl так задумано? или можно подключить к любому порту и указать в программе?

6 exersizze   (20.08.2011 14:52)
да правильно, всего 16 кнопок, на каждую кнопку по комбинации на входе. А для каждой кнопки ты сам задаешь функционал, что напишешь то она и будет выполнять.

5 cudi   (20.08.2011 14:22)
Как он различает где какая кнопка?

4 cudi   (20.08.2011 14:21)
n=0 - это первая кнопка, если N=M, а M=0
n=1 - это вторая кнопка, если N=M, а M=1
Я правильно понял?

3 exersizze   (20.08.2011 13:53)
Да, схема подключения правильная. В примере есть строка печатающая номер нажатой клавиши. Так организуй проверку на номер нажатой кнопки и выполняй нужное действие:

Keyboard:
For M = 0 To 15 Step 1
Portb = M
If Pinb.7 = 0 Then 'если была нажата кнопка
N = M
M = 0
'проверяешь какая кнопка нажата и выполняешь нужное действие
if n=0 then
incr X1
end if

'и так далее для каждой
........

Return
End If
Waitms 10
Next M
Return

2 cudi   (20.08.2011 13:27)
А схема точно правильная, для подключения кнопок?

1 cudi   (20.08.2011 13:23)
А как реализовать действие при нажатии клавиши?
Вот кусок кода:
Sub Клавиши()
Waitms 300
If Вверх = 0 Then Incr X1 'при нажатие клавиши увеличиваем переменную на единицу
If Вниз = 0 Then Decr X1 'при нажатие клавиши уменьшаем переменную на единицу
Это код от часов...
Верх и Вниз это порты от МК..
Хотелось бы в Ваш код вставить действия, для этого надо заменить print N, на действие какое то?

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]






   EasyEDA:  бесплатный редактор схем

   ✓ Создание схем
   ✓ Возможность симуляции
   ✓ Быстрое создание печатных плат
   ✓ Интуитивно понятный интерфейс

   Нарисуй свою схему прямо сейчас!
   Изготовление печатных плат   https://easyeda.com/order
авторизация
Логин:
Пароль:
Комментарии
Когда не хватает ног. Часть 2. Сдвиговый регистр 74HC595
08.12.2016 - exersizze:
yorx выдалось немного свободного времени, проверил в симуляторе. Проблема...
Логгер температуры 2.0
05.12.2016 - Evgeny6873:
Хотел повторить схему и долго ждал дисплей, два раза заказывал с Китая, пришел. ...
Когда не хватает ног. Часть 2. Сдвиговый регистр 74HC595
01.12.2016 - yorx:
Доброго времени суток, exersizze попробовал Ваш код все равно не работает как на...
Помни об усадке!
30.11.2016 - pchela5:
Автомобильные никакие не лезут?
Помни об усадке!
29.11.2016 - AlekS:
Виктор, спасибо.
С заменой транса в зиму, перестройка не комельфо) Валяет...
Управляем микроконтроллером с ПК по UART
29.11.2016 - exersizze:
Михаил, для работы с инфракрасными датчиками и диодами есть команды RC5SE...
Управляем микроконтроллером с ПК по UART
29.11.2016 - Михаил:
Всем привет.
Подскажите как переменную S передать по инфракрасному каналу...
Помни об усадке!
29.11.2016 - pchela5:
> Если ленту светодиодную порезать и соединить последовательно
Только ...
Когда не хватает ног. Часть 2. Сдвиговый регистр 74HC595
29.11.2016 - exersizze:
yorx, вывод Q7 ' первой микросхемы соединен с DS второй микросхемы? С...


Лучшие цены на 3D принтеры
успей сделать себе подарок к Новому Году! ;)


Prusa i3

Prusa i3 от 12500 р.



Rostoсk

Rostock от 15000 р.