Белов, А.В. Микроконтроллеры AVR: от азов программирования до создания практических устройств
Шаг 5. Переходим непосредственно к разработке устройств и программ 255 ков для каждого разряда порта PD должны быть активизированы встро енные резисторы нагрузки. Для подключения звукоизлучателя (динамика) применяется ключе вой каскад на транзисторе VT1. Это самый простой способ получить звук достаточной громкости, учитывая, что наш сигнал — это прямоугольные импульсы с амплитудой, почти равной напряжению питания. Транзисторный каскад нужен лишь для повышения нагрузочной способности. Однако подобная схема имеет и свой недостаток. В отсутствие звуко вого сигнала на выходе 15 микроконтроллера обязательно нужно уста новить низкий логический уровень. Высокий логический уровень при ведет к тому, что транзистор VT1 будет постоянно открыт. Это вызовет недопустимо большой ток через головку VF1. Постоянно протекающий ток через обмотку динамика вызовет излишнюю потерю мощности и может даже вызвать выход из строя как транзистора, так и динамика. При составлении программы мы должны учесть этот момент. Алгоритм На первый взгляд алгоритм такого устройства очень простой. При замыкании контактов любого из датчиков микроконтроллер должен загрузить в регистр совпадения нужный коэффициент и подключить выход таймера к выводу ОС1В. При размыкании контактов датчика микроконтроллер должен отключить сигнал от внешнего вывода ОС1В и подать на него низкий логический уровень. Если контакты всех датчиков разомкнуты, то внешний вывод должен оставаться отключенным. Однако схема построена таким образом, что ничто не мешает одновре менно замкнуться сразу нескольким контактам. Возникает вопрос: что делать в этом случае? Самый правильный ответ — обеспечить систему приоритетов. При замыкании нескольких контактов программа должна реагировать лишь на один из них. На тот, приоритет которого выше. Обычно в таких случаях используется следующий прием. Программа поочередно проверяет состояние всех датчиков, например, справа налево. Обнаружив первый же замкнутый контакт, программа прекра щает сканирование и выдает звуковой сигнал, соответствующий этому датчику. Договоримся, что датчику, подключенному к входу PD.0, будет соот ветствовать нота «До». Следующему датчику — нота «Ре», и так далее до ноты «Си». Коэффициенты деления для каждой из нот выбираются по законам музыкального ряда. Подробнее о выборе коэффициентов деле ния для синтезатора музыкального ряда можно узнать из [6].
Made with FlippingBook
RkJQdWJsaXNoZXIy MTExODQxMg==