![]() |
Модераторы: PILOT, ManiaK, Mazzi |
![]() ![]() ![]() |
|
Jead |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
Доброе время суток!
Очень нужна помощь, подсказка.. Хотя бы направление. В общем у нас имеется модуль ввода вывода, который содержит в своем составе четыре кнопки и четыре светодиода. Свечениe светодиода обеспечивается в том случае, если в соответствующем разряде модуля (D7...D4) имеет место логическая единица. Нажатие любой кнопки приводит к формированию логической единицы на линии, связанной с кнопкой (D3...D0). Структурная схема модуля. ![]() И требуется обеспечить при отпущенных кнопках S1, S2 и S3 свечение светодиода VD1. При нажатии любой (одной) из кнопок свечение светодиода VD2. При нажатии любой пары кнопок свечение светодиода VD3. В случае одновременного нажатия трех кнопок должен гореть светодиод VD4. О программировании говорить еще пока рано. В общем я составил структурную схему подсистемы, которая выглядит так. ![]() Дальше требуется составить алгоритм решения задачи, а вот тут-то и наступает ступор. До этого писал алгоритмы всего пару раз, и то абсолютно несерьезные. Можете помочь с этим делом? Насколько я понял для реализации надо использовать сумматор. Составил первые два пункта, а дальше проблемы Включение - Запись логической единицы в порт Р1.3 - Дело доходит до сумматора и я теряюсь. Очень надеюсь на понимание и помощь.. Это сообщение отредактировал(а) Jead - 31.10.2011, 00:05 |
|||
|
||||
1Smex |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 31.10.2011 Репутация: нет Всего: нет |
А использование модуля ввода-вывода критично?
Если можно обойтись без него предлагаю реализовать устройство на обычной дискретной логике И-ИЛИ-НЕ. Если использование модуля критично - думаю, все проще в плане алгоритма "если тако-то порт = 1", то "вывести 1 в такой-то порт". |
|||
|
||||
Jead |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
Да, критично. Немного не понял Ваше предложение. Как я себе представляю работу программы - сумматор считывает количество импульсов на трех выводах с кнопок. Если импульсов нет (кнопки не нажаты) зажигается первый с-диод. Если импульс один (1 кнопка нажата) загорается второй с-диод, если 2 - третий, если три - четвертый. Просто не знаю как написать алгоритм именно перед сумматором. После - более менее понятно, что надо делать проверку на равность нулю, единице, двум и трем..
|
|||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: нет Всего: 101 |
надо составить таблицу истинности, из нее и будет следовать программная или аппаратная реализация
по условию: VD1 = NOT (S1 OR S2 OR S3) VD2 = S1 OR S2 OR S3 OR S4 VD3 = (S1 AND (S2 OR S3 OR S4)) OR (S2 AND (S1 OR S3 OR S4)) OR (S3 AND (S1 OR S2 OR S4)) VD4 = (S1 AND S2 AND S3) OR (S1 AND S2 AND S4) OR (S2 AND S3 AND S4) OR (S1 AND S3 AND S4) Добавлено через 1 минуту и 34 секунды никакие сумматоры Вам не нужны, не усложняйте |
|||
|
||||
1Smex |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 31.10.2011 Репутация: нет Всего: нет |
Алгоритм заранее нам известен - компьютер тут не нужен, можно обойтись и цифровым автоматом (Мура или Мили).
Суть я понял. Не понимаю только, зачем тут модуль ввода-вывода. Если он тут стоит, значит, и управлять должен он. Разве нет? И какой алгоритм можно написать для сумматора, я тоже не совсем понял. Это сообщение отредактировал(а) 1Smex - 31.10.2011, 01:32 |
|||
|
||||
Jead |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
Ну, как бы, у нас лабораторная работа именно по модулям ввода-вывода, поэтому они и присутствуют.
Дальше, я тоже задумывался по поводу таблицы истинности, и даже составлял ее, но у нас строгий преподаватель, должно быть ТОЛЬКО так, как он скажет =( Т.е. нужен сумматор, и четкий алгоритм, со всеми стрелками, правильными элементами ромбами и т.д.. |
|||
|
||||
1Smex |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 31.10.2011 Репутация: нет Всего: нет |
Ну тогда собираешь по схеме ниже и далее обрабатываешь комбинации сигналов на выходе логикой (составить таблицу истинности).
Я других решений не нашел, хотя использование сумматоров - уже извращение. Присоединённый файл ( Кол-во скачиваний: 5 ) ![]() |
|||
|
||||
1Smex |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 31.10.2011 Репутация: нет Всего: нет |
На выходе можно дешифратор поставить, тогда в зависимости от суммируемого числа, будет дергаться соответствующая нога, к ней и цеплять диод.
А со съхемой я налажал третий сумматор убрать нафиг и тогда можно обойтись без таблицы истинности. Это сообщение отредактировал(а) 1Smex - 31.10.2011, 02:17 |
|||
|
||||
Jead |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
||||
|
||||
![]() ![]() ![]() |
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)" | |
|
На данный раздел помимо Правил форума распространяются текже следующие правила:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |