Динамический ввод и вывод на 74HC595


Кстати, на прыгающие шарики меня вдохновил Oss :)
Что касается вывода – все просто и понятно, но мне нужно было посадить еще 10 кнопок и, естественно, на минимум портов. Использовать аноды индикации не покатит, это уже не укладывается в 3 провода к блоку индикации. А все технические приёмы, описанные на этом сайте, какие-то уж чересчур мудрёные и неудобоваримые (использовать К155ИР13 это, простите, какой-то муветон), легче уж и вправду использовать еще один контроллер. Но мы не ищем лёгких путей! На выручку опять пришел 595! И опять 3 порта! Но на эти 3 порта можно посадить хоть 1000 кнопок! Тока наращивай регистры!

Суть в том, что пока не прошел положительный перепад на PCL(12) регистра, данные на нем будут отображаться, в независимости от того что творится на выводах SI(14) и SCL(11), а значит, что порты, управляющие этими выводами можно перевести на ввод и считывать с них состояние кнопок! Главное, перед считыванием, быстро подготовить нужную группу этик кнопок. А чтобы выходные данные регистра не мешали его программированию их нужно перевести в Z-состояние. А управлять Z-состоянием можно тем же выводом PCL, ведь он не нужен пока мы работаем с последовательным вводом данных.
Если в последовательности действий, то так:
1) Подаем низкий уровень на PCL/Z (Выводы регистра переходят в Z)
2) Переводим SI и SCL на вывод, и передаем выборку группы (лог. ноль на нужную группу)
3) Переводим SI и SCL на ввод.
4) Поднимаем PCL/Z.
5) Считываем данные с SI и SCL
6) Повторяем цикл…
Небольшое замечание – из-за того что при переводе на ввод произойдет переход с 0 на 1 (подтягивающий резистор) вывода SCL, использовать Q0 регистра нельзя, потому как произойдет сдвиг и Q0 загрузится неопределенным значением от SI (как показал опыт – всегда по разному.) Но это касается только первого регистра, в следующей секции регистров его смело можно использовать.
Вобщем, посадить на эти 3 порта можно целую клавиатуру :)
- +8
- 07 апреля 2011, 23:49
- CyberCat
Опрос кнопок — извращение какое-то. нарастить то можно, но юзабилити вызывает сомнения. и диодов много :)
Ну дык это же на любителя, некоторые вон 155ИР13 используют, по мну так вот это самое извращение и есть:) А при тактовой частоте 16 Мгц пробежать десяток регистров — плёвое дело.
Я думаю, у него есть аналог в 74-й серии. Ну и многоногий монстр все же удобнее, чем туча диодов.
Но в целом интересно.
Но в целом интересно.
Я покопался в сети, не нашел аналогов, есть еще 74HC594, у которого вместо перехода в Z состояние еще один сброс, тем самым 2 отдельных сброса последовательной секции регистров и параллельной.
А что касается диодов — так у меня в конструкции их нет :) Это я тут для порядка нарисовал их. Пяткой на кнопки нажимать я не собираюсь, а пальцы у меня достаточно прямые чтобы нажать ровно одну кнопку.
А что касается диодов — так у меня в конструкции их нет :) Это я тут для порядка нарисовал их. Пяткой на кнопки нажимать я не собираюсь, а пальцы у меня достаточно прямые чтобы нажать ровно одну кнопку.
74HC165. Регистр в другую сторону. Защелкивает состояние выводов, после чего сдвигом загоняем данные в контроллер. 8 разрядов на корпус. Обвязка — резисторы подтяжки.
А по предложенному варианту ввода — автор изящно извернулся, но косить газоны кофемолкой можно, но не надо. 595я — для вывода.
А по предложенному варианту ввода — автор изящно извернулся, но косить газоны кофемолкой можно, но не надо. 595я — для вывода.
Терпеть не могу резисторы-подтяжки, особенно когда их много ) Да не было у меня 165-го под рукой. А тут 14 кнопок на корпус вышло )
Я же и говорю — изящно! А в чем проблема с резисторами? SMD хоть в три ряда ставь, да и дешевле они, чем диоды.
есть резисторные спорки, у которых один вывод сразу объединен.
чипрезюки можно под микрухой впаять, и ни каких пересечений и проблем с подводом питания.
резюки можно рядом (под) с кнопкой впаять и линии +/- идут параллельно.
В разрыв воткнуть порой сложнее, ибо места больше попросит, а подтяжку можно в любом месте воткнуть.
Предложенный способ больше подходит к «Надо, а нормальных средств нет и магаз далеко».
Много кнопок говоритье надо? а скомбинировать рег вывода (или счетчик) и рег ввода на 64 кнопки (80) кнопок и 4 проводка управления? Не, я понимаю — глопость сморозил, конечно 3 проводка круче, а 4 отстой.
чипрезюки можно под микрухой впаять, и ни каких пересечений и проблем с подводом питания.
резюки можно рядом (под) с кнопкой впаять и линии +/- идут параллельно.
В разрыв воткнуть порой сложнее, ибо места больше попросит, а подтяжку можно в любом месте воткнуть.
Предложенный способ больше подходит к «Надо, а нормальных средств нет и магаз далеко».
Много кнопок говоритье надо? а скомбинировать рег вывода (или счетчик) и рег ввода на 64 кнопки (80) кнопок и 4 проводка управления? Не, я понимаю — глопость сморозил, конечно 3 проводка круче, а 4 отстой.
А не подумал использовать MBI5026 или SCT2026?.. Это тот-же 595 только на 16 выходов и с токовыми драйверами до 60мА, то есть одна заменяет 595 и все выходные резисторы… Да и работает лучше, и яркость стабильная-и на входах триггеры шмидта помехоустойчивости добавляют если чипов много и линия длиная…
Опрос кнопок — извращение какое-то. нарастить то можно, но юзабилити вызывает сомнения. и диодов много :)
Да, еще. диоды нужны на каждой кнопке, иначе будут ловится ложные срабатывания. так при нажатии кнодок Q1.SI и Q4.SI Q4.SCL при низком уровне на Q1 мы читаем что нажаты кнопки Q1.SI и Q1.SCL. Ну и просто при нажатии SI и SCL кномок одного вывода Q будет замыкание выводов SI и SCL даже в Z состоянии.
Да, еще. диоды нужны на каждой кнопке, иначе будут ловится ложные срабатывания. так при нажатии кнодок Q1.SI и Q4.SI Q4.SCL при низком уровне на Q1 мы читаем что нажаты кнопки Q1.SI и Q1.SCL. Ну и просто при нажатии SI и SCL кномок одного вывода Q будет замыкание выводов SI и SCL даже в Z состоянии.
А по току хватает? Кристалл 74595 же не более 70мА тянет в целом и не более 25мА на ногу исходя из ДШ. Тут получается, что строки коммутируются транзистором, а столбы уже лишь ногой 595-ого. И через нее может течь ток пяти светиков, а это уже больше чем может вся микросхема в целом. Или я че то не догоняю? К тому же яркость в строке будет обратно пропорциональна числу зажженных светиков.
Абсолютно прав. Я поделил на секции по 6 матриц на транзистор, так нормально. А так лучше через буферные элементы, иначе будет варьироваться яркость в зависимости от числа заженных элементов. Схему я запостил с чисто ознакомительной целью. Я вообще из тех, кто сначала сляпает, а потом уж схемы рисует… Все из головы беру, даже когда печатную плату рисую )))
На самом деле, как я писал выше, у меня нет никаких буферных элементов, просто разделено на 3 группы по 6 анодов на транзистор, т.е. несколько каскадом транзисторов используются. И ничего, уже почти год непрерывной работы, не греется, не сгорает и т.д.))) Да, в темноте заметны перепады яркости, но это уж все зависит от степени педантизма, кому-то важно, кому-то пофиг :)
Я вот тут тоже решил сделать часы, хочу задействовать элементы из набора семлов от NXP с I2C. Там часы-календарь есть. Такой вопрос, как вы выводили в сдвиговые регистры информацию с одной ноги, какой алгоритм?
Не совсем понял вопрос, но если про 595ые регистры — то 3 ноги используется, данные, строб и защелка. Подготавливается бит данных, выводится, делается перепад на стробе, затем все повторяется пока не заполнится вся секция, после чего делается перепад на защелке и информация появляется на выводах регистров.
Это то понятно, какие действия в контроллере производились? Извлекается байт, потом маскируется потом вдвигаться или как?
У схемоты яркость будет никакая, тем более при динамической индикации, можно впихивать большие токи, тогда нужны в столбцы нпн транзисторы или н-канальные мосфеты. Если грузить биты (байты) в столбцы то дутый цикл будет 1/кол-во строк, если грузить биты (байт) в строки то цикл будет 1/кол-во столбцов. Про токи, чтобы долбило в глаза надо следующее. Допустим имеем 10 матриц 8*8, в одном случае при цикле 1/8, надо вкачать в строки 20мА*8=160мА (в другом 1/80, 20мА*80=1600мА). У каждого способа, есть свои плюсы и минусы.
Думаю, тут удобнее всего применить специально приспособленные для этого «цифровые» транзисторы, у которых нужные резисторы есть уже прямо в пузе. Их до хрена всяких разных, в своих конструкциях я использую PADT114 с разными буквенными индексами (смотря какой корпус нужен — SOT-23 или SOT-323).
У вас там 13 индикаторов по 5 светодиодов в столбце по 20мА потребления каждый. Получается 13*5*20 = 1300мА должен пропустить транзистор через себя. Вот смотрю я в табличку www.5v.ru/ds/trnz/kt361.htm и не понимаю, как же так! Прояснить можете?
- RuslanPopov
- 20 ноября 2013, 12:35
- ↑
- ↓
Вопрос повторяется, в комментах уже обсуждалось:
Я поделил на секции по 6 матриц на транзистор, так нормально.… Схему я запостил с чисто ознакомительной целью.
Проблем не наблюдается. А вообще, выбор транзисторов сейчас велик, поэтому можнго подобрать не только по параметрам, а по размеру, цвету и т.д. :)
Я поделил на секции по 6 матриц на транзистор, так нормально.… Схему я запостил с чисто ознакомительной целью.
Проблем не наблюдается. А вообще, выбор транзисторов сейчас велик, поэтому можнго подобрать не только по параметрам, а по размеру, цвету и т.д. :)
Всё равно не получается. Матриц 13, ровно на 6 это число не делится.
Даже шесть матриц по 5 светодиодов — это 30 * 20мА = 600мА, получается на порядок больше, чем может пропустить транзистор.
Даже шесть матриц по 5 светодиодов — это 30 * 20мА = 600мА, получается на порядок больше, чем может пропустить транзистор.
- RuslanPopov
- 21 ноября 2013, 12:32
- ↑
- ↓
Эта схема дана как пример, чтобы было понятно о чем речь.
На данный момент у меня 4 каскада — 3 по 6 матриц + 1 по 7. Ни одного транзистора не пострадало :) И вообще, у совковых транзисторов предельные эксплуатационные данные гораздо выше номинальных.
На данный момент у меня 4 каскада — 3 по 6 матриц + 1 по 7. Ни одного транзистора не пострадало :) И вообще, у совковых транзисторов предельные эксплуатационные данные гораздо выше номинальных.
Получается, обычным биполярником можно обойтись, к примеру MMBT2222 спокойно держит 600мА. Неплохо.
- RuslanPopov
- 22 ноября 2013, 20:14
- ↑
- ↓
Этот регистр на работе мы использовали в паре с tpic595 для управления светодиодной матрицей. Экспериментально установили, что 74hc целую строку засвечивать не мог без сильной просадки напражения, а tpic мог. Для него в даташите есть пиковые импульсные значения, можно прикинуть:
Pulsed source-to-drain diode anode current (see Note 3) — 1 A
NOTES: 3. Pulse duration ≤ 100 µs and duty cycle ≤ 2%.
Pulsed source-to-drain diode anode current (see Note 3) — 1 A
NOTES: 3. Pulse duration ≤ 100 µs and duty cycle ≤ 2%.
Интересно, автор сам проверял свою схему опроса кнопок?
Ок, но автор не учёл один нюанс. Чтобы перевести выходы в Z-состояние на OE нужно подать инвертированный сигнал PCL, поскольку у входа OE активный уровень LOW. А это в свою очередь потребует добавить в схему инвертор.
Вот тут все будет совсем наоборот. Низкий уровень на PCL/OE согласно приведённой схеме, подключит выходы storage-регистра к выводам Q0..Q7, и затем, в зависимости от состояний кнопок, в shift-регистр попадет рандомный мусор.
А чтобы выходные данные регистра не мешали его программированию их нужно перевести в Z-состояние. А управлять Z-состоянием можно тем же выводом PCL, ведь он не нужен пока мы работаем с последовательным вводом данных.
Ок, но автор не учёл один нюанс. Чтобы перевести выходы в Z-состояние на OE нужно подать инвертированный сигнал PCL, поскольку у входа OE активный уровень LOW. А это в свою очередь потребует добавить в схему инвертор.
Если в последовательности действий, то так:
1) Подаем низкий уровень на PCL/Z (Выводы регистра переходят в Z)
Вот тут все будет совсем наоборот. Низкий уровень на PCL/OE согласно приведённой схеме, подключит выходы storage-регистра к выводам Q0..Q7, и затем, в зависимости от состояний кнопок, в shift-регистр попадет рандомный мусор.
Комментарии (69)
RSS свернуть / развернуть