1-Wire DS2408: Некоторые наброски (клавиатура 8x8 и дисплей)

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Аватара пользователя
Paguo-86PK
Опытный кот
Сообщения: 811
Зарегистрирован: Чт авг 19, 2010 23:49:19
Откуда: Ташкент
Контактная информация:

1-Wire DS2408: Некоторые наброски (клавиатура 8x8 и дисплей)

Сообщение Paguo-86PK »

В datasheet к DS2408 имеются примеры схем организации клавиатур 4x4 и 3x5. А можно ли расширить количество кнопок до 32?
Вот схема:Изображение
Работает так:
1) P0-P3 настраиваются на вывод, P4-P7 - на ввод;
2) В цикле на P0-P3 выдаётся бегущий 0, проходящий через диоды к Q1-Q4;
3) Опрашивается состояние первых 16 кнопок через возврат R5-R8 к P4-P7;
4) P0-P3 настраиваются на ввод, P4-P7 - на вывод;
5) В цикле на P4-P7 выдаётся бегущий 0, проходящий через диоды к Q5-Q8;
6) Опрашивается состояние других 16 кнопок через возврат R1-R4 к P0-P3.

Таким образом, вместо предельного количества до 16 кнопок достигается до 32.
Но, будет ли работать вообще такое включение в схеме с паразитным питанием?
Вложения
DS2408kb.gif
DS2408 key board for 32 buttons
(3.1 КБ) 2209 скачиваний
Последний раз редактировалось Paguo-86PK Вс апр 10, 2011 00:47:06, всего редактировалось 4 раза.
Реклама
Аватара пользователя
asteroid7
Опытный кот
Сообщения: 703
Зарегистрирован: Вс янв 18, 2009 21:12:49

Re: 1-Wire: Некоторые наброски

Сообщение asteroid7 »

Не будет работать. Тем более бегущим нулём...
Нарисуйте упрощённую схему на 4 кнопки с 2-мя портами. Увидите, 3 опрашиваются, а 4-ая нет.

Есть вариант сделать 32 на матрице 4х4. К каждой кнопке последовательно диод. В перекрестие матрицы 2 кнопки включаются встречно-параллельно. Управляющая единица. За два такта можно опросить 4 кнопки.
И да, нажимать по одной. Сразу несколько - схема не перенесёт...
Реклама
Аватара пользователя
ChipKiller
Сверлит текстолит когтями
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

Re: 1-Wire: Некоторые наброски

Сообщение ChipKiller »

Paguo-86PK писал(а):А можно ли расширить количество кнопок до 32?
...может так - P0-P2 настраиваются на вывод, P3-P7 - на ввод, к P0-P2 подключаем дешифратор 3х8 (например 555ид4, 555ид7). Получаем клавиатуру 8х5 (40 кнопок)
Аватара пользователя
Paguo-86PK
Опытный кот
Сообщения: 811
Зарегистрирован: Чт авг 19, 2010 23:49:19
Откуда: Ташкент
Контактная информация:

1-Wire: Некоторые наброски

Сообщение Paguo-86PK »

asteroid7 писал(а):Есть вариант сделать 32 на матрице 4х4. К каждой кнопке последовательно диод. В перекрестие матрицы 2 кнопки включаются встречно-параллельно. Управляющая единица. За два такта можно опросить 4 кнопки.
И да, нажимать по одной. Сразу несколько - схема не перенесёт...
Т.е. примерно с таким включением(как в игре "Крестики-Нолики")?
Изображение
ChipKiller писал(а):...может так - P0-P2 настраиваются на вывод, P3-P7 - на ввод, к P0-P2 подключаем дешифратор 3х8 (например 555ид4, 555ид7). Получаем клавиатуру 8х5 (40 кнопок)
Я бы с удовольствием так и поступил бы! Но, сейчас XXI век и хотелось бы одним чипом решить всю задачу :)))
Вложения
DS2408kb.1.gif
Dallas DS2408 for scan 32 buttons - v.#2
(2.67 КБ) 2183 скачивания
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
ChipKiller
Сверлит текстолит когтями
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

Re: 1-Wire: Некоторые наброски

Сообщение ChipKiller »

Paguo-86PK писал(а):Я бы с удовольствием так и поступил бы! Но, сейчас XXI век и хотелось бы одним чипом решить всю задачу :)))
ну не знаю нужен-ли такой "аскетизм" - ИМХО простота превыше всего :)
Реклама
Аватара пользователя
Paguo-86PK
Опытный кот
Сообщения: 811
Зарегистрирован: Чт авг 19, 2010 23:49:19
Откуда: Ташкент
Контактная информация:

1-Wire: Некоторые наброски

Сообщение Paguo-86PK »

ChipKiller писал(а):ну не знаю нужен-ли такой "аскетизм" - ИМХО простота превыше всего :)
Стоп! :kill:
Я же специально пытаюсь обойтись без сторонней логики, чтобы не питать её. А с ИД7 надо будет питание предусмотреть. Иначе на кой мне 1-Wire? :shock:
С таким же успехом я бы мог пользоваться 555ИР8 в сочетании с 555ИР9: Идеально подходят для сканирования клавиатуры по пяти проводам (шнур от джойстика Dendy).
Так что, мне надо без всяких довесок. Чтобы без внешних элементов питания. Думаю, как вариант, можно две DS2408 использовать. Одна - на вывод, вторая - на ввод. Получится 8x8 клавиш. Что в моём случае слишком много.
Реклама
Аватара пользователя
asteroid7
Опытный кот
Сообщения: 703
Зарегистрирован: Вс янв 18, 2009 21:12:49

Re: 1-Wire: Некоторые наброски

Сообщение asteroid7 »

Paguo-86PK писал(а):Т.е. примерно с таким включением...
Ага.

Только, за два раза опрашиваются 4-е кнопки. Для опроса всей клавиатуры - 16 запросов. Шина 1W не "засрётся"? А то, если есть другие устройства на шине, им может не хватить времени на обмен. Нормальная частота сканирования кнопки - 15...35 мс.
Аватара пользователя
ChipKiller
Сверлит текстолит когтями
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

Re: 1-Wire: Некоторые наброски

Сообщение ChipKiller »

Paguo-86PK писал(а):Я же специально пытаюсь обойтись без сторонней логики, чтобы не питать её. А с ИД7 надо будет питание предусмотреть. Иначе на кой мне 1-Wire? :shock:
...пардон конечно, но в 1-ом сообщении об ограничении в питании ни слова.....
Аватара пользователя
Paguo-86PK
Опытный кот
Сообщения: 811
Зарегистрирован: Чт авг 19, 2010 23:49:19
Откуда: Ташкент
Контактная информация:

1-Wire: Некоторые наброски

Сообщение Paguo-86PK »

asteroid7 писал(а):Только, за два раза опрашиваются 4-е кнопки. Для опроса всей клавиатуры - 16 запросов. Шина 1W не "засрётся"? А то, если есть другие устройства на шине, им может не хватить времени на обмен. Нормальная частота сканирования кнопки - 15...35 мс.
Я экспериментировал и в "РАДИО-86РК", и в "ZX-Spectrum" с поиском быстрого алгоритма сканирования.
Внешне он похож на "эксперимент печатать биотоками мозга":

Код: Выделить всё

1) Сначала опрашиваем состояние всей первой половины матрицы:
1.1) Настраиваем P7..P4 на ввод и P3..P0 на вывод;
1.2) Выдаём на P3..P0 четыре единицы (1111);
1.3) Проверяем, вернулась хотя бы одна из них в P7..P4?
1.3.1) Да? Выдаём на P3..P0 старшую половину (1100);
1.3.2) Проверяем, нажато ли в P7..P4?
1.3.2.1) Да? Выдаём на P3..P0 старший бит (1000) и запоминаем P7..P4;
1.3.2.2) Сдвигаем бит на P3..P0 (0100) и запоминаем P7..P4;
1.3.3) Выдаём на P3..P0 младшую половину (0011);
1.3.4) Проверяем, есть нажатие в P7..P4?
1.3.4.1) Да? Выдаём на P3..P0 младший бит (0001) и запоминаем P7..P4;
1.3.2.2) Сдвигаем бит на P3..P0 (0010) и запоминаем P7..P4;
2) Теперь опрашиваем состояние всей второй половины матрицы:
2.1) Настраиваем P3..P0 на ввод и P7..P4 на вывод;
2.2) Выдаём на P7..P4 четыре единицы (1111);
2.3) Проверяем, вернулась хотя бы одна из них в P3..P0?
2.3.1) Да? Выдаём на P7..P4 старшую половину (1100);
2.3.2) Проверяем, нажато ли в P3..P0?
2.3.2.1) Да? Выдаём на P7..P4 старший бит (1000) и запоминаем P3..P0;
2.3.2.2) Сдвигаем бит на P7..P4 (0100) и запоминаем P3..P0;
2.3.3) Выдаём на P7..P4 младшую половину (0011);
2.3.4) Проверяем, есть нажатие в P3..P0?
2.3.4.1) Да? Выдаём на P7..P4 младший бит (0001) и запоминаем P3..P0;
2.3.2.2) Сдвигаем бит на P7..P4 (0010) и запоминаем P3..P0;
Т.е. сначала отображается одна половина "алфавита" и если "мозг" "видит" в ней нужный символ, начинается уточнение. Половина делится ещё и ещё. И т.д.
И если нажатия небыло, будет происходить всего два вывода и два ввода. :wink:
Примерно вот так:
Изображение
ChipKiller писал(а): ...пардон конечно, но в 1-ом сообщении об ограничении в питании ни слова.....
Исправил :)))
Вложения
DS2408kb.typing.gif
Keyboard scan animation
(18.95 КБ) 1806 скачиваний
Аватара пользователя
Dmitry Dubrovenko
Поставщик валерьянки для Кота
Сообщения: 2360
Зарегистрирован: Вс янв 09, 2011 16:51:39
Откуда: Санкт-Ленинград
Контактная информация:

Re: 1-Wire: Некоторые наброски

Сообщение Dmitry Dubrovenko »

Paguo-86PK писал(а):Иначе на кой мне 1-Wire?
Сорри, за оффтоп,
но я, честно говоря, вообще не вижу соответствия названия темы её содержанию.
ICQ нет, и, в ближайшее время, не будет.
Аватара пользователя
Paguo-86PK
Опытный кот
Сообщения: 811
Зарегистрирован: Чт авг 19, 2010 23:49:19
Откуда: Ташкент
Контактная информация:

1-Wire: Некоторые наброски

Сообщение Paguo-86PK »

Dmitry Dubrovenko писал(а):Сорри, за оффтоп,
но я, честно говоря, вообще не вижу соответствия названия темы её содержанию.
Дык. На данном этапе - 1-Wire клавиатура.

Вот ещё один вариант схемы подключения 64-клавишной клавиатуры 8x8 к одной микросхеме DS2408 с паразитным питанием.
Алгоритм работы следующий:
Сначала P0-P7 настраиваются на вывод и через диоды прямым током (Q1-Q8) заряжаются конденсаторы тех столбцов матрицы, которые должны участвовать в опросе.
Затем P0-P7 настраиваются на ввод и через диоды обратным током снимается состояния клавиш, подключенных к заряженным конденсаторам.
Резисторы, параллельные ёмкостям, служат их разрядке. И ёмкости, и сопротивления подобраны оптимально к жёстким временным параметрам частоты сканирования клавиатуры.
Таким образом, по аналогии с устройством динамических ОЗУ, здесь так же, в целях экономии аппаратных ресурсов, используется техника утекающего заряда.

Вот анимация:
Изображение

Видно, как сначала через P0 заряжается первый конденсатор. А потом разряжается через кнопку к P2.
Однако, как побочный эффект, напряжение поступает через кнопку и два диода также к третьему конденсатору. Как с этим быть? Может прямые диоды (Q1-Q8) пустить также через диоды, заземлённые через сопротивление? И как-то использовать STB-микросхемы для этой цели?
Вложения
DS2408kb.caps.gif
1-Wire DS2408 keyboard with capacitors
(5.79 КБ) 3413 скачиваний
Аватара пользователя
Dmitry Dubrovenko
Поставщик валерьянки для Кота
Сообщения: 2360
Зарегистрирован: Вс янв 09, 2011 16:51:39
Откуда: Санкт-Ленинград
Контактная информация:

Re: 1-Wire: Некоторые наброски

Сообщение Dmitry Dubrovenko »

Paguo-86PK писал(а):Дык. На данном этапе - 1-Wire клавиатура.
Да 1-Wire тут постольку поскольку.
Суть вопроса у Вас: "Как организовать матричную клавиатуру".
Вполне актуальная тема, только названию не соответствует. :wink:
ICQ нет, и, в ближайшее время, не будет.
Аватара пользователя
asteroid7
Опытный кот
Сообщения: 703
Зарегистрирован: Вс янв 18, 2009 21:12:49

Re: 1-Wire: Некоторые наброски

Сообщение asteroid7 »

2 Dmitry Dubrovenko!

ИМХО, одна из тем на этом форуме, где название поста полностью отражает желание ТС-а.
И 1W не "тут постольку поскольку", а именно это и есть основной вопрос, т.к. ТС-у нужен не обыденный матричный опрос клавиатуры.
Аватара пользователя
Paguo-86PK
Опытный кот
Сообщения: 811
Зарегистрирован: Чт авг 19, 2010 23:49:19
Откуда: Ташкент
Контактная информация:

1-Wire: Некоторые наброски

Сообщение Paguo-86PK »

asteroid7 писал(а):ИМХО, одна из тем на этом форуме, где название поста полностью отражает желание ТС-а.
И 1W не "тут постольку поскольку", а именно это и есть основной вопрос, т.к. ТС-у нужен не обыденный матричный опрос клавиатуры.
Не спорю.
Понимаете, с применением DS2408 для отображения информации всё более-менее понятно. В основном, так-как отдельное питание по-любому необходимо.
А вот с клавиатурой. Здесь нужно убить основного зайца, т.е. никакого дополнительного источника питания. Иначе легче пользоваться ИК-пультом.
Когда я работал ещё с РАДИО-86РК, неудобство вызывала клавиатура, так-как игры, напрямую считывающие её порты, реагировали не на те клавиши. И это послужило одним из стимулов изучать программирование и электроннику. Клавиатура была расширенная МС-подобная. А клавиш там больше. И завод-изготовитель дополнительные строки клавиш через пары диодов расширял на другие линии. Таким образом, на матрице 8x8 уместилось где-то на 20 клавиш больше. И этот опыт меня увлёк!
Так, когда я ещё занимался на ZX-Spectrum, решил джойстик от Dendy переделать под Kempston. Ну, отковырял дохлую капельку мумиё с чипом и напрямую развёл. А вот с Select и Pause кнопками не знал, что делать. И полезные, и подключить никак.
И тут я взял 4 диода и впаял их так, чтобы Select было вверх+вниз одновременно, а Pause - влево+вправо. Скажите, а толку то? Э-ээ, нет. В своих тест-программах на Бейсике и Select, и Pause работали. И в играх, во время крякинга, легко было организовать таким образом и Паузу, и нечто другое.
Я тогда подумал: Почему разработчики Dendy упустили это? Ведь Select и Pause используются крайне редко. И если бы они их реализовали по моей схеме, то освободилось бы место (бинарное) под ещё две кнопки! И было бы не две A и B, а четыре (не считая Turbo-A и Turbo-B).

Теперь понимаете, почему я так нудно занимаюсь этой клавиатурой? Даже если матрица будет 8x8=64 кнопки, в реализации их будет больше через диодные комбинации. Понимаете?
Например, наиболее редкие сочетания клавиш можно использовать под клавиши расширения.
Так, Esc+Left=Backspace или Esc+Right=Insert и т.д.

Но я увлёкся. Скажите, а если я применю КМОП-транзисторы в указанном на схеме включении, это поможет?
Изображение
И верно ли вообще? STB-микросхемы устанавливается в "0" написано при записи, что должно открыть ключи для зарядки конденсаторов. Но, во время чтения на том же выводе также появляется низкий уровень, если я верно понял. Вот никак не пойму, нельзя ли отключить смену уровней тогда при чтении? Перечитал datasheet по ds2408 вдоль и поперёк, но некоторые моменты не могу понять.

Спасибо!
Вложения
DS2408kb.caps.cmos.gif
DS2408 keyboard with capacitors & cmos
(5.27 КБ) 2625 скачиваний
Аватара пользователя
Dmitry Dubrovenko
Поставщик валерьянки для Кота
Сообщения: 2360
Зарегистрирован: Вс янв 09, 2011 16:51:39
Откуда: Санкт-Ленинград
Контактная информация:

Re: 1-Wire: Некоторые наброски

Сообщение Dmitry Dubrovenko »

Paguo-86PK писал(а):Теперь понимаете, почему я так нудно занимаюсь этой клавиатурой?
Я выше уже писАл, что тема интересна и актуальна. И против самой темы никаких возражений нет. :beer:

asteroid7 писал(а):одна из тем на этом форуме, где название поста полностью отражает желание ТС-а
Название должно отображать не желание, а содержание (прям поэт, млин). :)))
Попытаюсь объяснить "на пальцах".
Вот я сюда "залез" потому, что меня интересует тема 1-Wire. А вот про матричные клавиатуры я ничего гениального сказать не могу.
Так же, с точностью до наоборот, тот кто имеет наработки по клавиатурам "пройдёт мимо", поскольку тема 1-Wire ему "до лампочки".
:wink:
ICQ нет, и, в ближайшее время, не будет.
Аватара пользователя
Paguo-86PK
Опытный кот
Сообщения: 811
Зарегистрирован: Чт авг 19, 2010 23:49:19
Откуда: Ташкент
Контактная информация:

1-Wire: Некоторые наброски

Сообщение Paguo-86PK »

Dmitry Dubrovenko писал(а):Я выше уже писАл, что тема интересна и актуальна. И против самой темы никаких возражений нет. :beer:
asteroid7 писал(а):одна из тем на этом форуме, где название поста полностью отражает желание ТС-а
Название должно отображать не желание, а содержание (прям поэт, млин). :)))
Попытаюсь объяснить "на пальцах".
Вот я сюда "залез" потому, что меня интересует тема 1-Wire. А вот про матричные клавиатуры я ничего гениального сказать не могу.
Хорошо. Раз название темы не соответствует содержанию, надо содержание подтянуть.
Т.е. "некоторые наброски" - означает.
Набросок #2: Индикация
Итак, используя DS2408 можно подключить миниатюрный матричный четырёх разрядный индикатор ИПВ70А.
Изображение
Здесь, P0-P4 работают на вывод и выбор столбцов. P5 выводит бит смещения по строкам. P7 работает на ввод для сигнализации о конце знакомест, на случай, если микросхем-индикаторов несколько.
Соответственно, схема работает от внешнего источника питания.
Вложения
DS2408.ipv.gif
DS2408 for 7x5x4 display
(4.43 КБ) 1754 скачивания
Аватара пользователя
asteroid7
Опытный кот
Сообщения: 703
Зарегистрирован: Вс янв 18, 2009 21:12:49

Re: 1-Wire: Некоторые наброски

Сообщение asteroid7 »

Dmitry Dubrovenko писал(а):Название должно отображать не желание, а содержание (прям поэт, млин). :)))
Попытаюсь объяснить "на пальцах". Вот я сюда "залез" потому, что меня интересует тема 1-Wire...
Отсутствие понимания причинно-следственных связей делают вам огроменный минус.
А то, что вас интересует - никакого отношения к этой теме не имеет.
Аватара пользователя
Dmitry Dubrovenko
Поставщик валерьянки для Кота
Сообщения: 2360
Зарегистрирован: Вс янв 09, 2011 16:51:39
Откуда: Санкт-Ленинград
Контактная информация:

Re: 1-Wire: Некоторые наброски

Сообщение Dmitry Dubrovenko »

Разговор глухого со слепым. 8)
ICQ нет, и, в ближайшее время, не будет.
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: 1-Wire: Некоторые наброски

Сообщение dosikus »

Гы ... Если следовать логике топик стартера :
Я обзову тему : "Работаем с Ethernet " .
И начну ковырять АЦП в PIC18FxxJ60 .
И буду прав ???? Ну как же Ethernet там есть... :)))
Аватара пользователя
asteroid7
Опытный кот
Сообщения: 703
Зарегистрирован: Вс янв 18, 2009 21:12:49

Re: 1-Wire: Некоторые наброски

Сообщение asteroid7 »

Dmitry Dubrovenko писал(а):Разговор глухого со слепым. 8)
Возможно, вы измените свое мнение... в будущем... если захотите...

---

В 1-wire на физическом уровне скорость, времянки и уровни - константы. Электрически - 2(3) провода и резистор. Про шину и протокол 1-wire это всё!
Не понимаю, что тут можно ещё обсасывать. Светофор сложнее.

Работа с 1-wire на 99% состоит из составлении программы транспортного уровня и взаимодействия с этой программой железа.

Исходя из сообщений уверен, что многие не понимают проблему ТС-а. Это не просто "гонка фронтов" или вычисление времён защёлкивания. В данном случае, нужно учитывать ёмкости диодов и токи утечек.

блин, да кому я это пишу...
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»