.

Разработка инфракрасного пульта и приемника дистанционного управления

Язык: русский
Формат: дипломна
Тип документа: Word Doc
0 6256
Скачать документ

Содержание

Перечень условных обозначений, символов, единиц, сокращений и терминов
Введение
1 Теоретические основы разработки
1.1 Разработка микропроцессорной системы на основе микроконтроллера
1.2 Пульт дистанционного управления на ИК лучах
1.2.1 История дистанционного управления
1.2.2 Каналы связи для дистанционного управления
1.2.3 Устройство бытовых ПДУ
1.2.4 Принцип действия ПДУ
1.3 Протокол RC-5
2 Разработка ИК пульта и приемника дистанционного управления
2.1 Постановка задачи
2.2 Разработка структурной схемы устройства и функциональной спецификации
2.3 Аппаратные средства микроконтроллеров серии PIC12F629/675
2.4 Разработка функциональной схемы устройства
2.5 Разработка алгоритма управления
2.6 Разработка программного обеспечения микроконтроллера
2.7 Выбор, описание и расчеты элементной базы
2.8 Разработка схемы электрической принципиальной
3 Технико-экономическое обоснование объекта разработки
3.1 Расчет расходов на ПО, которое разрабатывается
3.2 Расчет расходов на создание ПО
3.3 Расчет стоимости разработки конструкторской документации и сборки устройства
3.4 Расчет расходов на стадии производства изделия
3.5 Анализ устройств-аналогов
4 Охрана труда
4.1 Требования к производственным помещениям
4.2 Эргономические требования к рабочему месту
4.3 Режим труда
4.4 Расчет освещенности
4.5. Расчет вентиляции
4.6 Расчет уровня шума
Выводы
Перечень ссылок
Приложения

Перечень условных обозначений, символов, единиц, сокращений и терминов

ИК – инфракрасный
ИКИ – инфракрасный излучатель
ИКП – инфракрасный приемник
ДУ – дистанционное управление
КПК – карманный персональный компьютер
МК – микроконтроллер
МПС – микропроцессорная система
ОЗУ – оперативное запоминающее устройство
ПДУ – пульт дистанционного управления
ПЗУ – постоянное запоминающее устройство
УФ – ультрафиолетовый

Введение

Микропроцессоры и производные от них — микроконтроллеры — являются широко распространенным и при этом незаметным элементом инфраструктуры современного общества, основанного на электронике и коммуникациях. Исследования, проведенные в 2008 году, показали, что в каждом доме незаметно для нас «живет» около 100 микроконтроллеров и микропроцессоров. Они присутствуют буквально всюду: в звуковых открытках, стиральных машинах, микроволновых печах, телевизорах, телефонах, персональных компьютерах и разных других устройствах. Даже в самом обыкновенном автомобиле скрывается более двадцати таких элементов, где они, в частности, контролируют состояние беспроводных датчиков давления в шинах и отображают критичные данные.
Каждый год продается около четырех миллиардов подобных изделий, предназначенных для реализации «мозгов» разнообразных «умных» устройств, начиная от интеллектуальных таймеров для яйцеварок и заканчивая системами управления самолетом. Эволюция микропроцессоров, первые из которых были выпущены компанией Intel в далеком 1971 году, привела к коренному изменению структуры общества, спровоцировав в начале XXI века вторую промышленную революцию. Несмотря на то что микропроцессоры, являясь основным компонентом вездесущих ПК, известны лучше, объем продаж различных микропроцессоров, таких как Intel Pentium, составляет всего около 2% от общего объема продаж подобных устройств. Подавляющее же большинство продаж приходится на дешевые микроконтроллеры, встраиваемые в специализированные электронные устройства, такие как смарт-карты. Причем если основной задачей микропроцессоров является обеспечение собственно вычислительной мощности, то во втором случае акцент смещается в сторону объединения на одном кристалле центрального процессора, памяти и устройств ввода/вывода. Такая интегрированная вычислительная система называется микроконтроллером.
В современных телевизорах также применяются микроконтроллеры и в основном они применяются для дистанционного управления, регулировки на расстоянии переключением каналов, громкостью, яркостью и еще рядом других функций. Дистанционное управление перешло и на аудиотехнику. Сейчас промышленностью выпускается всевозможное множество систем дистанционного управления. Они отличаются по принципу, по сложности, объему выполняемых функций. Сейчас уже невозможно представить как бы выглядел пульт дистанционного управления телевизора, если бы он был собран на транзисторах, какую батарею питания пришлось бы носить с собой, чтобы питать этот пульт?
Тема дипломной работы – «Разработка ИК пульта и приемника дистанционного управления», которая будет являться предметом исследования.
Цель работы – разработать ИК пульт и приемник дистанционного управления для какого-либо устройства (управление освещением, двигателем, телевизором и т.д.), который бы отличался от выпускаемых промышленностью своей новизной и ценой.
Актуальность данной разработки огромная, т.к. каждый день почти каждый человек соприкасается с «ленивчиком», как его прозвали в народе.
Разработку пульта и приемника ИК управления разобъем на этапы:
– изучим теоретические вопросы связанные с разработкой устройств на микроконтроллерах, в частности с разработкой ИК пультов и приемников для дистанционного управления;
– практически разработаем схему ИК передатчика (пульта) и приемника для дистанционного управления устройством.

1 Теоретические основы разработки

1.1 Разработка микропроцессорной системы на основе микроконтроллера

Микропроцессорная система (МПС) на основе микроконтроллера (МК) используются чаще всего в качестве встроенных систем для решения задач управления некоторым объектом. Важной особенностью данного применения является работа в реальном времени, т.е. обеспечение реакции на внешние события в течение определенного временного интервала. Такие устройства получили название контроллеров.
Перед разработчиком МПС стоит задача реализации полного цикла проектирования, начиная от разработки алгоритма функционирования и заканчивая комплексными испытаниями в составе изделия. Методология проектирования контроллеров может быть представлена так, как показано на рис. 1.1.
В техническом задании формулируются требования к контроллеру с точки зрения реализации определенной функции управления. Техническое задание включает в себя набор требований, который определяет, что пользователь хочет от контроллера и что разрабатываемый прибор должен делать. Техническое задание может иметь вид текстового описания.
На основании требований пользователя составляется функциональная спецификация, которая определяет функции, выполняемые контроллером для пользователя после завершения проектирования, уточняя тем самым, насколько устройство соответствует предъявляемым требованиям. Она включает в себя описания форматов данных, как на входе, так и на выходе, а также внешние условия, управляющие действиями контроллера.

Рисунок 1.1- Основные этапы разработки контроллера

Этап разработки алгоритма управления является наиболее ответственным, поскольку ошибки данного этапа обычно обнаруживаются только при испытаниях законченного изделия и приводят к необходимости дорогостоящей переработки всего устройства. Разработка алгоритма обычно сводится к выбору одного из нескольких возможных вариантов алгоритмов, отличающихся соотношением объема программного обеспечения и аппаратных средств.
При этом необходимо исходить из того, что максимальное использование аппаратных средств упрощает разработку и обеспечивает высокое быстродействие контроллера в целом, но сопровождается, как правило, увеличением стоимости и потребляемой мощности.
При выборе типа МК учитываются следующие основные характеристики:
– разрядность;
– быстродействие;
– набор команд и способов адресации;
– требования к источнику питания и потребляемая мощность в различных режимах;
– объем ПЗУ программ и ОЗУ данных;
– возможности расширения памяти программ и данных;
– наличие и возможности периферийных устройств, включая средства поддержки работы в реальном времени (таймеры, процессоры событий и т.п.);
– возможность перепрограммирования в составе устройства;
– наличие и надежность средств защиты внутренней информации;
– стоимость;
– наличие и доступность эффективных средств программирования и отладки МК;
– доступность возможности замены изделиями других фирм.
Список этот не является исчерпывающим.
Номенклатура выпускаемых в настоящее время МК исчисляется тысячами типов изделий различных фирм. Современная стратегия модульного проектирования обеспечивает потребителя разнообразием моделей МК с одним и тем же процессорным ядром. Такое структурное разнообразие открывает перед разработчиком возможность выбора оптимального МК, не имеющего функциональной избыточности, что минимизирует стоимость комплектующих элементов.

1.2 Пульт дистанционного управления на ИК лучах

Пульт ДУ (ПДУ, пульт дистанционного управления, RCU, remote control unit) — электронное устройство для удалённого (дистанционного) управления другим электронным устройством на расстоянии. Существуют как в автономном, так и в (гораздо реже) неавтономном (проводном) вариантах. Конструктивно — обычно небольшая коробка, содержащая в себе электронную схему, кнопки управления и источник автономного питания.
ПДУ применяются для управления системами и механизмами на мобильных объектах (самолёты, космические корабли, суда и т. д.), управления производственными процессами, системами связи, военными объектами. Также широко используются для дистанционного управления телевизорами, музыкальными центрами, аудио- и видеопроигрывателями, другой бытовой электронной аппаратурой (посылка команд переключения телеканалов, звуковых дорожек, управления громкостью и т. п.). Бытовой ПДУ представляет собой небольшое устройство с кнопками, питающееся от батареек и посылающее команды посредством инфракрасного излучения. Большинство образцов современной бытовой электроники содержат ограниченный набор средств управления на своем корпусе и полный набор на пульте ДУ.
Своеобразные пульты ДУ бывают у автомобильных сигнализаций и некоторых цифровых фотоаппаратов. Бывают также пульты ДУ для управления роботами, авиамоделями и др.(Рисунок 1.2).

Рисунок 1.2 – Различные пульты для бытовых приборов

1.2.1 История дистанционного управления
Один из самых ранних образцов устройств для дистанционного управления придумал и запатентовал Никола Тесла в 1893 году.
В 1903 году испанский инженер и математик Leonardo Torres Quevedo представил в Парижской академии наук Telekino — устройство, представлявшее собой робота, выполняющего команды, переданные посредством электромагнитных волн. В том же году он получил патенты во Франции, Испании, Великобритании и США. В 1906 году в порту Бильбао в присутствии короля и большого сборища зрителей Torres представил своё изобретение, управляя лодкой с корабля. Позже он пробовал приспособить Telekino для снарядов и торпед, но прекратил проект из-за недостатка средств.
Первая дистанционно управляемая модель аэроплана была запущена в 1932 году. Затем над использованием дистанционного управления в военных целях усиленно работали во время Второй мировой войне, например в проекте немецкой ракеты земля-воздух Вассерфаль.
Первый пульт ДУ для управления телевизором был разработан американской компанией Zenith Radio Corporation в начала 1950-х. Он был соединён с телевизором кабелем. В 1955 году был разработан беспроводной пульт Flashmatic, основанный на посылании луча света в направлении фотоэлемента. К сожалению, фотоэлемент не мог отличить свет из пульта от света из других источников. Кроме того, требовалось направлять пульт точно на приёмник.
В 1956 году американец австрийского происхождения Роберт Адлер разработал беспроводной пульт Zenith Space Commander. Он был механическим и использовал ультразвук для задания канала и громкости. Когда пользователь нажимал кнопку, она щёлкала и ударяла пластину. Каждая пластина извлекала шум разной частоты и схемы телевизора распознавали этот шум. Изобретение транзистора сделало возможным производство дешёвых электрических пультов, которые содержат пьезоэлектрический кристалл, питающийся электрическим током и колеблющийся с частотой, превышающей верхний предел слуха человека (хотя слышимой собаками). Приёмник содержал микрофон, подсоединённый к схеме, настроенной на ту же частоту. Некоторыми проблемами этого способа были возможность приёмника сработать от естественного шума и то, что некоторые люди, особенно молодые женщины, могли слышать пронзительные ультразвуковые сигналы. Был даже случай, когда игрушечный ксилофон мог переключать каналы на телевизорах этого типа, потому что некоторые обертоны ксилофона совпадали по частоте с сигналами пульта.
В 1974 г. фирмы GRUNDIG и MAGNAVOX выпустили первый цветной телевизор с микропроцессором управления на ИК-лучах. Телевизор имел экранную индикацию (OSD) — в углу экрана отображался номера канала.
Толчок к появлению более сложных типов пультов ДУ появился в конце 1970-х, когда компанией Би-би-си был разработан телетекст. Большинство продаваемых пультов ДУ в то время имели ограниченный набор функций, иногда только четыре: следующий канал, предыдущий канал, увеличить или уменьшить громкость. Эти пульты не отвечали нуждам телетекста, где страницы были пронумерованы трёхзначными числами. Пульт, позволяющий выбирать страницу телетекста, должен был иметь кнопки для цифр от 0 до 9, другие управляющие кнопки, например для переключения между текстом и изображением, а также обычные телевизионные кнопки для громкости, каналов, яркости, цветности. Первые телевизоры с телетекстом имели проводные пульты для выбора страниц телетекста, но рост использования телетекста показал необходимость в беспроводных устройствах. И инженеры Би-Би-Си начали переговоры с производителями телевизоров, что привело в 1977—1978 к появлению опытных образцов, имевших гораздо больший набор функций. Одной из компаний была ITT, её именем был позже назван протокол инфракрасной связи.
В 1980-х Стивен Возняк из компании Apple основал компанию CL9. Целью компании было создание пульта ДУ, который мог бы управлять несколькими электронными устройствами. Осенью 1987 года был был представлен модуль CORE. Его преимуществом была возможность «обучаться» сигналам от разных устройств. Он также имел возможность выполнять определённые функции в назначенное время благодаря встроенным часам. Так же это был первый пульт, который мог быть подключён к компьютеру и загружен обновлённым программным кодом. CORE не оказал большого влияния на рынок. Для среднего пользователя было слишком сложно программировать его, но он получил восторженные отзывы от людей, которые смогли разобраться с его программированием. Названные препятствия привели к роспуску CL9, но один из её работников продолжил дело под маркой Celadon.
К началу 2000-х количество бытовых электроприборов резко возросло. Для управления домашним кинотеатром может потребоваться пять—шесть пультов: от спутникового приёмника, видео-магнитофона, DVD-проигрывателя, телевизионного и звукового усилителя. Некоторые из них требуется использовать друг за другом, и, из-за разобщённости систем управления, это становится обременительным. Многие специалисты, включая известного специалиста и изобретателя современного пульта ДУ Роберта Адлера, отмечают сколь запутанно и неуклюже использование нескольких пультов.
Появление КПК с инфракрасным портом позволило создавать универсальные пульты ДУ с программируемым управлением. Однако в силу высокой стоимости этот метод не стал слишком распространён. Не стали широко распространёнными и специальные универсальные обучаемые пульты управления в силу относительной сложности программирования и использования. Так же возможно использование некоторых мобильных телефонов для дистанционного управления (по какналу Bluetooth) персональным компьютером.

1.2.2 Каналы связи для дистанционного управления
– Проводной канал — используется там, где нет возможности применить беспроводные каналы, например, из-за отсутствия прямой видимости, наличия экранировки, соображений секретности и т. д., главным образом для управления системами мобильных объектов, оборудованием производственных объектов, лабораторий, или специальных объектов (военного и другого назначения)
– Радиоканал — используется, главным образом, для управления мобильными объектами — радиоуправляемыми спортивными моделями и игрушками, оборудованием для чрезвычайных ситуаций (роботы и т. д.), беспилотными летательными аппаратами, военными мобильными объектами
– Ультразвуковой канал — используется редко, для управления мобильными и стационарными объектами на сравнительно небольшом расстоянии
– Инфракрасный канал — используется, как правило, для бытовой электроники

1.2.3 Устройство бытовых ПДУ
Модуляция инфракрасного светодиода изменяется в зависимости от нажатой кнопки.
Большинство пультов ДУ для электроники используют светодиод, испускающий пучок инфракрасного излучения с длиной волны 0,75—1,4 микрон, который достигнет устройства. Этот свет невидим для человеческого глаза, но распознаётся устройством, так же как и матрицей цифрового фотоаппарата или видеокамеры. В основе большинства пультов дистанционного управления обычно лежит одна бескорпусная микросхема помещенная прямо на печатную плату. Сверху микросхема покрыта компаундом, что предотвращает её повреждение.

1.2.4 Принцип действия ПДУ
Для одноканального (с одной функцией, с одной кнопкой) пульта достаточно наличия сигнала, чтобы передать команду. Для пультов с несколькими функциями необходима более сложная система: частотная модуляция несущего сигнала. После демодуляции полученного сигнала, применяются соответствующие частотные фильтры для разделения сигналов. Сейчас чаще всего используется цифровая обработка сигналов. Часто можно услышать сигналы, модулируемые на инфракрасном несущем, используя пульт ДУ рядом со средневолновым радиоприёмником не настроенным на станцию.
Для считывания кода нажатой кнопки обычно применяется метод активного сканирования линий (как например в компьютерных клавиатурах), но в пультах ДУ бытовой техники использование такого метода требовало бы затрат энергии и батарейки бы быстро садились. Поэтому в них используется метод «одна кнопка — одна линия». При нажатии на кнопку пульта соединяются общая линия и линия этой кнопки, вследствие чего поступающий сигнал «будит» микросхему пульта, она определяет код нажатой кнопки и формирует посылку, содержащую код пульта и код кнопки. Пульты ДУ не имеют обратной связи, это означает что пульт не может определить достиг ли сигнал приёмника или нет. Потому сигнал, соответствующий нажатой кнопке передаётся непрерывно до тех пор пока кнопка не будет отпущена. При отпускании кнопки пульт переходит обратно в выключенное состояние.
На приёмной стороне (например в телевизоре) принимаются данные, проверяется код пульта, и, если этот код соответствует заданному, выполняется команда, соответствующая нажатой кнопке. Приёмник может оказаться неспособен принять и обработать посланные ему данные в случае несовместимости с пультом.
Причинами могут быть:
– Используются разные методы кодирования передаваемых данных.
– Используются разные частоты модуляции инфракрасного сигнала.
Обычно в пультах используется одна частота модуляции. На неё настроен пульт и приёмник. Частоты модуляции обычно «стандартны» — это 36 кГц, 38 кГц, 40кГц (Panasonic, Sony). Редкими считаются частоты 56 кГц (Sharp). Фирма Bang & Olufsen использует 455 кГц, что является большой редкостью.
Для частот от 30 до 50 кГц обычно используются светодиоды с длиной волны 950 нм, а для 455 кГц используются светодиоды с длиной волны 870нм.
Модуляция
Передача сигнала осуществляется мерцанием светодиода с соответствующей частотой. Несколько таких модулированных передач и гашений формируют кодированную посылку. Приёмники ИК сигнала в своём составе обычно имеют частотный детектор (или подобную схему) детектирующую наличие или отсутствие мерцания заданной частоты.
Практически все ИК приёмники производимые серийно имеют ИК светофильтр (и выглядят тёмными). Встроенная схема состоящая из нескольких каскадов усилителей и демодулятора (частотного детектора) чувствительна к сигналу до −90 дБ (большинство радиолюбительских схем имеют чувствительность до −60 дБ). Также практически все ИК приёмники имеют всего три вывода: Питание, Земля, Выход данных (показывающий наличие или отсутствие модулированного сигнала на входе фото приёмника. Использование приёмника не совпадающей с частотой модуляции пульта не означает что он не будет принимать. Он будет принимать, но его чувствительность может очень сильно упасть. Для приёма сигнала от пульта ДУ также существует демодулятор без встроенного ИК фото приёмника — микросхема фирмы Sony CXA1511l, по своей сути — высококачественный частотный детектор, позволяющий сделать пульт например не на светодиодах ИК диапазона а на УФ.
Методы кодирования данных
Сейчас преимущественно используются следующие две схемы кодирования передаваемых данных:
– Первая в пультах ДУ стала применяться фирмой Philips (протокол RC5): Передача 0 дополнялась единицей, а передача 1 — нулём. То есть 001 передавалась бы как 01 01 10. Соответственно посылка считывается последовательно, и в эфир подаётся модулированный сигнал только когда встречается единица.
– Авторство второй схемы кодирования приписывается фирме Sony. Сначала всегда передаётся «1» модулированным сигналом, а потом «0» пауза. Временной размер единицы всегда одинаковый, а временной размер 0 — это кодированные передаваемые данные. Длинная пауза — передача единицы, короткая пауза — передача нуля.
Перед посылкой кодированных данных пульт всегда посылает одну или несколько синхропосылок для того, чтобы фото приёмник настроил приёмную цепь (синхронизировался с пультом по чувствительности и фазе).
Производители пультов не склонны придерживаться каких-либо общих стандартных протоколов кодирования данных и вправе разрабатывать и применять для своей техники всё новые и новые протоколы. Более полный список протоколов: NEC (repetitive pulse), NEC (repetitive data), RC5, RC6, RCMM, RECS-80, R-2000 (33 kHz), Thomson RCA (56.7 kHz), Toshiba Micom Format (similar NEC), Sony 12 Bit, Sony 15 Bit, Sony 20 Bit, Kaseikyo Matsushita (36.7 kHz), Mitsubishi (38 kHz, preburst 8 ms, 16 bit), Ruwido r-map, Ruwido r-step, Continuous transmission 4000 bps и Continuous transmission 1000 bps.
Питание
Бытовые пульты ДУ обычно питаются от двух батареек типоразмера AA или AAA. Это связано с тем, что для питания инфракрасного светодиода необходимо не менее 2,0—2,5 Вольт, а от одной батареи 1,3 В такого напряжения не получить (без использования изощрённых схемотехнических способов).

1.3 Протокол RC-5

При проектировании ИК пульта и приемника для дистанционного управления мы будем использовать протокол RC-5, поэтому кратко рассмотрим, что это такое и как оно работает.
В протоколе RC5, тут кодирование информации осуществляется не длительностью импульса. Такой способ кодирования информации называется еще манчестерским. RC5 посылка на выходе интегрального приёмника TSOP36 , который на выходе фильтрует несущую частоту 36кГц (Рис.1.3):

Рисунок 1.3 – Временное распределение протокола RC-5

Длительность посылки в протоколе RC5 составляет – 24.9мс, а период повторения – 114мс. Посылка состоит из 14бит. Первые два бита в посылке (S1 и S2) это стартовые биты они всегда должны быть равны 1. Третий бит (Т) это бит триггера, он меняет состояние каждый раз, когда на пульте нажимается кнопка. Служит для отличия многократного нажатия кнопки на пульте. После бита триггера идут 5 бит адреса устройства. Далее идут 6 бит самой команды.
Протокол передачи данных RC-5 имеет следующий формат (Рис.1.4):
Команды передаются пакетами. Каждый пакет содержит 14 бит:
SB (start bit) – два стартовых бита (всегда равны 1)
TB (toggle bit) – управляющий бит. Используется как признак нового нажатия. (Если удерживать кнопку пульта нажатой, то в первом пакете этот бит будет равен 1, а в последующих 0).
S4, S3, S2, S1, S0 (system bits) – пять битов адреса, определяющих номер системы, для которой данный пакет предназначен.
C5, C4, C3, C2, C1, C0 (command bits) – собственно биты, кодирующие определенную команду.
Длина одного пакета составляет 24,889 миллисекунд. Минимальная пауза между пакетами равна по длине 50 битам (88,889 миллисекунд) (Рис.1.5)

Рисунок 1.4 – Формат протокола передачи данных RC-5

Рисунок 1.5 – Временные интервалы передачи сигналов протокола RC-5

2 Разработка ИК пульта и приемника дистанционного управления

2.1 Постановка задачи

Требуется разработать ИК пульт и приемник дистанционного управления.
Разработка устройства будет производиться с учётом следующих требований:
– простота схемы (минимальное количество компонентов);
– функциональная насыщенность, многообразие регулируемых параметров;
– устойчивость к изменениям напряжения, долговечность;
– производить управление минимум четырех функций;
– низкое энергопотребление.

2.2 Разработка структурной схемы устройства и функциональной
спецификации

Разработаем структурную схему ИК пульта (Рисунок 2.1) и приемника (Рисунок 2.2) дистанционного управления.
Функциональная спецификация ИК пульта дистанционного управления:
1. Входы:
а. 4 кнопки выбора функций (SВ1-SВ4);
b. Электропитание МК.

SB1

SB2

SB3
SB4

Рисунок 2.1 – Структурная схема ИК пульта дистанционного управления

Рисунок 2.2 – Структурная схема ИК приемника дистанционного управления

2. Выходы:
а. ИК излучатель.
3. Функции:
а. Запись кодированного сигнала в память, при нажатии на одну из кнопок SВ1-SВ4;
b.Вывод кодированной информации на ИКИ (инфрокрасный излучатель) с МК;
c.Осуществление электропитания МК от внутреннего источника питания (ИП).
Функциональная спецификация ИК приемника дистанционного управления:
1.Входы:
а. Передача в МК закодированных сигналов от ИКП (ИК приемника)
b. Электропитание МК и ключей управления (Кл1-Кл4).
2. Выходы:
а. Сигнал управления от МК на соответствующий ключ (Кл1-Кл4);
b. Подача импульсов управления от ключа на исполнительные устройства (ИУ1-ИУ4).
3. Функции:
а. Прием ИКП закодированных сигналов и передача их на вход МК;
b.МК раскодировав сигналы передает импульсы управления на ключи Кл1-Кл4;
с. При срабатывании определенного ключа напряжение питания подается на исполнительные устройства (светодиоды, реле, лампы накаливания и т.д.);
d.Электропитание МК и ключей осуществляется либо от автономного источника питания, либо от селевого (ИП).

2.3 Аппаратные средства микроконтроллеров серии PIC12F629/675

Для разработки ИК пульта и приемника дистанционного управления выберем микроконтроллер PIC12F629. Чем выгоден данный микроконтроллер и почему именно его мы выбираем? Во-первых, он миниатюрен в исполнении, во-вторых- потребляет малый ток, последнее – отличается сравнительно невысокой ценой.
Основные параметры микроконтроллеров PIC12F629/675 приведены ниже и в Приложении А.
PIC12F629/675-8 – выводные Flash КМОП микроконтроллеры.
Характеристика микроконтроллеров:
• Высокопроизводительная RISC архитектура
• 35 команд
• Все команды выполняются за один цикл, кроме команд переходов, выполняемых за два цикла
• Тактовая частота:
DC – 20МГц, частота тактового сигнала
– DC – 200нс, длительность машинного цикла
• Память:
1024 х 14 слов Flash памяти программ
64 х 8 память данных
128 х 8 EEPROM памяти данных
• Система прерываний
• 16 аппаратных регистров специального назначения
• 8-уровневый аппаратный стек
• Прямой, косвенный и относительный режим адресации
Характеристика периферийных модулей
• 6 каналов ввода/вывода с индивидуальной настройкой направления данных
• Высокотоковые выводы для непосредственного подключения светодиодов
• Модуль аналогового компаратора:
Один аналоговый компаратор Программируемый источник опорного напряжения для компаратора (CVREF) Программируемый мультиплексируемый вход с другими периферийными модулями Внешний выход компаратора
• Модуль АЦП (только в PIC12F675)
Разрешение 10 бит
– Программный выбор одного из четырех аналоговых входов
– Вход опорного напряжения
• Таймер TMR0 – 8-разрядный таймер/счетчик с 8-разрядным программируемым предделителем
• Таймер TMR1
16-разрядный таймер/счетчик с предделителем Вход включения таймера
– Возможность использования OSC1, OSC2 в качестве выводов генератора TMR1 в LP режиме, если основной тактовый генератор работает в INTOSC режиме
• 64 регистра общего назначения (ОЗУ)
Дополнительные особенности:
• Сброс по включению питания (POR) Таймер сброса (PWRT) и таймер ожидания запуска генератора (OST)
• Сброс по снижению напряжения питания (BOD) Сторожевой таймер WDT с собственным RC генератором
• Мультиплексируемый вывод -MCLR
• Прерывания по изменению уровня сигнала на входах
• Индивидуально пpoграммируемые для каждого входа подтягивающие резисторы Программируемая защита кода
• Режим пониженного энергопотребления SLEEP Выбор режима работы тактового генератора:
– RC – внешний RC генератор
– INTOSC – внутренний RC генератор 4МГц
– ЕС – вход внешнего тактового сигнала
– XT – стандартный кварцевый/керамический резонатор
– HS – высокочастотный кварцевый/керамический резонатор
– LP – низкочастотный кварцевый резонатор (пониженное энергопотребление)
• Внутрисхемное программирование ICSP с использованием двух выводов
• Четыре пользовательских ID ячейки
КМОП технология
• Высокоскоростная КМОП Flash технология с малым энергопотреблением
• Полностью статическая архитектура
• Широкий диапазон напряжений питания от 2.0В до 5.5В
• Промышленный и расширенный температурные диапазоны
• Малое энергопотребление:
– Vdd)……………………………. ±20мА
Выходной запирающий ток Ьк (Vo Vdd)……………………… +20мА
Максимальный выходной ток стока канала ввода/вывода…………………….25мА
Максимальный выходной ток истока канала ввода/вывода…………………..25мА
Максимальный выходной ток стока портов ввода/вывода GPIO………. 125мА
Максимальный выходной ток истока портов ввода/вывода GPIO………125мА

Система команд
В PIC12F629/675 система команд аккумуляторного типа, ортогональна и разделена на три основных группы:
• Байт ориентированные команды
• Бит ориентированные команды
• Команды управления и операций с константами
Каждая команда состоит из одного 14 – разрядного слова, разделенного на код операции (OPCODE), определяющий тип команды и один или несколько операндов, определяющие операцию команды.

Таблица 1 – Список команд микроконтроллеров PIC12F629/675
Мнемоника команды Описание Циклов 14-разрядный код Изм. флаги Прим.
Бит 13 БитО
Байт ориентированные команды
ADDWF f,d Сложение W и f 1 00 0111 dfff ffff C,DC,Z 1,2
ANDWF f,d Побитное ‘И’ W и f 1 00 0101 dfff ffff z 1,2
CLRF f Очистить f 1 00 0001 Ifff ffff z 2
CLRW Очистить W 1 00 0001 Oxxx xxxx z
COMF f,d Инвертировать f 1 00 1001 dfff ffff z 1,2
DECF f,d Вычесть 1 из f 1 00 0011 dfff ffff z 1,2
DECFSZ f,d Вычесть 1 из f и пропустить если 0 1(2) 00 1011 dfff ffff 1,2,3
INCF f,d Прибавить 1 к f 1 00 1010 dfff ffff z 1,2
INCFSZ f,d Прибавить 1 к f и пропустить если 0 1(2) 00 1111 dfff ffff 1,2,3
IORWF f,d Побитное ‘ИЛИ’ W и f 1 00 0100 dfff ffff z 1,2
MOVF f,d Переслать f 1 00 1000 dfff ffff z 1,2
MOVWF f Переслать W в f 1 00 0000 lfff ffff
NOP Нет операции 1 rs П Л Г\ г, …. г. n 0 г» р
RLF f,d Циклический сдвиг f влево через перенос 1 00 1101 dfff ffff с 1,2
RRF f,d Циклический сдвиг f вправо через перенос 1 00 1100 dfff ffff с 1.2
SUBWF f,d Вычесть W из f 1 00 0010 dfff ffff C,DC,Z 1,2
SWAPF f,d Поменять местами полубайты в регистре f 1 00 1110 dfff ffff 1,2
XORWF f,d Побитное ‘исключающее ИЛИ’ W и f 1 00 0110 dfff ffff z 1,2
Бит ориентированные команды
BCF f,b Очистить бит b в регистре f 1 01 OObb bfff ffff 1,2
BSF f,b Установить бит b в регистре f 1 01 Olbb bfff ffff 1,2
BTFSC f,b Проверить бит b в регистре f, пропустить если 0 1(2) 01 lObb bfff ffff 3
BTFSS f,b Проверить бит b в регистре f, пропустить если 1 1(2) 01 llbb bfff ffff 3
Команды управления и операций с константами
ADDLW к Сложить константу с W 1 11 lllx kkkk kkkk C,DC,Z
ANDLW к Побитное ‘И’ константы и W 1 11 1001 kkkk kkkk z
CALL к Вызов подпрограммы 2 10 Okkk kkkk kkkk
CLRWDT Очистить WDT 1 00 0000 0110 0100 -TO.-PD
GOTO к Безусловный переход 2 10 lkkk kkkk kkkk
IORLW к Побитное ‘ИЛИ’ константы и W 1 11 1000 kkkk kkkk z
MOVLW к Переслать константу в W 1
RETFIE Возврат из подпрограммы с разрешением прерываний 2 00 0000 0000 1001
RETLW к Возврат из подпрограммы с загрузкой константы в W 2 11 Olxx kkkk kkkk
RETURN Возврат из подпрограммы 2 00 0000 0000 1000
SLEEP Перейти в режим SLEEP 1 00 0000 0110 0011 -TO.-PD
SUBLW к Вычесть W из константы 1 11 HOx kkkk kkkk C,DC,Z
XORLW к Побитное ‘исключающее ИЛИ’ константы и W 1 11 1010 kkkk kkkk z

Рисунок 2- Чертежи корпусов

Таблица 2 – Размеры корпусов
Единицы измерения Дюймы* Миллиметры
Пределы размеров Мин. Ном. Макс. Мин. Ном. Макс.
Число выводов п 8 8
Расстояние между выводами Р 0.100 2.54
Ширина нижней части вывода В 0.014 0.018 0.022 0.36 0.46 0.56
Ширина верхней части вывода В1 0.045 0.058 U.070 1.14 1.40 1.?а
Радиус сгиба вывода R 0.000 0.005 0.010 0.00 0.13 0.25
Толщина вывода с 0.008 0.012 0.015 0.20 0.29 0.38
Высота корпуса А 0.140 0.155 0.170 3.56 3.94 4.32
Толщина корпуса А2 0.115 0.130 0.145 2.92 3.30 3.68
Расстояние между корпусом и платой А1 0.015 0.38
Длина нижней части вывода L 0.125 0.130 0.135 3.18 3.30 3.43
Длина корпуса D 0.360 0.373 0.385 9.14 9.46 9.78
Ширина корпуса Е 0.300 0.313 0.325 7.62 7.94 8.26
Ширина корпуса без выводов Е1 0.240 0.250 0.260 6.10 6.35 6.60
Полная ширина корпуса с выводами еВ 0.310 0.370 0.430 7.87 9.40 10.92
Угол фаски верхней части корпуса а 5 10 15 5 10 15
Угол фаски нижней части корпуса в 5 10 15 5 10 15

Приложение Б

;****** СКАНИРОВАНИЕ КЛАВИАТУРЫ ************************************************
Scan btfss GPIO,5 ; если на входе GP5 низкий уровень – нажата клавиша 1
goto Tx_CMD1
btfss GPIO,2 ; если на входе GP2 низкий уровень – нажата клавиша 2
goto Tx_CMD2
btfss GPIO,4 ; если на входе GP4 низкий уровень – нажата клавиша 3
goto Tx_CMD3
btfss GPIO,1 ; если на входе GP1 низкий уровень – нажата клавиша 4
goto Tx_CMD4
bsf MBC,5 ; установить управляющий бит в 1 (первое нажатие)
goto Scan
;****** ФОРМИРОВАНИЕ МЛАДШЕГО БАЙТА ПАКЕТА ****************************
Tx_CMD1 movlw CMD_1
movwf LBC ;запись номера команды 1 в младший разряд кода
goto TxRC
;********************************************
Tx_CMD2 movlw CMD_2
movwf LBC ;запись номера команды 2 в младший разряд кода
goto TxRC
;********************************************
Tx_CMD3 movlw CMD_3
movwf LBC ;запись номера команды 3 в младший разряд кода
goto TxRC
;********************************************
Tx_CMD4 movlw CMD_4
movwf LBC ;запись номера команды 4 в младший разряд кода
goto TxRC
;******* ПЕРЕДАЧА ПАКЕТА RC-5 *********************************************************
TxRC btfsc MBC,7 ; Startbit 1. Если он равен 1, то выполняется Tx_1,
call Tx_1 ; если он равен нулю, то выполняется Tx_0
btfss MBC,7 ; аналогично остальные биты
call Tx_0
;——————————–
btfsc MBC,6 ; Startbit 2
call Tx_1
btfss MBC,6
call Tx_0
;——————————–
btfsc MBC,5 ; Toggle bit
call Tx_1
btfss MBC,5
call Tx_0
;——————————–
btfsc MBC,4 ; System bit 4
call Tx_1
btfss MBC,4
call Tx_0
;——————————–
btfsc MBC,3 ; System bit 3
call Tx_1
btfss MBC,3
call Tx_0
;——————————–
btfsc MBC,2 ;System bit 2
call Tx_1
btfss MBC,2
call Tx_0
;——————————–
btfsc MBC,1 ;System bit 1
call Tx_1
btfss MBC,1
call Tx_0
;——————————–
btfsc MBC,0 ;System bit 0
call Tx_1
btfss MBC,0
call Tx_0

;——————————–
btfsc LBC,5 ;Command bit 5
call Tx_1
btfss LBC,5
call Tx_0
;——————————–
btfsc LBC,4 ;Command bit 4
call Tx_1
btfss LBC,4
call Tx_0
;——————————–
btfsc LBC,3 ;Command bit 3
call Tx_1
btfss LBC,3
call Tx_0
;——————————–
btfsc LBC,2 ;Command bit 2
call Tx_1
btfss LBC,2
call Tx_0
;——————————–
btfsc LBC,1 ;Command bit 1
call Tx_1
btfss LBC,1
call Tx_0
;——————————–
btfsc LBC,0 ;Command bit 0
call Tx_1
btfss LBC,0
call Tx_0

bcf MBC,5 ; установить управляющий бит в 0 (повторное нажатие)
;****** ПАУЗА, РАВНАЯ МЕЖПАКЕТНОМУ ИНТЕРВАЛУ ****************************************
;****** Пауза между пакетами равна 50 bit, т.е. надо послать 100 нулевых полубитов (RCN) ********
movlw .99 ; здесь записано 99, а не 100, т.к. далее call стоит раньше декремента
movwf T_0
pause call RCN
decfsz T_0,F ; декремент T_0
goto pause
goto Scan
;********КОНЕЦ ОСНОВНОЙ ПРОГРАММЫ ***************************************************************
;******* ПОДПРОГРАММЫ ПЕРЕДАЧИ НУЛЯ И ЕДИНИЦЫ ***********************************************
;******* Передача нуля манчестерским кодом **********************
Tx_0 call RCY ; первые полбита единица
call RCN ; вторые полбита ноль
return
;******* Передача единицы манчестерским кодом *******************
Tx_1 call RCN ; первые полбита ноль
call RCY ; вторые полбита единица
return
;*********************************************************************************************
;***** ПОДПРОГРАММЫ ФОРМИРОВАНИЯ СОСТОЯНИЙ “ON” И “OFF” ***********************
;***** Передача единичного полубита (“ON”) ******************
RCY movlw NCr ; поместить константу NCr в аккумулятор
movwf T_NC ; скопировать содержимое аккумулятора в регистр T_NC
Y_001 movlw Cr1 ; поместить константу Cr1 в аккумулятор (изменяя Cr1 и Cr0 можно грубо подстраивать частоту несущей)
movwf T_Cr ; поместить содержимое аккумулятора в регистр T_Cr (таймер несущей)
bsf GPIO,0 ; установить на выходе защелки GP0 единицу (установить 1 на выходе)
Cr1_Y decfsz T_Cr,F ; декремент содержимого регистра T_Cr с ветвлением: если f=0 – результат

; сохраняется в аккумуляторе, если f=1 – результат сохраняется в регистре T_Cr.

; Если результат не равен 0, то исполняется следующая инструкция, если равен 0,

; то вместо следующей инструкции исполняется nop, а команда исполняется за 2 м.ц.

goto Cr1_Y ; переход на метку Cr1_Y
nop ; увеличивая здесь длительность паузы (добавляя еще nop) – можно точно подстраивать чатоту несущей
bcf GPIO,0 ; Установить на выходе защелки GP0 ноль (установить 0 на выходе)
movlw Cr0 ; поместить константу Cr0 в аккумулятор (изменяя Cr1 и Cr0 можно грубо подстраивать частоту несущей)
movwf T_Cr ; скопировать содержимое аккумулятора в регистр T_Cr
local Cr0_Y
Cr0_Y decfsz T_Cr,F
goto Cr0_Y ; увеличивая здесь длительность паузы (добавляя еще nop) – можно точно подстраивать чатоту несущей
decfsz T_NC,F
goto Y_001
return
;***** Передача нулевого полубита (“OFF”) *******************
RCN movlw NCr ; подпрограмма передачи нулевого полубита имеет
movwf T_NC ; ту же структуру, что и подпрограмма передачи единичного
local N_001 ; полубита только для того, чтобы было легче регулировать
N_001 movlw Cr1 ; их длительности
movwf T_Cr
nop ; вместо bsf GP0
local Cr1_N
Cr1_N decfsz T_Cr,F
goto Cr1_N
nop
nop ; вместо bсf GP0
movlw Cr0
movwf T_Cr
local Cr0_N
Cr0_N decfsz T_Cr,F
goto Cr0_N
decfsz T_NC,F
goto N_001
return
;***********************************************************************************************
end

;——————————————————————————————————————————

Приложение В

Программа прошивки микроконтроллера PIC12F629 для ИК приемника дистанционного управления
;——————————————————————————————————————————

list p = 12f629
__config 01FE4h ; 01111 11 1 1 0 0 100 – (7,8)защиты памяти нет, (6)сброс по питанию разрешен,

; (5)GP3/-MCLR работает как -MCLR, (4)PWRT включен, (3)WDT – выключен, (2-0)генератор – внутренний
;********* Переменные ************************************
CBLOCK 0x20 ; Начальный адрес
MBC ; старший байт посылки (полбита – 889uS)
LBC ; младший байт посылки
Schetchik ; счетчик принятых бит
Prov_reg ; регистр для проверки на манчестер (сюда пишем три последних принятых бита)
Adrbit ; адрес бита для записи
Counter ; счетчик для паузы
ENDC ;
;******** Константы ***************************************
T1 equ .205 ; задержка 1
T2 equ .204 ; задержка 2
TP equ .255 ; задержка между приемом посылок
TN equ .125 ; начальная задержка, чтобы попасть на середину полубита
Sys equ .29 ; номер системы
CMD_1 equ .8 ; код команды 000010 00 последние 2 бита не используются, т.е. команда = 2
INDF equ 0h ; регистр косвенной адресации
Status equ 03h ; Регистр выбора банка.
FSR equ 04h ; регистр адреса при косвенной адресации
GPIO equ 05h ; Регистр управления защелками порта.
Cmcon equ 19h ; Регистр Cmcon – компаратора
TrisIO equ 05h ; Регистр выбора направления работы выводов порта.
INTCON equ 0Bh ; Регистр разрешения(1)/запрета(0) прерываний
IOCB equ 16h ; регистр разрешения прерываний по GP0…GP5
OSCCAL equ 10h ; Регистр хранения калибровочной константы
F equ 1 ; Результат направить в регистр.
;********************************************************
; Пусть у нас GP0 (1-й кр), GP1(2-й кр), GP2(жел), GP4(зел) – выходы на транзисторы управления светодиодов, GP5 – вход ИК-приемника
;********************************************************
org 0
goto start
org 4
;********* ПРЕРЫВАНИЕ *************************************************************
btfsc GPIO,5 ; если вход не = 0, то это не начало приема
goto exit
;********* Установить счетчик принятых бит **********************************************
movlw .1 ;
movwf Schetchik ; 3-й бит определяет – куда пишем, если 1, то в MBC, если 0, то в LBC
;********* Установить адрес бита для записи = 7 (поднять 7-й бит) ***********************
movlw .128
movwf Adrbit
;********* Заполняем три младших бита проверочного регистра нулями *****************
clrf Prov_reg
;********* Установить адрес регистра для записи в регистр косвенной адресации (сначала пишем в MBC) ***
movlw MBC ; записываем адрес MBC в регистр косвенной адресации
movwf FSR ;
;********* Начальная задержка ****************************************
movlw TN
movwf Counter
nach_zad nop
decfsz Counter,1
goto nach_zad
;********* ЗАПИСЬ БАЙТА *****************************************************************
;*********Второй полубит n-го бита **********************************************************
;********* Проверить вход и записать принятый полубит (один полубит пишем, другой – пропускаем) **
zapis btfss GPIO,5 ; если на входе GP5 низкий уровень – пишем единицу (выполняем следующую команду)
goto zapis1
zapis0 comf Adrbit,0 ; записываем позицию бита, которую будем менять
andwf INDF,1 ; побитное “и”, – ставим ноль в позиции, указанной в Adrbit
bcf Status,0 ; очищаем флаг переноса
rlf Prov_reg,1 ; сдвигаем биты в проверочном регистре влево
movlw .7 ; .7 = 00000111
andwf Prov_reg,1 ; сбрасываем все биты кроме первых трех
bcf Prov_reg,0 ; в нулевой бит проверочного регистра пишем ноль
goto sdvig
zapis1 movf Adrbit,0
iorwf INDF,1 ; побитное “или”, – ставим единицу в позиции, указанной в Adrbit
bcf Status,0 ; очищаем флаг переноса
rlf Prov_reg,1 ; сдвигаем биты в проверочном регистре влево
movlw .7 ; .7 = 00000111
andwf Prov_reg,1 ; сбрасываем все биты кроме первых трех
bsf Prov_reg,0 ; в нулевой бит проверочного регистра пишем единицу
;******** меняем адрес записи бита *************************************************
sdvig bcf Status,0 ; очищаем флаг С
rrf Adrbit,1 ; циклический сдвиг вправо через перенос (смещаем позицию)
btfsc Status,0 ; если флаг С = 0, пропускаем следующую команду
bsf Adrbit,7 ; поднимаем 7-й бит (ставим адрес на 7-й бит)
;******** Проверяем на манчестер ****************************************************
movlw .0
xorwf Prov_reg,0 ; проверка – равен ли нулю проверочный регистр
btfsc Status,2 ; если флаг Z = 0, пропускаем следующую команду
goto not_manch
movlw .7
xorwf Prov_reg,0 ; проверка – равен ли 00000111 проверочный регистр
btfsc Status,2 ; если флаг Z = 0, пропускаем следующую команду
goto not_manch
;******** Задержка 1, чтобы общая длительность от метки zapis до окончания задержки равнялась 889 мкс ***
movlw T1
movwf Counter ; загружаем в Counter таймер T1
Count1 nop
decfsz Counter,1
goto Count1
nop
;******** первый полубит n+1-го бита (писать не надо, но для проверки на манчестер – надо) ******
btfss GPIO,5 ; если на входе GP5 низкий уровень – пишем единицу (выполняем следующую команду)
goto zapis12
zapis02 bcf Status,0 ; очищаем флаг переноса
rlf Prov_reg,1 ; сдвигаем биты в проверочном регистре влево
movlw .7 ; .7 = 00000111
andwf Prov_reg,1 ; сбрасываем все биты кроме первых трех
bcf Prov_reg,0 ; в нулевой бит проверочного регистра пишем ноль
goto proverka
zapis12 bcf Status,0 ; очищаем флаг переноса
rlf Prov_reg,1 ; сдвигаем биты в проверочном регистре влево
movlw .7 ; .7 = 00000111
andwf Prov_reg,1 ; сбрасываем все биты кроме первых трех
bsf Prov_reg,0 ; в нулевой бит проверочного регистра пишем единицу
;******** Проверяем на манчестер ****************************************************
proverka movlw .0
xorwf Prov_reg,0 ; проверка – равен ли нулю проверочный регистр
btfsc Status,2 ; если флаг Z = 0, то проверочный регистр не равен нулю – пропускаем следующую команду
goto not_manch
movlw .7
xorwf Prov_reg,0 ; проверка – равен ли 00000111 проверочный регистр
btfsc Status,2 ; если флаг Z = 0, пропускаем следующую команду
goto not_manch
;******** Задержка 2, чтобы общая длительность от чтения этого полубита до чтения следующего равнялась 889 мкс ***
movlw T2
movwf Counter ; загружаем в Counter таймер T2
Count2 nop
decfsz Counter,1
goto Count2
nop
;******** Сколько бит записали? ******************************************************
movlw .14
xorwf Schetchik,0 ; счетчик = 14?
btfsc Status,2 ; если флаг Z = 0, пропускаем следующую команду
return ; выходим без разрешения прерываний
;****** Если бит 3 счетчика = 1, то мы уже записали 8 бит и следующие надо писать в LBC *****
btfss Schetchik,3 ; если третий бит счетчика равен единице, то следующая инструкция пропускается
goto zap_MBC
zap_LBC movlw LBC ; записываем адрес LBC в регистр косвенной адресации
movwf FSR
goto next
zap_MBC movlw MBC ; записываем адрес MBC в регистр косвенной адресации
movwf FSR
;****** Увеличить счетчик *******************************************************************
next incf Schetchik,1 ; увеличиваем счетчик
goto zapis
;****** Погасить все, зажечь первый красный *************************************************
not_manch bcf GPIO, 1 ; погасить второй красный светодиод
bcf GPIO, 2 ; погасить желтый светодиод
bcf GPIO, 4 ; погасить зеленый светодиод
bsf GPIO, 0 ; зажечь первый красный светодиод
;******* Сбросить признак принятия посылки **************************************
bcf MBC,7
;********* Сбросить флаг прерываний и выйти *************************************
exit bcf INTCON,0
retfie
;******** КОНФИГУРИРОВАНИЕ КОНТРОЛЛЕРА *********************************************
;*** Необходимо помнить, что калибровочные константы стираются при программировании, **********
;*** поэтому их надо сохранять, OSCCAL хранится по адресу 03FFh, биты калибровки схемы BOR – *
;*** 12-й,13-й биты слова конфигурации (в моем случае BOR – 01, OSCCAL – 346C)*****************
;****** Калибровка Генератора *****************************************************************
start bsf Status,5
Call 3FFh ; Загрузить калибровочную константу в w
movwf OSCCAL
;******** Установка направления работы GP5 – на вход, а GP4-GP0 – на выход ********************
bcf Status,5 ; перейти в банк 0
clrf GPIO ; инициализация защелок (нули на всех защелках, кроме GP5)
movlw .7 ; биты 0..2 поднять
movwf Cmcon ; компаратор выключен, GP0, GP1, GP2 – цифровые вх/вых
clrf LBC
clrf MBC
bsf Status,5 ; Перейти в 1-й банк (установить в 1 5-й бит регистра Status).
movlw .40 ; Пишем конф-ю GPIO в аккум. (W) .40=00 101000 GP0, GP1, GP2, GP4 – выходы, остальные – входы
movwf TrisIO ; Скопировать конфигурацию GPIO из W в регистр TrisIO.
;****** Разрешить прерывания на входе GP5 *****************************************************
movlw .32 ; .32 = 00100000
movwf IOCB ; разрешить прерывание на входе GP5, на остальных – нет
bcf Status,5 ; Перейти в 0-й банк (установить в 0 5-й бит регистра Status).
movlw .8 ; .8 = 00001000
movwf INTCON ; разрешить прерывание от GPIO
bsf INTCON,7 ; разрешить прерывания
nop
;****** Сканирование наличия принятой информации ***********************************************
Scan btfsc MBC,7 ; если start бит (7-й) в регистре MBC = 1, то была принята информация (первый старт бит = 1)
goto rab_chast ;
goto Scan

;******* РАБОЧАЯ ЧАСТЬ ***************************************************************
;******* Проверка номера системы **********************************************************
rab_chast movf MBC,0
andlw .31 ; побитное “И” с 00011111 – отрезаем стартовые и управляющий биты
xorlw Sys
btfss Status,2 ; если Z=1, то следующая инстр-я не выполняется (номер совпадает с заданным)
goto nosys ;
;******* Проверка номера команды *********************************************************
movlw CMD_1
xorwf LBC,0
btfss Status,2 ; если Z=1, то следующая инструкция не выполняется
goto nocom
;****** Погасить все, зажечь зеленый *******************************************************
bcf GPIO, 0 ; погасить первый красный светодиод
bcf GPIO, 1 ; погасить второй красный светодиод
bcf GPIO, 2 ; погасить желтый светодиод
bsf GPIO, 4 ; зажечь зеленый светодиод
goto out
;****** Погасить все, зажечь второй красный ***********************************************
nosys bcf GPIO, 0 ; погасить первый красный светодиод
bcf GPIO, 2 ; погасить желтый светодиод
bcf GPIO, 4 ; погасить зеленый светодиод
bsf GPIO, 1 ; зажечь второй красный светодиод
goto out
;******* Погасить все, зажечь желтый ********************************************************
nocom bcf GPIO, 0 ; погасить первый красный светодиод
bcf GPIO, 1 ; погасить второй красный светодиод
bcf GPIO, 4 ; погасить зеленый светодиод
bsf GPIO, 2 ; зажечь желтый светодиод
;******* Сбросить признак принятия посылки и флаг прерывания ******************************
out bcf MBC,7 ; сбрасываем признак принятия посылки
bcf INTCON,0 ; сбрасываем флаг прерывания
;******* Пауза ****************************************************************************
movlw TP
movwf Counter
pause nop
nop
decfsz Counter,1
goto pause
;******* Разрешить прерывания **************************************************************
bsf INTCON,7
nop
goto Scan
end

;——————————————————————————————————————————

Приложение Д

Рисунок 1 – Схема принципиальная электрическая ИК пульта дистанционного управления

Рисунок 2 – Схема принципиальная электрическая ИК приемника дистанционного управления

Приложение Ж

Расчет стоимости основных элементов ИК – пульта

Приложение К

Расчет стоимости основных элементов ИК – приемника

Нашли опечатку? Выделите и нажмите CTRL+Enter

Похожие документы
Обсуждение

Оставить комментарий

avatar
  Подписаться  
Уведомление о
Заказать реферат!
UkrReferat.com. Всі права захищені. 2000-2019