Из 2х нибблов 1 байт
- Сообщения: 81
- Зарегистрирован: Сб мар 17, 2012 19:45:46
Помогите разобраться. Мне нужно загрузить в сдвиговый регистр 8 разрядный код с 16 кнопочной клавиатуры. Идея заключалась в следующем: нажимаем одну за одной 2 кнопки и по 4 разряда защелкиваем в триггерах и затем загружаем в 8 разрядный регистр ( в схеме не показан 155 ИР13) . В схеме применены регистры 155ТМ7, в переключателе разрешения записи 561ТМ2. Может кто-нибудь сталкивался с такой задачей. У меня ничего не получается. Прилагаю макет схемы в Протеусе.
- Реклама
Есть такие микрушки - К155ИВ1(M74HC148), К155ИВ3...
Используй готовые решения по возможности.

Используй готовые решения по возможности.
- Сообщения: 81
- Зарегистрирован: Сб мар 17, 2012 19:45:46
Прежде всего спасибо за отклик. Этот вариант исключается. Кодер делается на диодах за неимением микрушек. Вопрос не в кодировании, а в реализации алгоритма преобразования 2х нибблов в байт. Кратко перефразировав нужно примерно так: защёлкнуть в 1м триггере, защёлкнуть во 2 м триггере, снять байт, сбросить триггера ( или перевести в зет на выходах), и опять всё сначала - защёлкнуть ...BOB51 писал(а):Есть такие микрушки - К155ИВ1(M74HC148), К155ИВ3...
Используй готовые решения по возможности.
Готовых решений не нашёл, но поверьте искал добросовестно, поэтому я здесь.
Где-то сдвиговый регистр, что-то там делают 2 кнопки которых нет...
Из того что понял вот переделал.
Имейте в виду, что применены прозрачные защелки. Для нормальной работы может потребоваться перейти на многоступенчатую схему защелкивания:
1) разрешение/установка данных 1
2) защелкивание 1
3) разрешение 2
4) защелкивание 2
Из того что понял вот переделал.
Имейте в виду, что применены прозрачные защелки. Для нормальной работы может потребоваться перейти на многоступенчатую схему защелкивания:
1) разрешение/установка данных 1
2) защелкивание 1
3) разрешение 2
4) защелкивание 2
- Вложения
-
- РегФайл.zip
- (15.09 КБ) 128 скачиваний
Тогда надо вспомнить о том, что существуют системы с распределенным тактированием соответствующих узлов схемы.дидя писал(а):Вопрос не в кодировании, а в реализации алгоритма преобразования 2х нибблов в байт. Кратко перефразировав нужно примерно так: защёлкнуть в 1м триггере, защёлкнуть во 2 м триггере, снять байт, сбросить триггера ( или перевести в зет на выходах), и опять всё сначала - защёлкнуть ...
Готовых решений не нашёл, но поверьте искал добросовестно, поэтому я здесь.
Ставим тактовый генератор, счетчик-дешифратор и импульсами с дешифратора тактируем последовательно каждую зону.
- Реклама
- Сообщения: 81
- Зарегистрирован: Сб мар 17, 2012 19:45:46
Уважаемый uk8amk. Благодаою за отклик. В целом наши мысли совпадают. Беда в том, что я плохо ориентируюсь а Протезе. Но ваша мысль мне понятна. Я немного изменил предложенный вами
вариант схемы. Я перенёс индикаторы выходов на неинвертирующие выходы ( так легче сравнивать
вход и выход). В добавленный вами второй 4013 я внёс изменения - перенёс вход от кнопки на
выход первого 4013 и соединил D с инвертирующим выходом. Появилось какое-то третье состояние,
индицирующееся желтым цветом, но ведущее себя как лог. единица. Рамышляя и анализируя пришел к такому алгоритму:
Начало ( на входах и выходах обоих триггеров 0000), нажимаем одну кнопку
(задаём код, например 1001) положительным перепадом на Е1 записывается код в 1й триггер,
отпускаем кнопку,отрицательным перепадом на Е1 (лог 0) первый триггер защёлкивает на своём
выходе код (1001).
Нажимаем вторую кнопку ( задаем код, например 0110) положительным перепадом на Е2 записывается этот код во второй триггер, при этом на разрешающем входе Е1
сохраняется лог.0, при отпускании второй кнопки на входе разрешения Е2 устанавливается лог0.
Во втором триггере защёлкивается код 0110 (код второй кнопки) при этом и на Е1 и Е2 должны
быть лог0. Далее будет идти считывание байта с выходов защёлок ( в нашем примере 1001 0110) в сдвиговый регистр и дальше будет повтряться этот алгоритм сначала и следующий байт будет
загружен в сдвиговый регистр и т. д. до бесконечности. PS. Здесь не поняли описание 2х кнопок. Поясняю, кнопок 16 ( коды от 0000 до FFFF) Что бы получить 1 байт нужно последовательно нажать 2 кнопки ( любые) и потом этот байт загрузить в сдвиговый регистр.
вариант схемы. Я перенёс индикаторы выходов на неинвертирующие выходы ( так легче сравнивать
вход и выход). В добавленный вами второй 4013 я внёс изменения - перенёс вход от кнопки на
выход первого 4013 и соединил D с инвертирующим выходом. Появилось какое-то третье состояние,
индицирующееся желтым цветом, но ведущее себя как лог. единица. Рамышляя и анализируя пришел к такому алгоритму:
Начало ( на входах и выходах обоих триггеров 0000), нажимаем одну кнопку
(задаём код, например 1001) положительным перепадом на Е1 записывается код в 1й триггер,
отпускаем кнопку,отрицательным перепадом на Е1 (лог 0) первый триггер защёлкивает на своём
выходе код (1001).
Нажимаем вторую кнопку ( задаем код, например 0110) положительным перепадом на Е2 записывается этот код во второй триггер, при этом на разрешающем входе Е1
сохраняется лог.0, при отпускании второй кнопки на входе разрешения Е2 устанавливается лог0.
Во втором триггере защёлкивается код 0110 (код второй кнопки) при этом и на Е1 и Е2 должны
быть лог0. Далее будет идти считывание байта с выходов защёлок ( в нашем примере 1001 0110) в сдвиговый регистр и дальше будет повтряться этот алгоритм сначала и следующий байт будет
загружен в сдвиговый регистр и т. д. до бесконечности. PS. Здесь не поняли описание 2х кнопок. Поясняю, кнопок 16 ( коды от 0000 до FFFF) Что бы получить 1 байт нужно последовательно нажать 2 кнопки ( любые) и потом этот байт загрузить в сдвиговый регистр.
Последний раз редактировалось дидя Пт июн 12, 2015 12:54:57, всего редактировалось 1 раз.
- Сообщения: 81
- Зарегистрирован: Сб мар 17, 2012 19:45:46
Это уже ближе к делу. Схемку не набросаете? А может отказаться от параллельного ввода? Взять, например, четырёхразрядный сдвиговый регистр 155ИР1, нажав первую кнопку, загнать 4 разряда этой кнопки, за 4 такта сдвинуть код в 8 разрядный 155ИР13, затем второй кнопкой загнать 4 разряда и также за следующих 4 такта сдвинуть, при этом в 8 разрядном регистре и будет 8 бит. Или я где-то ошибаюсь?BOB51 писал(а): Ставим тактовый генератор, счетчик-дешифратор и импульсами с дешифратора тактируем последовательно каждую зону.
Это классический цифровой автомат - прототип любого МК.
Насчет схемки... вломушки...А древние самочерченные на бумаге уже подзатерялись.
Читаньки:
Потёмкин И.С.
Функциональные узлы цифровой автоматики.
М.: Энергоатомиздат, 1988год.
В частности "глава 7. Система синхронизации."

Насчет схемки... вломушки...А древние самочерченные на бумаге уже подзатерялись.
Читаньки:
Потёмкин И.С.
Функциональные узлы цифровой автоматики.
М.: Энергоатомиздат, 1988год.
В частности "глава 7. Система синхронизации."
- Сообщения: 81
- Зарегистрирован: Сб мар 17, 2012 19:45:46
BOB51 Спасибушки за подсказку. Поищу Потёмкина. Вспоминаю далёкие 70 е Киевский политех, делал на раз комбинационные схемы, составлял уравнения, карты Карно а сейчас подзабыл, 40 лет прошло...
Борьба с дребезгом как-то предусмотрена? А то наштампуется куча байт с кодом одной и той же кнопки.
Мне решение вашей задачи видится как-то так:

Мне решение вашей задачи видится как-то так:
- Вложения
-
- 2nibbles2byte.gif
- (10.33 КБ) 543 скачивания


