Автор работы: Пользователь скрыл имя, 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
Использование языка высокого уровня C имеет следующие преимущества над программированием на ассемблере:
Ассемблер A51 совместим с ASM51 Intel для всего семейства микроконтроллеров Intel 8051. Ассемблер транслирует символическую мнемонику в перемещаемый объектный код, имеющий высокое быстродействие и малый размер. Макросредства ускоряют разработку и экономят время, поскольку общие последовательности могут быть разработаны только один раз. Ассемблер поддерживает символический доступ ко всем элементам микроконтроллера и перестраивает конфигурацию для каждой разновидности Intel 8051.
A51 транслирует
исходный файл ассемблера в
перемещаемый объектный модуль.
При отладке или при
Компоновщик объединяет один или несколько объектных модулей в одну исполняемую программу. Компоновщик размещает внешние и общие ссылки, назначает абсолютные адреса перемещаемым сегментам программ. Он может обрабатывать объектные модули, созданные транслятором C51, ассемблером A51, транслятором PL/M-51 Intel и ассемблером ASM51 Intel.
Компоновщик автоматически выбирает соответствующие библиотеки поддержки и связывает только требуемые модули из библиотек. Установки по умолчанию для L51 выбраны так, чтобы они подходили для большинства прикладных программ, но можно определить и заказные установки.
Отладчик/симулятор используется с транслятором C51, ассемблером A51, транслятором PL/M-51 Intel и ассемблером ASM51 Intel. Отладчик/симулятор позволяет моделировать большинство особенностей Intel 8051 без наличия аппаратных средств. Можно использовать его для проверки и отладки прикладной программы прежде, чем будут изготовлены аппаратные средства. При этом моделируется широкое разнообразие периферийных устройств, включая последовательный порт, внешний ввод - вывод и таймеры [6].
Внеший вид главного окна программы представлен на рисунке 5.1.
Рисунок 5.1 – Внешний вид главного окна ProView
6 Разработка алгоритма работы системы и программного обеспечения
Алгоритм функционирования программы кодового замка включает в себя следующие основные блоки:
- включение;
- ввод кода;
- проверка введённого кода;
- контроль количества попыток ввода кода;
- открытие замка;
- закрытие замка;
- световая индикация;
- звуковой сигнал.
На рисунке 6.1 представлена блок-схема алгоритма работы программы.
Рассмотрим алгоритм функционирования программы более подробно.
- Включение устройства
При подаче питания производится инициализация переменных: для хранения адреса ячейки памяти с текущей введённой цифрой кода используется регистр r0, для количества попыток ввода – память данных по адресу 38h. Затем выключаются светодиод и динамик установкой в 0 соответствующих битов порта p2. Далее задаётся адрес для первой цифры кода и количество попыток ввода.
- Ввод кода
Ввод кода производится посредством опроса клавиатуры и регистрации нажатий клавиш. Клавиатура опрашивается в бесконечном цикле. При обнаружении нажатия кнопки во избежание регистрации нескольких нажатий из-за явления дребезга контактов вызывается подпрограмма формирования временной задержки длительностью 5 мс (delay2). После отпускания кнопки происходит запоминание введённого значения и возврат в цикл опроса клавиатуры, если ещё не все цифры введены.
- Проверка введённого кода
Когда введены все цифры кода, производится последовательная проверка всех цифр, начиная с последней (метка code_wrong). Здесь для примера выбран шестизначный код “123456” В случае несовпадения цифры кода с заданной проверяется количество оставшихся попыток ввода кода (метка code_wrong).
- Контроль количества попыток ввода кода
Если
все попытки ввода
- Открытие замка
Открытие замка производится установкой бита 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=
В данной работе была осуществлена разработка электронного кодового замка, предназначенного для установки на наружную дверь загородного дома.
В ходе выполнения работы был проведён анализ задачи, на основе которого были сформулированы требования к конечной системе. На основе требований была построена структурная схема.
На основании структурной схемы были подобраны соответствующие устройства для реализации функций, возложенных на элементы системы. Исходя из экономических и эксплуатационных соображений, для данного устройства был выбран микроконтроллер AT89S51 фирмы Atmel.
Особенностью данного замка является наличие звуковой сигнализации, оповещающей владельца о попытке подбора кода.
Далее, с использованием выбранных устройств была построена функциональная схема. Разработка завершилась составлением блок-схемы алгоритма и написанием исходного кода программы для микроконтроллера.
1. Описания электронных компонентов в каталоге товаров оптовой базы комплектации электронных компонентов и приборов “Чип и дип”: http://www.chipdip.ru/ (02.05.2011)
2. Описание электромеханического замка ПОЛИС:
http://dialog-universal.ru/
3. Описание клавиатуры
AK-207 на сайте компании Accord: http://www.accordia.com.tw/
4. Описание микроконтроллера
AT89S51 на сайте компании Atmel: http://www.atmel.com/dyn/
5. Описание микроконтроллера
AT89S51: http://www.gaw.ru/html.cgi/
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 ;проверяем,
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 ;переход к обраб. введённого значения