Проектирование микропроцессорной системы управления электронным замком

Тип работы:
Дипломная
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

Реферат

Отчет 57 с., 21 рис., 1 табл., 15 источников, 3 приложения

электронный замок, touch memory, ibutton, датчики, противопожарный инвентарь, моделирование

Объектом проектирования является микропроцессорная система управления электронным замком, который должен надежно защищать противопожарный инвентарь от воздействия третьих лиц и предоставлять к нему мгновенный доступ при возникновении возгорания в помещении.

Цель работы — автоматизирование системы защиты инвентаря в местах общественного пользования.

В результате работы была создана микропроцессорная система, удовлетворяющая поставленной задаче.

Эффективность системы определяется надежностью и простотой использования, небольшими габаритами, малым электропотреблением.

Содержание

  • Введение
  • 1. Формирование требований пользователя к АС
  • 2. Техническое задание
    • 2.1 Общие сведения
    • 2.2 Назначение системы
    • 2.3 Цель создания системы
    • 2.4 Значение показателей
    • 2.5 Требования к системе
  • 3. Постановка задачи
  • 4. Разработка концепции АС
  • 5. Поиск аналогов
    • 5.1 Патентный поиск
    • 5.2 Выводы по аналогам
  • 6. Разработка структуры
    • 6.1 Описание функций, которые выполняет система
    • 6.2 Основные модули
    • 6.3 Выбор варианта структуры
    • 6.4 Алгоритм работы
  • 7. Разработка схемы
    • 7.1 Выбор микроконтроллера
    • 7.2 Структура микроконтроллера ATmega8535 [4]
    • 7.3 Описание выводов микроконтроллера ATmega 8535 [4]
    • 7.4 Выбор датчика дыма
    • 7.5 Выбор средств индикации
    • 7.6 Выбор супервизора
    • 7.7 Выбор приемопередатчика
    • 7.8 Выбор исполнительных устройств
    • 7.9 Выбор дополнительных элементов
    • 7. 10 Разработка функциональной схемы
  • 8. Описание работы принципиальной схемы
  • 9. Разработка моделирующей программы
  • 10. Программное обеспечение микроконтроллера
  • Заключение
  • Список использованных источников
  • Приложение, А Листинг моделирующей программы
  • Приложение Б Листинг прошивки микроконтроллера

Введение

В настоящее время широкое распространение получили замки, ключом к которым является электронная таблетка iButton (Touch Memory) фирмы Dallas Semiconductor. Чаще всего это устройство встречается на дверях подъездов, что обуславливается устойчивостью ключа и считывателя к погодным условиям и простой интуитивно-понятной технологией использования ключа. Однако благодаря вандалозащищенности, высокой степени безопасности, достигающейся при помощи защиты ключа от копирования, эргономичному дизайну и усиленному исполнению, которое влечет за собой значительный срок эксплуатации iButton, замки Touch Memory ныне используются и внутри зданий, стремительно вытесняя кодовые замки.

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

Разрабатываемая система направлена на автоматизацию процесса защиты противопожарного инвентаря и средств пожаротушения, а также предоставления к ним доступа на начальной стадии пожара.

1. Формирование требования пользователя к АС

Система должна соответствовать следующим основным требованиям:

1. максимальная простота при минимальной стоимости и габаритах.

2. понятная система управления, не требующая особых навыков или знания.

3. возможность перезаписи и стирания ключей из памяти замка.

4. надежная работа в заданных условиях.

2 Техническое задание

2.1 Общие сведения

2.1.1 Наименование системы

Микропроцессорная система управления цифровым замком.

2.1.2 Разработчик

Ижевский Государственный Технический Университет, кафедра «Вычислительная техника», группа 8−78−1, Олзоева В. В.

2.1.3 Заказчик

Ижевский Государственный Технический Университет.

2.2 Назначение системы

1. Защита противопожарного инвентаря от несанкционированного доступа.

2. Предоставление мгновенного доступа к противопожарному инвентарю в случае обнаружения возгорания в помещении.

3. Сигнализация при возгорании.

2.3 Цель создания системы

1. Исключение возможности порчи противопожарного инвентаря третьими лицами.

2. Ускорение процесса пожаротушения в административных помещениях.

2.4 Значение показателей

2.4.1 Режимы работы

1. Режим контроля: в основу обнаружения дыма положено определение степени прозрачности воздуха в области между инфракрасными светодиодом и фотодиодом, при обнаружении дыма датчик генерирует звуковой сигнал и по радиоканалу передает управляющему устройству сигнал о пожаре.

2. Режим автоматического открытия замка: при поступлении в управляющее устройство радиосигнала с одного из датчиков, замок автоматически открывается и остается открытым до устранения возгорания.

3. Режим открытия замка ключом-таблеткой iButton: при соприкосновении таблетки со считывателем замка происходит проверка кода. Если код таблетки зарегистрирован системой, замок открывается и остается открытым 5 секунд. Иначе не реагирует.

4. Режим программирования системы: замок может иметь максимум 9 ключей, плюс один мастер-ключ. Коды ключей заносятся в энергонезависимую память под номерами от 1 до 9. Код мастер-ключа занесен в ПЗУ микроконтроллера и не может быть изменен. Программирование новых ключей или стирание старых может быть произведено только при наличии мастер-ключа.

2.4.2 Входные данные

1. Код с ключа-таблетки типа iButton.

2. Сигнал датчика двери.

3. Степень прозрачности воздуха в помещении, считываемая датчиками дыма.

2.4.3 Выходные данные

1. Звуковой сигнал индикации дыма

2. Сигнал принудительного открывания замка

3. Сигнал закрывания замка

2.5 Требования к системе

2.5.1 Требования по электропитанию

Питание устройства осуществляется от встроенного блока питания, содержащего трансформатор, выпрямительный мост и интегральный стабилизатор. В качестве резервного источника питания используется батарея BT1-BT10 из 10-ти NiMH-аккумуляторов типоразмера AA емкостью 800мА/Ч. При питании устройства от сети батарея аккумуляторов заряжается через резистор током примерно 20мА.

2.5.2 Технические требования

1. Возможность встраивания системы в стандартную дверь

2. Обеспечение централизованного принципа управления

3. Повышенная надежность

4. Простота и удобство в использовании

5. Использование современных миниатюрных датчиков

6. Использование современной элементной базы

2.5.3 Требования к документации

Документация должна включать в себя:

— Пояснительная записка

— Схема работы системы

— Структурная схема

— Функциональная схема

— Электрическая принципиальная схема

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

Задачей является разработка микропроцессорной системы автоматического управления электронным замком, которая должна обеспечивать открытие и закрытие замка в качестве реакций на внешние воздействия — дым.

4. Разработка концепции АС

Дымовые извещатели, использующие оптические средства обнаружения, реагируют по-разному на дым разных цветов. Во время работы проектируемой системы дымовой оптический датчик определяет степень задымленности помещения и при обнаружении серого дыма подаёт звуковой сигнал. По радиоканалу микроконтроллер также получает сигнал от сработавшего дымового извещателя, открывает замок и удерживает его в открытом состоянии до устранения возгорания.

Также замок можно открыть посредством ключа-таблетки iButton.

5. Поиск аналогов

5.1 Патентный поиск

Был проведен патентный поиск и были найдены три наиболее схожих систем управления замком [9]:

1. Кодовый замок для контейнеров

2. Система доступа к объекту

3. Устройство управления кодовым замком

Рассмотрим их по порядку:

1. Кодовый замок для контейнеров

Устройство относится к запирающим устройствам и может быть использовано для защиты контейнеров от несанкционированного доступа посторонних лиц. Кодовый замок для контейнеров содержит на контейнере источник питания, дистанционный переключатель с двумя противофазными обмотками, кодовое устройство, содержащее магнитный ключ, выполненный в виде блока изолированных друг от друга магнитов, и магнитоуправляемые контакты, состоящие из групп «разрешения» и «запрета», электромеханическое запорное устройство, состоящее из исполнительных блоков, кинематически связанных с механическим замком, обмотку реле тревожной сигнализации, замыкающие контакты тревожной сигнализации, задающий генератор, генератор модулирующего кода, фазовый манипулятор, усилитель мощности и передающую антенну. На диспетчерском пункте замок содержит приемную антенну, усилитель высокой частоты, обнаружитель, удвоитель фазы, измерители ширины спектра на два, узкополосный фильтр, фазовый детектор и блок регистрации. Техническим результатом является расширение функциональных возможностей замка путем передачи тревожной информации по радиоканалу на диспетчерский пункт.

Страна публикации RU

Дата подачи заявки06. 11. 2001

Регистрационный номер заявки2 001 130 425/12

2. Система доступа к объекту

Использование: в устройствах, предотвращающих несанкционированный доступ к объекту и обеспечивающих сигнализацию при попытке взлома, например, входных дверей квартир. Сущность изобретения: для защиты от любых попыток несанкционированного доступа при упрощении эксплуатации пользователем в систему доступа к объекту, содержащую блок обработки и управления, датчик открывания двери, элемент сброса, запорный элемент, кодовый элемент и световые индикаторы, введены устройство механической блокировки активной части запорного элемента и устройство тревожной сигнализации. Выполнение блока обработки и управления также является новым.

Страна публикации RU

Дата подачи заявки 08. 10. 2001

Регистрационный номер заявки 2 001 127 423/12

3. Устройство управления кодовым замком

Изобретение относится к технике защиты объектов от доступа посторонних лиц. Устройство управления кодовым замком содержит блоки приема кода, генератор временных интервалов, преобразователь кодов, блок сравнения кодов, блок управления, группы входов и выходы. Дополнительно введены блок преобразования кода, блок сравнения кодов, вход в генератор временных интервалов и новые связи между функциональными блоками. Приведенная совокупность признаков позволяет упростить устройство управления кодовым замком путем уменьшения количества необходимых для нормальной работы устройства функциональных блоков за счет изменения алгоритма работы устройства.

Страна публикации RU

Дата подачи заявки 08. 10. 2001

Регистрационный номер заявки 2 001 127 423/12

Эти системы не отвечают поставленной нашей задачи по следующим причинам:

1. Системы реализованы на достаточно большом числе интегральных схем, что повышает их стоимость и снижает надежность.

2. В системах для открытия замка используется набор кода, который можно забыть, либо ввести неправильно. Код также может стать известен третьим лицам, что может привести к нежелательным последствиям.

3. Дымовой извещатель отсутствует как таковой, не реализовано автоматическое открывание замка в случае определенного ряда ситуаций.

5.2 Выводы по аналогам

Проведенный анализ наглядно показал, что нет аналога, удовлетворяющего поставленной задаче, имеется ряд недостатков, которые в значительной степени влияют на надежность и стоимость системы.

6. Разработка структуры

6.1 Описание функций, которые выполняет система

Для разработки структурной схемы системы управления цифровым замком, кратко опишем функции, которые должна выполнять разрабатываемая система:

— начальный запуск системы;

— запись в память микроконтроллера ключей для открытия замка;

— прием данных с дымового извещателя и их обработка;

— формирование выходного сигнала принудительного открывания замка;

— удержание замка в открытом состоянии до устранения возгорания.

6.2 Основные модули

Исходя из требований технического задания и функций, которые должна выполнять разрабатываемая система, можно выделить основные модули, из которых должна состоять вычислительная система.

6.2.1 Датчики

Датчики являются неотъемлемой частью системы, они используются для того, чтобы система могла в реальном времени реагировать на изменения внешних параметров по заранее разработанному алгоритму. В настоящее время на рынке представлено большое разнообразие различных типов датчиков, некоторые из них являются узкоспециализированными [12].

Нашей системе требуется несколько точечных оптических дымовых датчиков (извещателей), которые будут определять степень задымленности помещения и при помощи радиопередатчика (дальность действия радиоканала — до 100 метров, в условиях прямой видимости) передавать полученную информацию системе. Под плоскими потолками расстояние между любой точкой защищаемого помещения в горизонтальной проекции и ближайшим детектором не должно превышать 7,5 м. В больших помещениях используется наиболее экономичная треугольная схема размещения датчиков на потолке (см. Рисунок 1).

Рисунок 1 — Схема размещения датчиков

Согласно этой схеме, если наша система будет установлена в прямоугольном помещении площадью 18 кв.м., понадобится 1 датчик.

6.2.2 Устройство управления

Устройство управления является главной частью системы, оно необходимо для сбора и обработки информации поступающей с системы датчиков, выработки управляющих сигналов для исполнительных устройств, а также вывода информации на устройство индикации.

6.2.3 Пульт управления и устройство визуальной индикации

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

6.3 Выбор варианта структуры

В соответствии с определенными выше функциями можно определить общую структуру системы, которая представлена на втором листе графической части. Устройство управления держит замок в закрытом состоянии, ожидая подачи сигнала с дымоизвещателя, считывателя Touch Memory, либо кнопки программирования. При получении сигнала микроконтроллер действует согласно алгоритму работы, переходя в режим открытия замка, посылая соответствующие импульсы на соленоиды, либо в режим записи ключей.

6.4 Алгоритм работы

Алгоритм работы системы представлен на первом листе графической части.

6.4.1 Алгоритм обработки сигналов с считывателя

При получении сигнала с панели считывателя микроконтроллер проверяет, есть ли прикоснувшийся ключ в памяти. Если зафиксировано касание зарегистрированным пользовательским ключом, замок открывается. Если это был мастер-ключ, то нужна проверка текущего режима работы. В случае режима программирования, микроконтроллер переходит к выполнению алгоритма программирования ключей (п. 6.4. 3). Иначе замок открывается. Если ключ не зарегистрирован, замок остается закрытым.

6.4.2 Алгоритм обработки сигнала с дымоизвещателя

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

6.4.3 Алгоритм программирования ключа

Для программирования нового ключа нужно проделать следующие действия:

1. Нажать кнопку программирования

2. На индикаторе появится буква «P», что означает вход в режим программирования

3. Коснуться мастер-ключом панели Touch Memory

4. На индикаторе появится цифра «1», которая обозначает номер программируемого ключа

5. Кнопкой выбрать нужный номер

6. Коснуться любым ключом панели

7. Цифра на индикаторе начнет мигать, что говорит о готовности к программированию

8. Коснуться панели тем ключом, код которого требуется занести в память

9. В случае успешного программирования цифра на индикаторе перестанет мигать и начнет гореть постоянно

10. Для выхода из режима программирования нужно подождать 5 секунд, после чего индикатор погаснет

Если нужно запрограммировать несколько ключей, то можно сразу перейти от п. 9 к п. 5 и повторить п. 5 — 9 необходимое число раз.

Если после выполнения п. 7 окажется, что выбран не тот номер, то для исключения потери кода ключа под этим номером можно нажать кнопку или подождать 5 секунд. В первом случае текущий номер увеличится на единицу, а содержимое памяти останется без изменений. Во втором случае произойдет полный выход из режима программирования без изменения кодов. Выход из программирования можно осуществить в любой момент, если сделать паузу более 5 секунд.

Для стирания из памяти лишнего ключа последовательность действий остается такой же, как и при программировании, только все действия производятся мастер-ключом. Т. е. процесс стирания фактически является записью кода мастер-ключа на неиспользуемые номера.

Для обработки событий, связанных с программированием, имеются две подпрограммы: PROGT и PROGS. Первая вызывается при считывании кода ключа в режиме программирования, вторая — при нажатии кнопки программирования (NUMBER). Процесс программирования разбит на 3 фазы. При нажатии кнопки NUMBER осуществляется вход в программирование, т. е. переход к фазе 1. При этом на индикатор выводится буква «P». Считываемые после этого коды ключей проверяются на совпадение с кодом мастер-ключа, так как только он может позволить продолжить программирование. Если такое совпадение произошло, то осуществляется переход к фазе 2. На индикатор выводится номер текущего ключа, который кнопка NUMBER может изменять. Если снова будет зарегистрировано касание ключа, то произойдет переход к фазе 3. Еще одно касание ключа приведет к запоминанию его кода и к возврату к фазе 2. Нажатием кнопки NUMBER тоже можно вернуться к фазе 2, но без изменения содержимого памяти. Любое действие в режиме программирования вызывает перезагрузку таймера возврата, который имеет интервал 5 секунд и проверяется в основном цикле. Если будет обнаружено обнуление этого таймера, то происходит выход из режима программирования.

7. Разработка схемы

7.1 Выбор микроконтроллера

Выбор МК проводится по следующим критериям:

— минимальный размер, так как габариты платы ограничены необходимостью монтажа в дверь.

— малый ток потребления (по тем же соображением места эксплуатации будущей системы).

— МК должен иметь достаточно памяти для хранения программ работы системы.

— наличие стандартных интерфейсов передачи данных (UART, SPI).

— высокая производительность.

— минимальная стоимость.

На основании приведенных критериев было решено взять микроконтроллер ATmega8535 фирмы Atmel из семейства AVR [4]. Микроконтроллеры данного семейства изготовляются по высококачественной КМОП (CMOS) технологии, содержат энергонезависимые запоминающие устройства для хранения программы и данных, выполненные по Flash и EEPROM технологиям, и отличаются низким энергопотреблением при высокой тактовой частоте. Запись программы и исходных данных в память может выполняться после установки микроконтроллера в аппаратуре, где ему предстоит работать (ISP, In-System Programmable). Таким образом, AVR имеют высокое быстродействие и обладают хорошим соотношением функциональности и цены, благодаря чему получили широкое распространение, для них существуют удобные среды разработки, а документация переведена на русский язык, что безусловно облегчает задачу проектирования.

7.2 Структура микроконтроллера ATmega8535 [4]

В данном микроконтроллере АЛУ подключено непосредственно к 32-м рабочим регистрам, объединенным в регистровый файл. Благодаря этому АЛУ выполняет одну операцию (чтение содержимого регистров, выполнение операции и запись результата обратно в регистровый файл) за один машинный цикл.

В микроконтроллерах AVR реализована Гарвардская архитектура, которая характеризуется раздельной памятью программ и данных, каждая из которых имеет собственные шины доступа к ним. Такая организация позволяет работать одновременно как с памятью программ, так и с памятью данных. В отличие от RISC-микроконтроллеров других фирм, в микроконтроллерах AVR используется 2-уровневый конвейер, а длительность машинного цикла составляет всего один период кварцевого генератора.

Структурная схема микроконтроллера приведена на рисунке 2.

1. Счетчик команд

Размер счетчика команд составляет 12 разрядов. Напрямую (как регистр) счетчик команд из программы недоступен.

При нормальном выполнении программы содержимое счетчика команд автоматически увеличивается на 1 или на 2 (в зависимости от выполняемой команды) в каждом машинном цикле. Этот порядок нарушается при выполнении команд перехода, вызова и возврата из подпрограмм, а также при возникновении прерываний.

После включения питания, а также после сброса микроконтроллера в счетчик программ автоматически загружается значение $ 000. Как правило, по этому адресу располагается команда перехода (RJMP) к инициализационной части программы.

При возникновении прерывания в счетчик команд загружается адрес соответствующего вектора прерывания ($ 001… $ 014). Если прерывания используются в программе, по этим адресам должны размещаться команды относительного перехода к подпрограммам обработки прерываний. В противном случае основная программа может начинаться непосредственно с адреса $ 001.

Рисунок 2 — Архитектура микроконтроллера ATmega8535

2. Регистры общего назначения (РОН) микроконтроллера

Все 32 РОН непосредственно доступны АЛУ, в отличие от микроконтроллеров других фирм. Любой РОН может использоваться во всех командах и как операнд-источник, и как операнд-приемник. Исключение составляю лишь пять арифметических и логических команд, выполняющих действия между константой и регистром (SBCI, SUBI, CPI, ANDI, ORI), а также команда загрузки константы в регистр (LDI). Эти команды могут обращаться только ко второй половине регистров (R16…R31).

Два старших регистра общего назначения формируют 16-разрядный индексный регистр Z, который используется в качестве указателя при косвенной адресации памяти программ и памяти данных. Так как объем адресуемой памяти составляет всего 32 байт, при обращении к ней используется только младший байт (регистр R30). Содержимое старшего байта индексного регистра (регистр R31) при косвенной адресации памяти данных автоматически очищается процессором.

3. Регистры ввода/вывода (РВВ) микроконтроллера

Регистры ввода/вывода (РВВ) располагаются в так называемом пространстве ввода/вывода размером 64 байт. Все РВВ можно разделить на две группы: служебные регистры микроконтроллера и регистры, относящиеся к периферийным устройствам (в том числе порты ввода/вывода). Размер каждого регистра — 8 бит.

Сторожевой таймер используется для защиты от аппаратных сбоев, например, если программа перешла в бесконечный цикл.

Регистр команд содержит команду, которая выбирается из FLASH-памяти программ для выполнения.

При необходимости к генератору микроконтроллера можно подключить внешний тактовый генератор на основе кварца. Если необходимости в увеличении стандартной тактовой частоты нет, то можно использовать встроенный генератор.

Начальная синхронизация происходит с приходом на вход синхронизатора сигнала RESET.

7.3 Описание выводов микроконтроллера ATmega 8535 [4]

Выводы микроконтроллера представлены на рисунке 3. Описание выводов представлено в таблице 1.

Рисунок 3 — Выводы микроконтроллера ATmega 8535

Таблица 1

Описание выводов микроконтроллера ATmega8535

1

2

3

4

Обозначение

Номер вывода

Тип вывода

Описание

XTAL1

13

I

Вход тактового генератора

XTAL2

12

О

Выход тактового генератора

RESET

9

I

Вход сброса

РА0 (ADC0)

40

I/O

0-й разряд порта, А (0-й вход АЦП)

РА1 (ADC1)

39

I/O

1-й разряд порта, А (1-й вход АЦП)

РА2 (ADC2)

38

I/O

2-й разряд порта, А (2-й вход АЦП)

РАЗ (ADC3)

37

I/O

3-й разряд порта, А (3-й вход АЦП)

РА4 (ADC4)

36

I/O

4-й разряд порта, А (4-й вход АЦП)

РА5 (ADC5)

35

I/O

5-й разряд порта, А (5-й вход АЦП)

РА6 (ADC6)

34

I/O

6-й разряд порта, А (6-й вход АЦП)

РА7 (ADC7)

33

I/O

7-й разряд порта, А (7-й вход АЦП)

РВ0(XCK/T0)

1

I/O

0-й разряд порта В (вход внешнего опорного сигнала для USART/вход внешнего тактового сигнала таймера/счетчика 0)

РВ1 (T1)

2

I/O

1-й разряд порта В (вход внешнего тактового сигнала таймера/счетчика 1)

РВ2 (INТ2/AIN0)

3

I/O

2-й разряд порта В (вход внешнего прерывания 2/положительный вход компаратора)

РВЗ (OC0/AIN1)

4

I/O

3-й разряд порта В (выход сравнения таймера/счетчика 0/отрицательный вход компаратора)

PB4 (SS)

5

I/O

4-й разряд порта В (Вход выбора ведомого SPI)

РВ5 (MOSI)

6

I/O

5-й разряд порта В (выход ведущего/вход ведомого SPI)

РВ6 (MISO)

7

I/O

6-й разряд порта В (вход ведущего/выход ведомого SPI)

РВ7 (SCK)

8

I/O

7-й разряд порта В (опорная частота SPI)

РC0 (SCL)

22

I/O

0-й разряд порта C (линия опорной частоты для Two-wire Serial Bus)

РC1 (SDA)

23

I/O

1-й разряд порта C (линия входа/выхода для Two-wire Serial Bus)

РC2

24

I/O

2. 5-й разряды порта C

РCЗ

25

I/O

РC4

26

I/O

РC5

24

I/O

РC6(TOSC1)

28

I/O

6-й разряд порта C (вход внешнего тактового генератора для таймера 2)

PD0(RXD)

14

I/O

0-й разряд порта D (вход для UART)

PD1(TXD)

15

I/O

1-й разряд порта D (выход для UART)

Обозначение

Номер вывода

Тип вывода

Описание

PD2(INT0)

16

I/O

2-й разряд порта D (вход внешнего прерывания 0)

PD3(INT1)

17

I/O

3-й разряд порта D (вход внешнего прерывания 1)

PD4(OC1B)

18

I/O

4-й разряд порта D (выход сравнения A таймера/счетчика 1)

PD5(OC1A)

19

I/O

5-й разряд порта D (выход сравнения B таймера/счетчика 1)

PD6(ICP1)

20

I/O

6-й разряд порта D (вход захвата таймера/счетчика 1)

PD7(OC2)

21

I/O

7-й разряд порта D (выход сравнения таймера/счетчика 2)

GND

11,31

P

Общий вывод

VCC, AVCC

10,30

P

Вывод источника питания цифровой и аналоговой частей

AREF

32

I

Вход эталонного напряжения для ЦАП

7.4 Выбор датчика дыма

В системе используется один оптический точечный беспроводной датчик дыма. Из соображений соотношения цены и качества был выбран Питбуль HM-603PR, который совмещает все самые прогрессивные технологии:

— автоматический сброс;

— автоматическое тестирование и тестирование в ручном режиме;

— защита от попадания прямого света, пыли, жидкости на фоточувствительный элемент детектора;

— регулировка чувствительности;

— высокая стабильность и соответствие Европейским нормам;

— индикация разряда батареи питания;

Схематическое изображение компонентов извещателя представлено на рисунке 4.

Рисунок 4 — Схематическое изображение компонентов извещателя

Условные обозначения:

1) Блок джамперов для настройки беспроводного адреса и зоны извещателя детектора.

2) Кнопка «Тест» — используется для тестирования детектора, а также для подачи условной ложной тревоги на центральную консоль.

3) Фотоэлектрический (оптический) узел детектор.

4) Резистор регулировки чувствительности детектора.

5) Встроенная пьезосирена оповещения тревоги (85дБ).

Технические характеристики:

Питание: 9 В постоянного тока (батарея типа «Крона»)

Потребление в рабочем режиме: менее 10 мкА

Потребление в режиме тревоги: не более 20мкА

Световое оповещение о срабатывании: LED светодиод красного цвета

Звуковое оповещение о срабатывании: встроенная сирена с громкостью звука не менее 85дБ

Эксплуатационный диапазон температур: от 10 °C до +50°С

Максимальная влажность: не более 95%(без образования конденсата)

Диапазон детектирования: 20кв. метров

Помехоустойчивость по РЧ 30В/м

Рабочая среда внутри помещения, IP-40

Оповещение на центральную консоль: шифрованный радиоканал

Кодирование передающего радиосигнала: протокол Pitbul 22 621 527

Радиочастота передающего радиосигнала: 315Мгц433Мгц

Дистанция радиопередачи: 100 метров (прямая видимость)

Размеры: 107 мм (диаметр)Ч 35 мм (глубина)

Соответствует стандартам ISO 12 239, EN — 54−7, ETSI EN 399 220, ETS 300 683.

7.5 Выбор средств индикации

В системе необходимо визуально отображать номер записываемого или стираемого ключа и вход в режим программирования. Для этих целей подойдет одноразрядный семисегментный индикатор. Например, LTS6660E фирмы Lite-On Electronics.

Рисунок 5 — Индикатор и схема подключения

Цвет свечения: зеленый

Пиковая длина волны: 565 нм

Напряжение: 2.1 В

Ток: 20 мА

Интенсивность свечения: 24… 33 мкд

Габариты: 38.0 (ширина) х 56.0 (высота) мм.

Однако этот индикатор будет скрыт корпусом. Об открытости двери будет сигнализировать свечение светодиода. Выбираем сверхъяркий светодиод LUR13433, обладающий следующими параметрами:

Цвет: красный

Длина волны: 660нм

Напряжение питание (при 20мА): 1,5…2,4В

Вертикальный угол обзора: 36°

Горизонтальный угол обзора: 56°

Рабочая температура: -40°С …+85°С

7.6 Выбор супервизора

Супервизоры питания — интегральные микросхемы, которые изменяют состояние своего выходного цифрового сигнала, если уровень напряжения питания снизился ниже определенной пороговой величины напряжения. Доминирующей сферой использования таких устройств являются микропроцессорные системы, особенно если в них используются энергонезависимые запоминающие устройства. Применение супервизоров питания в таких системах позволяет устранить следующие проблемы:

— несанкционированное поведение микропроцессора/микроконтроллера при подаче питания и снятии питания, т. е. если существуют интервалы времени, когда напряжение питания находится на недостаточном уровне для корректной дешифрации и исполнения кода команды;

— как следствие из первого пункта, инициация самопроизвольной записи в энергонезависимую память за счет сбоя в выполнении программы;

— инициация процесса записи в энергонезависимую память, когда напряжение питания заведомо находилось на уровне недостаточного для корректного завершения процесса записи.

В проектируемой системе будет использован супервизор ADM1232 со следующими параметрами:

Порог срабатывания, В4. 65

Точность срабатывания, %5

Минимальное время срабатывания, мс150

Мин напряжение питания, В1

Макс. ток потребления, мкА500

Температурный диапазон, С-40…+85

Тип корпусаDIP8

7.7 Выбор приемопередатчика

Нам необходим одноканальный приемопередатчик, работающий на частоте 433 МГц. В пару к микроконтроллеру фирмы Atmel идеально подойдет приемопередатчик ATA5811 [5] той же фирмы. Отличительными особенностями этого приемопередатчика являются низкое энергопотребление и небольшие размеры. ATA5811 применяется в носимых применениях, в счетчиках электроэнергии, системах автоматизации зданий, охранных системах и телеметрии. Он предназначен для полудуплексной передачи данных. Наличие блоков цифровой логики и FIFO позволяет приемопередатчику самому принимать и передавать сообщения, освобождая ресурсы микроконтроллера для кодирования и других задач [15].

Частота передачи, МГц315/433

Скорость передачи данных, кбит/с40/20

Модуляция АМн / ЧМн

Выходная мощность, дБм10

Ток потребления off 0. 01мкА

Ток потребления aсtive 15. 8мА/17,3мА

Чувствительность (АМн), дБм116,5/-114

Чувствительность (ЧМн), дБм-109,5/-107

Напряжение питания, В2,4−3,6

Корпус QFN48

Температурный диапазон, C-40… +105

7.8 Выбор исполнительных устройств

Система должна управлять дверью. Для открывания и закрывания замка выберем соленоид AK2022L фирмы Shenzhen Yaxin Electric Manufacturing Co.

Рисунок 6 — Соленоид

Rated voltage: 12V DC

Rated current: 1. 0A

DC resistance: 12 Ohms (at 20 degrees Celsius) ±10%

Pull force: 450g minimu

Ambient temperature: 20 degrees Celsius at 12V DC

Insulation resistance: normal temperature/humidity, 50M ohms or above at 500V DC

Withstanding voltage: 1,000V AC for one second under normal situation, in case the test result is not in doubt, the test voltage can be

Used 120% voltage for one second

Insulation class: A class

7.9 Выбор дополнительных элементов

Для питания микропроцессора от сети 220 В необходима схема согласования, так как процессор питается от постоянного напряжения в 5 В. Будем использовать трансформатор понижающий Штиль ОСМ Т220.

Напряжение первичной обмотки: — 220 В

Напряжение вторичной обмотки: — 12 В (переменное)

Степень защиты: — IP 20

В качестве диодного моста будем использовать схему DB157. Внешний вид диодного моста представлен на рисунке 7.

Максимальное постоянное обратное напряжение — 1000 В

Максимальное импульсное обратное напряжение — 1000 В

Максимальный прямой ток — 1,5 А

Максимальный допустимый прямой импульсный ток — 60 А

Максимальный обратный ток — 50 мкА

Максимальное прямое напряжение — 1.1 В

Рабочая температура — 55…125°С

Способ монтажа — в отверстие

Корпус — DB-1

Рисунок 7 — Диодный мост DB157

Для управления программированием микроконтроллера необходим миниатрюрный переключатель, кнопочный с самовозвратом. Например, ПКн-159−3.

Рисунок 8 — Переключатель ПКн-159−3

Рисунок 9 — Внешний вид и технические характеристики переключателя

Остальные элементы выбираются согласно схемам подключения микросхем, приведенным в соответствующей технической документации.

7. 10 Разработка функциональной схемы

Функциональная схема представлена на третьем листе графической части. Дымовой извещатель сообщается с микроконтроллером через приемопередатчик, который берет на себя всю работу по обработке радиосигнала. Остальные части системы подключаются к микроконтроллеру через описанные в документации схемы согласования напряжения. Обработка сигнала с кнопки NUMBER и супервизора осуществляется программно. Порт, А используется для семисегментной индикации.

противопожарный автоматизация электронный замок

8. Описание работы принципиальной схемы

Электрическая принципиальная схема приведена на четвертом листе графической части работы.

Основой конструкции является микроконтроллер DD2 типа ATmega8535 фирмы Atmel. К порту PA подключен 7-сегментный индикатор, который используется при программировании ключей. Для этих же целей предназначена и кнопка SB1, подключенная к порту PC3. Хранение серийных номеров ключей осуществляется в EEPROM микроконтроллера. Внешняя панелька для iButton подключается к порту PD3 через разъем XP1 и элементы защиты VD6, R2, VD8 и VD9. Подтягивающий резистор R3 выбран согласно спецификации однопроводной шины.

Исполнительным устройством замка является электромагнит, подключенный через терминал XT1. Электомагнитом управляет ключ VT3, в качестве которого используется мощный МОП-транзистор типа IRF540. Диод VD10 защищает от выбросов самоиндукции. Ключом VT3 управляет транзистор VT2, который инвертирует сигнал, поступающий с порта PD0 и обеспечивает управляющие уровни 0/12 В на затворе VT3. Инверсия нужна для того, чтобы исполнительное устройство не срабатывало во время сброса микроконтроллера, когда на порту присутствует уровень логической единицы. 12-вольтовые управляющие уровни позволили применить обычный МОП-транзистор вместо более дефицитного низкопорогового (logick level).

Для индикации открытия замка используется светодиод, который управляется тем же портом, что и электромагнит, но через транзисторный ключ VT1. Светодиод подключается через тот же разъем, что и iButton. Поскольку устройство должно работать круглосуточно без обслуживания, для повышения надежности установлен супервизор D2 типа ADM1232. Он имеет встроенный сторожевой таймер и монитор питания. На порту PD1 микроконтроллер формирует периодические импульсы для сброса сторожевого таймера.

Питание устройства осуществляется от встроенного блока питания, содержащего трансформатор T1, выпрямительный мост VD1-VD4 и интегральный стабилизатор D3. В качестве резервного источника питания используется батарея BT1-BT10 из 10-ти NiMH-аккумуляторов типоразмера AA емкостью 800мА/ч. При питании устройства от сети батарея аккумуляторов заряжается через резистор R1 током примерно 20мА, что составляет 0,025C. Режим зарядки малым током называют капельным (trickle charge). В таком режиме аккумуляторы могут находиться сколь угодно долго, контроль конца процесса зарядки не требуется. Когда аккумуляторы оказываются полностью заряженными, забираемая ими от источника питания энергия превращается в тепло. Но поскольку ток зарядки очень маленький, выделяемое тепло рассеивается в окружающее пространство без сколько-нибудь заметного увеличения температуры аккумуляторов.

9. Разработка моделирующей программы

9.1 Определение концепции моделирующей программы

Моделирующая программа призвана служить моделью разрабатываемой микропроцессорной системы. В ней должны быть заложены все ответные реакции МПС на внешние воздействия, такие как:

1. Выбранный режим работы

2. Текущая степень задымленности помещения

3. Касание ключом панели Touch Memory (мастер-ключ, зарегистрированный и не зарегистрированный ключ пользователя)

Выходные данные моделирующей программы также должны соответствовать выходным данным микропроцессорной системы.

Моделирование будет производиться в среде Delphi7, так как эта она обладает удобными инструментами для создания приложений и работы с окнами, имеет стандартные средства управления и несложна в программировании. Модель, созданная при помощи Delphi7, будет простой и наглядной.

При запуске программы необходимо нажать кнопку «включение», затем выбрать режим работы. Смоделирован, как режим контроля, в котором система считывает данные с дымового извещателя, так и режим программирования (записи и стирания ключей). Ответные реакции микроконтроллера и системы будут выведены текстом в одно из окон приложения.

Листинг программы приведен в приложении А.

9.2 Анализ работы системы в моделирующей программе

Для анализа работоспособности системы проведем демонстрацию всех возможностей моделирующей программы.

1. Инициализация системы

Рисунок 10

2. Режим контроля. Установлено возгорание

Рисунок 11

Рисунок 12

Рисунок 13

3. Режим контроля. Возгорания нет

Рисунок 14

4. Режим контроля. Было касание ключом

Рисунок 15

Рисунок 16 — Зарегистрированный ключ

Рисунок 17 — Незарегистрированный ключ

5. Режим программирования. Стирание ключей

Рисунок 18

6. Режим программирования. Запись ключей

Рисунок 19

Рисунок 20

7. Отключение системы

Рисунок 21

10. Программное обеспечение микроконтроллера

Программа написана на языке Assembler, что делает код быстрее, чем если бы она была написана на Си. Кроме того, язык низкого уровня обеспечивает прямой доступ к портам ввода-вывода и регистрам микроконтроллера.

Код мастер-ключа записывается в ПЗУ программ микроконтроллера, начиная с адреса 2FDH. Длина кода составляет 8 байт. Последовательность цифр должна быть такая же, как и на корпусе touch-memory, читать нужно слева направо. Т. е. по адресу 2FDH заносится значение контрольной суммы, затем по адресам 2FEH — 303H шесть байт серийного номера, начиная со старшего байта, и, наконец, по адресу 304H — код семейства. Например, код в целом может выглядеть так: 67 00 00 02 D6 85 26 01.

Листинг программы для микроконтроллера приведен в приложении Б.

Заключение

Разработанная микропроцессорная система управления электронным замком полностью удовлетворяет поставленным требованиям. Осуществляется мониторинг и контроль дымовых оптических извещателей и вырабатываются ответные сигналы в зависимости от получаемых с датчиков данных. Реализована возможность перезаписи ключей типа iButton в память микроконтроллера.

Результаты моделирования на персональном компьютере показали, что разработанная микропроцессорная система функционирует правильно и выполняет возложенные на нее задачи.

Список использованных источников

1. Моченов С. В. Методические указания по выполнению курсового проекта по дисциплине «Микропроцессорные системы» — Ижевск: ИжГТУ, 2007 г.

2. Баранов В. Н. Применение микроконтроллеров AVR: схемы, алгоритмы, программы. — М. Ж Издательский дом «Додэка XXI», 2004

3. Гребнев В. В. Микроконтроллеры семейства AVR фирмы Atmel. — М.: ИП РадиоСофт, 2002 — 176с.

4. Datasheet: Atmel 8-bit AVR Microcontroller.

5. Datasheet: Atmel UHF ASK/FSK Transceiver.

6. Datasheet: ADM1232 Microprocessor Supervisory Circuit.

7. Datasheet: LTS-6000 Series.

8. http: //www. chip-dip. ru

9. http: //ru-patent. info

10. http: //www. diagram. com. ua/list/tem. shtml

11. http: //www. guarda. ru/guarda/data/fire_ir/txt21. php

12. http: //ru. wikipedia. org/wiki/Пожарный_извещатель

13. http: //www. ig-store. com. ua/index. php? productID=353

14. http: //ru. wikipedia. org/wiki/AVR

15. http: //www. mymcu. ru/Production/tables/priem_pered. htm

Приложение А

Листинг моделирующей программы

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Menus, StdCtrls, Unit2;

type

TForm1 = class (TForm)

Memo1: TMemo;

MainMenu1: TMainMenu;

N4: TMenuItem;

N5: TMenuItem;

N1: TMenuItem;

N2: TMenuItem;

Button1: TButton;

Button2: TButton;

N3: TMenuItem;

N6: TMenuItem;

procedure N1Click (Sender: TObject);

procedure N2Click (Sender: TObject);

procedure Button1Click (Sender: TObject);

procedure Button2Click (Sender: TObject);

procedure N3Click (Sender: TObject);

procedure N6Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

uses Unit3, Unit4;

{$R *. dfm}

procedure TForm1. N1Click (Sender: TObject);

begin

Form3. Show;

Memo1. Lines. Add ('Система в режиме контроля');

end;

procedure TForm1. N2Click (Sender: TObject);

begin

Form4. Show;

Memo1. Lines. Add ('Запущен режим программирования');

end;

procedure TForm1. Button1Click (Sender: TObject);

begin

Memo1. Clear;

Memo1. Lines. Add ('Система запущена');

end;

procedure TForm1. Button2Click (Sender: TObject);

begin

Memo1. Clear;

Memo1. Lines. Add ('Работа системы остановлена');

end;

procedure TForm1. N3Click (Sender: TObject);

begin

Memo1. Clear;

Memo1. Lines. Add ('Установлено касание ключа к панели. ');

Memo1. Lines. Add ('Ключ найден в памяти микроконтроллера. ');

Memo1. Lines. Add ('Замок открывается. ');

end;

procedure TForm1. N6Click (Sender: TObject);

begin

Memo1. Clear;

Memo1. Lines. Add ('Установлено касание ключа к панели. ');

Memo1. Lines. Add ('Ключ не найден в памяти микроконтроллера. ');

Memo1. Lines. Add ('Замок закрыт. ');

end;

end.

//------------------------------------------------------------------------------------------

unit Unit3;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Menus, StdCtrls;

type

TForm3 = class (TForm)

Memo1: TMemo;

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

procedure N2Click (Sender: TObject);

procedure N3Click (Sender: TObject);

{procedure ExitClick (Sender: TObject); }

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form3: TForm3;

implementation

uses Unit1;

{$R *. dfm}

procedure TForm3. N2Click (Sender: TObject);

begin

Memo1. Clear;

Memo1. Lines. Add ('Внимание! В помещении обнаружено возгорание. ');

Memo1. Lines. Add ('Замок открывается. ');

end;

procedure TForm3. N3Click (Sender: TObject);

begin

Memo1. Clear;

Memo1. Lines. Add ('Показатели задымления в пределах нормы. ');

Memo1. Lines. Add ('Замок закрыт. ');

end;

end.

//------------------------------------------------------------------------------------------

unit Unit4;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Menus;

type

TForm4 = class (TForm)

MainMenu1: TMainMenu;

N1: TMenuItem;

Memo1: TMemo;

N2: TMenuItem;

N11: TMenuItem;

N21: TMenuItem;

N31: TMenuItem;

N41: TMenuItem;

N51: TMenuItem;

N61: TMenuItem;

N71: TMenuItem;

N81: TMenuItem;

N91: TMenuItem;

procedure N1Click (Sender: TObject);

procedure N11Click (Sender: TObject);

procedure N21Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form4: TForm4;

implementation

{$R *. dfm}

procedure TForm4. N1Click (Sender: TObject);

begin

Memo1. Clear;

Memo1. Lines. Add ('Было касание мастер-ключом в режиме

программирования. ');

Memo1. Lines. Add ('Все пользовательские ключи стерты. ');

end;

procedure TForm4. N11Click (Sender: TObject);

begin

Memo1. Clear;

Memo1. Lines. Add ('1-ый ключ записан в память микроконтроллера. ');

end;

procedure TForm4. N21Click (Sender: TObject);

begin

Memo1. Clear;

Memo1. Lines. Add ('2-ой ключ записан в память микроконтроллера. ');

end;

end.

Приложение Б

Листинг прошивки микроконтроллера

; ------ DALLAS DS1990A based lock ------

; ------ Supports 9 keys + 1 master-key -----

; TARGET= AT89C2051

DEBUG= 0; 0-off, 1-rdfn ports, 2-on

#INCLUDE «LIBR51. ASM»;8051 SFR set

CLK_KHZ= 10 000; OSC frequency, KHZ

RTC_MS = 20; system clock, MS

RTCV= -(CLK_KHZ*RTC_MS)/12

; Macros:

#DEFINE LO (XXX) XXX & 0FFH

#DEFINE HI (XXX) (XXX > > 8) & 0FFH

#IF (DEBUG> 1)

#INCLUDE «LIBDEF. ASM»

#ENDIF

; ------ Constantes ------

MAXK. EQU 9; max number of keys

I2C_ADDR. EQU 0A0H; I2C address for 24C02 (A0,A1,A2=0)

TMATMV. EQU 25; x20mS TM access delay time

AENTMV. EQU 2; x20mS TM access enable delay

OPNTMV. EQU 150; x20mS open pulse duration

RETTMV. EQU 250; x20mS return to normal mode delay

; ------ Ports ------

DDATA. EQU P1; display data port

KEYOP. EQU INT0; key OPEN

OWP. EQU INT1; 1-Wire port

SDA. EQU T0; I2C SDA line

SCL. EQU T1; I2C SCL line

SOLEN. EQU RXD; solenoid control line

WD. EQU TXD; watchdog line

KEYSL. EQU P3. 7;key SELECT

; ------ Variables ------

; Bit addressing memory:

RTPC. EQU 020H; Real time program counter

T040M. EQU O20H. 0;40mS period bit

T080M. EQU O20H. 1;80mS period bit

T160M. EQU O20H. 2;160mS period bit

T320M. EQU O20H. 3;320mS period bit

T640M. EQU O20H. 4;640mS period bit

T1S28. EQU O20H. 5;1. 28S period bit

T2S56. EQU O20H. 6;2. 56S period bit

T5S12. EQU O20H. 7;5. 12S period bit

RTPCS. EQU 021H; Real time program counter (100mS part)

FLAGS1. EQU 022H

PROG. EQU O22H. 0;program mode flag

SNUM. EQU O22H. 1;set number flag

BLINK. EQU O22H. 2;display blink bit

SLKPR. EQU O22H. 3;SELECT press flag

OPNPR. EQU O22H. 4;OPEN press flag

; Internal Data Memory:

. ORG 0030H; data memory segment

ROMD. DS 8; touch memory ROM data

TEMP. DS 1; temporary byte (used in ACCESS90)

TMATM. DS 1; touch memory access timer

AENTM. DS 1; TM access enable timer

OPNTM. DS 1; open timer

RETTM. DS 1; return timer

NUM. DS 1; current PRG number (1. 9)

; Debugger variables:

#IF (DEBUG> 1)

DBGVA. DS 1; debugger variable address in internal memory

DBGVV. DS 1; debugger variable value in internal memory

DBGA. EQU 0FFFFH; debugger address in external memory

#ENDIF

STACK: ;stack location

; ------ Vectors Area ------

. ORG 0000H; reset vector

LJMP INIT

. ORG 000BH; INT TIMER 0 vector

LJMP RTC

; ------ Main Program ------

INIT: MOV SP,#STACK; stack init

#IF (DEBUG> 1)

DEBUGINIT; debug init

#ENDIF

; Variables init:

CLR A

MOV FLAGS1, A; clear flags 1

MOV TMATM, A; touch memory access timer clear

MOV AENTM, A; touch memory access delay timer clear

MOV OPNTM, A; open timer clear

MOV RETTM, A; return timer clear

; Periferal setup:

CLR TR0; timer 0 stop

CLR TR1; timer 1 stop

MOV TMOD,#11H; timer 0 and timer 1 init

MOV TL0,#LO (RTCV); timer 0 load

MOV TH0,#HI (RTCV)

SETB TR0; timer 0 start

CLR PT0; int. timer 0 low priority

SETB ET0; int. timer 0 enable

SETB EA; interrupts enable

; ------ Main Loop ------

; Read touch memory:

MAIN: LCALL ACCESS90; read touch memory

JNC NOTCH; no touch

JB PROG, PRG; jump to process PROG mode

LCALL CHKMAS; check for master code

JC OPN

LCALL CHKMEM; check for member code

JC OPN

SJMP NOTCH

PRG: LCALL PROGT; process PROG mode when touch

SJMP NOTCH

OPN: LCALL OPEN; open door

; Check open key:

NOTCH: LCALL CHKOPK; check open key

JNC NOOPN

LCALL OPEN; open door

; Check select key:

NOOPN: LCALL CHKSLK; check select key

JNC NOSEL

LCALL PROGS; process PROG mode when select

; Open timer check:

NOSEL: MOV A, OPNTM

JNZ NOCLS

LCALL CLOSE; solenoid off

; Return timer check:

NOCLS: MOV A, RETTM

JNZ NORET

LCALL RETMD; return to normal mode

; Display, watchdog wakeup:

NORET: LCALL DISP; display

LCALL WAKEUP; watchdog wakeup

LJMP MAIN

; ------ Subroutines Area ------

; Process PROG mode when touch:

PROGT: JB SNUM, PRGT1; SNUM = 1 ?

LCALL CHKMAS; check for master

JC PRGT3

RET

PRGT3: SETB SNUM; set «set number» flag

CLR BLINK; clear blink flag

MOV NUM,#1; clear number

MOV RETTM,#RETTMV; load return delay

RET

PRGT1: JB BLINK, PRGT2; PROG = 1, BLINK = 0 ?

SETB BLINK; set blink flag

MOV RETTM,#RETTMV; load return delay

RET

PRGT2: LCALL SAVE; NVM[NUM] <- new key

CLR BLINK; clear blink flag

MOV RETTM,#RETTMV; load return delay

RET

; Process PROG mode when select:

PROGS: JB PROG, PRGS1; PROG = 1 ?

SETB PROG; set program mode flag

CLR SNUM; clear «set number» flag

CLR BLINK; clear blink flag

MOV RETTM,#RETTMV; load return delay

RET

PRGS1: JNB SNUM, PRGS2; SNUM = 0 ?

CLR BLINK; clear blink flag

INC NUM; NUM + 1

MOV A, NUM

CJNE A,#MAXK+1,PRGS2

MOV NUM,#1

PRGS2: MOV RETTM,#RETTMV; load return delay

RET

; Return to normal mode:

RETMD: CLR BLINK; clear blink flag

CLR PROG; clear program mode flag

CLR SNUM; clear «set number» flag

RET

; Open door:

OPEN: CLR SOLEN

MOV OPNTM,#OPNTMV; load open pulse duration

RET

; Solenoid off:

CLOSE: SETB SOLEN

RET

; Check open key:

; Returns C=1 if pressed

CHKOPK: JNB KEYOP, OP1; jump if key OPEN pressed

CLR OPNPR; clear OPEN pressed flag

OP3: CLR C

RET

OP1: JB OPNPR, OP2

LCALL DEL15; delay 15 mS

JB KEYOP, OP3

SETB OPNPR; set OPEN pressed flag

OP2: SETB C;C <- 1 if key OPEN pressed

RET

; Check select key:

; Returns C=1 if pressed

CHKSLK: JNB KEYSL, SL1; jump if key SELECT pressed

CLR SLKPR; clear SELECT pressed flag

SL2: CLR C

RET

SL1: JB SLKPR, SL2

LCALL DEL15; delay 15 mS

JB KEYSL, SL2

SETB SLKPR; set SELECT pressed flag

SETB C;C <- 1 if key SELECT pressed

RET

; Watchdog wakeup:

WAKEUP: MOV C, T040M

MOV WD, C

RET

; ------ 1-Wire bus support ------

; Send reset pulse to OWP and receive presence pulse

; Out: C = 1 if OK

TRESET: PUSH B

CLR OWP; OWP <- 0

MOV B,#CLK_KHZ/48

DJNZ B,$; delay 500 uS

CLR EA; interrupt disable

SETB OWP; OWP <- 1 (0uS)

MOV B,#CLK_KHZ/2000

DJNZ B,$; delay

MOV C, OWP; read OWP (14 uS)

JNC FAIL; fail if OWP = 0

MOV B,#CLK_KHZ/500

DJNZ B,$; delay

MOV C, OWP; read OWP (66 uS)

JC FAIL; fail if OWP = 1

SETB EA; interrupts enable

MOV B,#CLK_KHZ/100

DJNZ B,$; delay

MOV C, OWP; read OWP (312 uS or more)

JC RESOK; OK if OWP = 1

FAIL: CLR C

SETB EA; interrupts enable (if fail)

RESOK: POP B

RET

; Read/Write byte via 1-Wire bus

; Input: A — input byte

; R4 — CRC

; Out: A — output byte

; R4 — updated CRC

TBYTE: PUSH B

MOV B,#8; perform to read 8 bit

TBYTE1: RRC A;C <- bit

LCALL TBIT; transmit bit

DJNZ B, TBYTE1; next bit

RRC A;A <- last bit

POP B

RET

; Read/Write bit via 1-Wire bus

; Input: C — input bit.

; R4 — CRC

; Out: C — output bit

; R4 — updated CRC

TBIT: PUSH ACC

CLR EA; interrupts disable

CLR OWP; OWP <- 0 (begin of time slot)

NOP; delay to be sure…

NOP; that thermometr…

NOP; looks low level

JC TB1

SJMP TB0; if data bit = 0 then OWP <- 0

TB1: SETB OWP; if data bit = 1 then OWP <- 1

NOP; delay for data setup

TB0: NOP

NOP

NOP

NOP

; NOP;10 MHz !

; NOP

MOV C, OWP; read port 15 uS later

PUSH B; save register B

MOV B,#CLK_KHZ/706

DJNZ B,$; delay to complete 60 uS slot

POP B; restore register B

SETB OWP; OWP <- 1, end of time slot

SETB EA; interrupts enable

PUSH PSW; update CRC, save C

RLC A; ACC.0 <- C

XRL A, R4; ~ACC.0 if CRC.0 = 1

RRC A; ACC.0 -> C

MOV A, R4;A <- CRC

JNC BCRC0

XRL A,#18H; update CRC

BCRC0: RRC A; shift CRC

MOV R4, A; CRC <- new value

POP PSW; restore C

POP ACC

RET

; Accesses to DALLAS DS1990A touch memory.

; Returns C=1 in case of valid code, else C=0.

; Out: ROMD (8 bytes)

ACCESS90: CLR C; indicate failure

MOV A, AENTM; check access enable timer

JNZ RET90; exit if AENTM > 0

MOV AENTM,#AENTMV; reload access enable timer

LCALL TRESET; issue reset pulse

JNC RET90; leave if no parts on bus

CLR C; indicate failure

MOV A, TMATM; check TM access timer

JNZ DIS90; exit if TMATM > 0

MOV A,#033H; read ROM command

LCALL TBYTE; send command byte

MOV R0,#ROMD; init pointer

MOV R1,#8; init counter

MOV R4,#0; initialize CRC variable

ПоказатьСвернуть
Заполнить форму текущей работой