Электронный кодовый замок

Автор работы: Пользователь скрыл имя, 02 Сентября 2011 в 10:53, курсовая работа

Описание

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

Содержание

ВВЕДЕНИЕ 4
1 АНАЛИЗ ЗАДАЧИ 5
2 РАЗРАБОТКА СТРУКТУРНОЙ СХЕМЫ 6
3 ВЫБОР И ОБОСНОВАНИЕ ЭЛЕМЕНТНОЙ БАЗЫ 7
3.1 ИСПОЛНИТЕЛЬНЫЙ ЭЛЕМЕНТ ЭЛЕКТРОМЕХАНИЧЕСКОГО ЗАМКА 7
3.2 КЛАВИАТУРА 9
3.3 УСТРОЙСТВО СИГНАЛИЗАЦИИ ОТКРЫТИЯ ДВЕРИ 10
3.4 УСТРОЙСТВО СИГНАЛИЗАЦИИ О ПОПЫТКЕ ПОДБОРА КОДА 11
3.5 ДАТЧИК ОТКРЫТИЯ ДВЕРИ 12
3.6 МИКРОКОНТРОЛЛЕР 12
3.7 СТАБИЛИЗАТОР НАПРЯЖЕНИЯ 18
4 РАЗРАБОТКА ФУНКЦИОНАЛЬНОЙ СХЕМЫ 20
4.1 СОПРЯЖЕНИЕ МИКРОКОНТРОЛЛЕРА И КЛАВИАТУРЫ 20
4.2 СОПРЯЖЕНИЕ МИКРОКОНТРОЛЛЕРА И ИСПОЛНИТЕЛЬНОГО ЭЛЕМЕНТА ЭЛЕКТРОМЕХАНИЧЕСКОГО ЗАМКА 22
4.3 СОПРЯЖЕНИЕ МИКРОКОНТРОЛЛЕРА И УСТРОЙСТВА СИГНАЛИЗАЦИИ ОТКРЫТИЯ ДВЕРИ 23
4.4 СОПРЯЖЕНИЕ МИКРОКОНТРОЛЛЕРА И УСТРОЙСТВА ЗВУКОВОЙ СИГНАЛИЗАЦИИ 24
4.5 СОПРЯЖЕНИЕ МИКРОКОНТРОЛЛЕРА И ДАТЧИКА ОТКРЫТИЯ ДВЕРИ 24
4.6 ПОДКЛЮЧЕНИЕ МИКРОКОНТРОЛЛЕРА К ЦЕПЯМ, ОБЕСПЕЧИВАЮЩИМ ЕГО РАБОТУ 25
5 ОПИСАНИЕ СРЕДЫ РАЗРАБОТКИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ 25
6 РАЗРАБОТКА АЛГОРИТМА РАБОТЫ СИСТЕМЫ И ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ 29
ЗАКЛЮЧЕНИЕ 33
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 34
ПРИЛОЖЕНИЯ 35
ПРИЛОЖЕНИЕ А 35
ПРИЛОЖЕНИЕ Б 39

Работа состоит из  1 файл

Электронный кодовый замок.doc

— 1.38 Мб (Скачать документ)

Использование языка высокого уровня C имеет следующие  преимущества над программированием на ассемблере:

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

      Макроассемблер A51

      Ассемблер A51 совместим с ASM51 Intel для всего  семейства микроконтроллеров Intel 8051. Ассемблер транслирует символическую мнемонику в перемещаемый объектный код, имеющий высокое быстродействие и малый размер. Макросредства ускоряют разработку и экономят время, поскольку общие последовательности могут быть разработаны только один раз. Ассемблер поддерживает символический доступ ко всем элементам микроконтроллера и перестраивает конфигурацию для каждой разновидности Intel 8051.

A51 транслирует  исходный файл ассемблера в  перемещаемый объектный модуль. При отладке или при включенной  опции “Include debugging information” этот объектный файл будет содержать полную символическую информацию для отладчика/имитатора или внутрисхемного эмулятора.

    Компоновщик L51

      Компоновщик объединяет один или несколько объектных  модулей в одну исполняемую программу. Компоновщик размещает внешние  и общие ссылки, назначает абсолютные адреса перемещаемым сегментам программ. Он может обрабатывать объектные модули, созданные транслятором C51, ассемблером A51, транслятором PL/M-51 Intel и ассемблером ASM51 Intel.

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

      Отладчик/симулятор WinSim51

      Отладчик/симулятор  используется с транслятором C51, ассемблером A51, транслятором PL/M-51 Intel и ассемблером ASM51 Intel. Отладчик/симулятор позволяет моделировать большинство особенностей Intel 8051 без наличия аппаратных средств. Можно использовать его для проверки и отладки прикладной программы прежде, чем будут изготовлены аппаратные средства. При этом моделируется широкое разнообразие периферийных устройств, включая последовательный порт, внешний ввод - вывод и таймеры [6].

      Внеший  вид главного окна программы представлен  на рисунке 5.1.

      

      Рисунок 5.1 – Внешний вид главного окна ProView

 
 

6 Разработка алгоритма работы системы и программного обеспечения

 

      Алгоритм  функционирования программы кодового замка включает в себя следующие  основные блоки:

- включение;

- ввод  кода;

- проверка  введённого кода;

- контроль  количества попыток ввода кода;

- открытие замка;

- закрытие  замка;

- световая  индикация;

- звуковой  сигнал.

      На  рисунке 6.1 представлена блок-схема алгоритма работы программы.

Рисунок 6.1 - Блок-схема работы программы

 

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

- Включение устройства

      При подаче питания производится инициализация  переменных: для хранения адреса ячейки памяти с текущей введённой цифрой кода используется регистр r0, для количества попыток ввода – память данных по адресу 38h. Затем выключаются светодиод и динамик установкой в 0 соответствующих битов порта p2. Далее задаётся адрес для первой цифры кода и количество попыток ввода.

- Ввод кода

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

- Проверка введённого кода

      Когда введены все цифры кода, производится последовательная проверка всех цифр, начиная с последней (метка code_wrong). Здесь для примера выбран шестизначный код “123456” В случае несовпадения цифры кода с заданной проверяется количество оставшихся попыток ввода кода (метка code_wrong).

- Контроль количества попыток ввода кода

      Если  все попытки ввода израсходованы, включается звуковой сигнал длительностью 1 с. Для формирования задержки используется подпрограмма delay. Во время действия звукового сигнала устройство не реагирует на нажатия клавиш.

- Открытие замка

      Открытие  замка производится установкой бита p2.0.

- Закрытие замка

      Закрытие замка производится сбросом бита p2.0.

 
 

- Световая индикация

      Световая  индикация включается установкой бита p2.2 и выключается его сбросом.

- Звуковой сигнал

      Звуковой  сигнал включается установкой бита p2.1 и выключается его сбросом.

- Формирование программной временной задержки.

        Формирование задержки длительностью 5 мс.

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

 

mov  r2,#0ffh

loop3:

djnz  r2,loop3

 

      Команда mov выполняется за 1 машинный цикл, команда djnz – за 2. При тактовой частоте 24 МГц каждый машинный цикл выполняется за 0,5 мкс. Таким образом, максимальная длительность задержки, реализуемая с помощью одного цикла, составляет (1+255*2)*0,5=255,5 мкс (в регистре r2 значение 255). Задержка большой длительности может быть реализована методом вложенных циклов.

 

delay2:     ;задержка 5 мс

mov r3,#13h

loop4:

mov  r2,#0ffh

loop3:

djnz  r2,loop3

djnz r3,loop4

ret

 

      Так, максимальная длительность задержки при  использовании двух циклов составляет (1+((1+2*255)+2)*255)/2=65408 мкс=65,41 мс. Рассчитаем значение регистра r3 для формирования задержки длительностью 5 мс. Очевидно, что в регистр r2 нужно загрузить максимальное значение 255. При расчёте нужно учесть, что на выполнение команд call и ret требуется по 2 машинных цикла на каждую. (2+2+1+((1+2*255)+2)*X)/2=5000. X=19,42. В регистр заносим значение 13h.

 

ЗАКЛЮЧЕНИЕ

 

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

     В ходе выполнения работы был проведён анализ задачи, на основе которого были сформулированы требования к конечной системе. На основе требований была построена структурная схема.

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

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

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

 

СПИСОК  ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

 

1. Описания электронных компонентов в каталоге товаров оптовой базы комплектации электронных компонентов и приборов “Чип и дип”: http://www.chipdip.ru/  (02.05.2011)

2. Описание электромеханического замка ПОЛИС:

http://dialog-universal.ru/product_info.php?cPath=109&products_id=1730 (01.05.2011)

3. Описание клавиатуры AK-207 на сайте компании Accord: http://www.accordia.com.tw/html/general.htm (27.04.2011)

4. Описание микроконтроллера AT89S51 на сайте компании Atmel: http://www.atmel.com/dyn/resources/prod_documents/doc2487.pdf (27.04.2011)

5. Описание микроконтроллера AT89S51: http://www.gaw.ru/html.cgi/txt/ic/Atmel/micros/mcs51/at89s51.htm (27.04.2011)

6. В. Б. Бродин. Микроконтроллеры: архитектура, программирование, интерфейс: – М.: ЭКОМ, 1999. – 401с.

7. П. Хоровиц, У. Хилл. Искусство схемотехники М. Мир, Том 1 1983 – 600с.

 

ПРИЛОЖЕНИЯ

Приложение  А

Исходный  код программы микроконтроллера

 

dseg

door_code equ r0   ;массив введённых значений

attempts  equ 38h  ;переменная – число попыток ввода

 

cseg

org 00h

ajmp main

 

org 0bh

ajmp timer0

 

org 100h

 

main:

anl p2,#1h    ;выключение светодиода и динамика

mov tmod,#1h    ;задаём режим таймера – 16 бит

mov door_code,#30h   ;задание адреса для вводимых цифр кода

mov attempts,#3h   ;количество попыток

sjmp ent1     ;переход к началу главного цикла

 

enter_digit:    ;обработка введённого значения

mov @door_code,a   ;запоминаем цифру

inc door_code    ;переходим к след. адресу

mov a,door_code   ;

call delay2

cjne a,#36h,ent1   ;проверяем,все ли цифры введены (из 6)

ajmp compare    ;переход к сравнению кодов

 

ent0:     ;ввод 0

mov p0,#0f7h

 

jb p0.5,ent1

call delay2

mov a,#0h

wait0:

jnb  p0.5,wait0

ajmp enter_digit

 

ent9:     ;ввод 9

jb p0.6,ent0

call delay2

mov a,#9h

wait9:

jnb  p0.6,wait9

ajmp enter_digit

 

ent1:     ;ввод 1

mov p0,#0feh    ;устанавливаем 0 на выходе P0.0

 

jb p0.4,ent2    ;если не нажата кнопка, к след. кнопке

call delay2    ;ждём, пока пройдёт дребезг контактов

mov a,#1h    ;запоминаем введённую цифру

wait1:     ;

jnb  p0.4,wait1  ; ждём, пока отпустят кнопку

ajmp enter_digit   ;переход к обраб. введённого значения

Информация о работе Электронный кодовый замок