Дистанционное управление для компьютера

Журнал "Радио", номер 8, 1999г.
Автор: С. Кулешов, г. Курган

    Описываемый простой приемник ИК излучения и небольшая программа-драйвер позволяют компьютеру "понимать" команды, подаваемые с пульта дистанционного управления (ПДУ) от обычного телевизора. Как использовать эту возможность, предоставляем решить читателю. Это может быть дистанционное управление программой проигрывателя музыкальных компактдисков, беспроводный джойстик для компьютерных игр и многое другое.

    Принципиальная схема встраиваемого в компьютер приемника ИК сигналов дистанционного управления приведена на рис. 1. Принятые фотодиодом VD1 импульсы поступают на вход микросхемы DA1, которая фильтрует их и усиливает. Выходной сигнал через инвертор DD1.1 поступает на вход IRQ10 шины ISA компьютера. Каждый его нарастающий фронт компьютер воспринимает как запрос прерывания и обрабатывает его, вызывая процедуру, находящуюся по адресу, указанному в векторе прерывания 72H. Длительность импульсов, посылаемых ПДУ, достаточна для реакции процессора на прерывание и дополнительно "растягивать" их не требуется.

    Приемник смонтирован на двух печатных платах. На первой (рис. 2) установлены фотодиод VD1, микросхема DA1, конденсаторы C1-C4 и резистор R1. Ее размещают на лицевой панели внутри системного блока компьютера (способ крепления значения не имеет), закрыв металлическим экраном, соединенным с общим проводом. Напротив фотодиода VD1 в корпусе компьютера сверлят отверстие для прохода ИК лучей, которое можно закрыть светофильтром из красного органического стекла.

    На второй плате (рис.3) монтируют микросхему DD1 и конденсаторы C5, C6. Необходимо как можно точнее выдержать длину платы (48 мм) и указанные на рисунке расстояния контактных площадок от ее левого края. Это обеспечит надежное соединение приемника с компьютером. Плату вставляют в дополнительную (короткую) часть любого свободного ISA-слота таким образом, чтобы стрелка на ней была направлена в сторону лицевой панели. Одноименные контактные площадки 1-3 обеих плат соединяют между собой ленточным кабелем или жгутом из трех обычных проводов.

    Платы рассчитаны на установку оксидных конденсаторов К50-35, К50-16, керамических К10-17 или любых других малогабаритных, резистора МЛТ-0,125. Микросхему К1056УП1 (DA1) можно заменить на КР1084УИ1 или импортную TBA2800 (с учетом различий в цоколевке). В качестве элемента DD1.1 пригоден любой инвертор с открытым коллектором. Налаживания приемник не требует, но иногда бывает полезно подобрать конденсатор C3, добиваясь максимальной дальности действия.

    В таблице приведен исходный текст программы RCU.COM - драйвера ПДУ на микросхеме КР1506ХЛ1 для телевизоров 3УСЦТ, описанного в книге Ельяшкевича С. А. "Цветные стационарные телевизоры и их ремонт" (М.: Радио и связь, 1980). При нажатии любой кнопки пульт передает серию из 14 ИК-импульсов, длительностями интервалов между которыми закодирована посылаемая команда. Приемник может работать и с другими, в том числе импортными ПДУ, но для них придется написать соответствующий драйвер.

    RCU.COM работает с операционной системой MS DOS и загружается в память компьютера резидентно, позволяя прикладным программам получать и выполнять команды, посылаемые с пульта. Программа состоит из трех частей. Первая, начинающаяся меткой init, выводит на экран сообщение о загрузке драйвера, инициализирует обработчики прерываний и оставляет их резидентными в памяти.

    Вторая часть - обработчик аппаратного прерывания IRQ10, которому соответствует вектор 72H. Компьютер выполняет ее после приема от ПДУ каждого импульса, заполняет буфер buf последовательностью значений длительности интервалов между импульсами и считает их. Приняв всю серию, обработчик выставляет в ячейке pe флаг готовности кода.

    Для того чтобы получить принятую команду, прикладная программа должна вызвать программное прерывание 2FH. Именно его обрабатывает третья часть рассматриваемого драйвера. В зависимости от кода, загруженного в регистр AX перед вызовом, она работает по разному.

    Свою основную функцию это прерывание выполняет при вызове с кодом 0E401H. В регистре DX оно возвращает прикладной программе принятый код, а в AX - флаг его готовности. Нулевое значение флага готовности говорит о том, что с момента последнего вызова прерывания новой команды принято не было и кодом в DX пользоваться нельзя. Флаг, равный 1, свидетельствует о приеме команды и необходимости прочитать из DX и сохранить ее код. Сделать это нужно обязательно, так как до следующего вызова код может измениться.

    Вызов с кодом 0E400H служит для проверки, загружен ли в ОЗУ драйвер ПДУ. Если да, в регистре AX будет возвращен код 0E4FFH. Вызов прерывания 2FH с другими кодами приводит к исполнению "старого" обработчика, действовавшего до загрузки программы RCU.COM.







Рекомендуемый контент




Copyright © 2010-2017 housea.ru. Контакты: info@housea.ru При использовании материалов веб-сайта Домашнее Радио, гиперссылка на источник обязательна.