Автор: Пользователь скрыл имя, 24 Марта 2012 в 17:15, реферат
Цель: спроектировать кодовый замок на основе микроконтроллера с архитектурой MCS-51, разработать функциональную схему устройства, написать программу для микроконтроллера.
Результат проектирования: был спроектирован кодовый замок, обладающий возможностью звуковой сигнализации о попытке подбора кода.
Рисунок 3.4.1 - Схема сопряжения микроконтроллера и динамика
Датчик подключается к выводу порта P0.7 через резистор R9, который подтягивает напряжение на выводе до единицы, когда контакты датчика разомкнуты (рисунок 3.5.1). При замыкании контактов напряжение +5В замыкается на землю, и на выводе порта появляется ноль. Длина провода от резистора к датчику много больше длины провода к микроконтроллеру, поэтому подтягивающий резистор R9 возьмём номиналом 1КОм, а для борьбы с помехами используем конденсатор С6 на 100пФ.
Рисунок 3.5.1 - Схема сопряжения микроконтроллера и датчика открытия двери
Подключение микроконтроллера к цепям питания, сброса, внешнему кварцевому резонатору и выводу блокировки работы с внутренней памятью (рисунок 3.6.1) является стандартным, рекомендованным производителем [4].
Рисунок 3.6.1 - Схема подключения микроконтроллера
Алгоритм функционирования программы кодового замка включает в себя следующие основные блоки:
- включение;
- ввод кода;
- проверка введённого кода;
- контроль количества попыток ввода кода;
- открытие замка;
- закрытие замка;
- световая индикация;
- звуковой сигнал.
На рисунке 4.1 представлена блок-схема алгоритма работы программы.
Рассмотрим алгоритм функционирования программы более подробно.
- Включение устройства
При подаче питания производится инициализация переменных: для хранения адреса ячейки памяти с текущей введённой цифрой кода используется регистр r0, для количества попыток ввода – память данных по адресу 38h. Затем выключаются светодиод и динамик установкой в 0 соответствующих битов порта p2. Настраивается таймер t0, который будет далее использоваться для формирования программной задержки. Режим – 16-битный таймер. Далее задаётся адрес для первой цифры кода и количество попыток ввода.
- Ввод кода
Ввод кода производится посредством опроса клавиатуры и регистрации нажатий клавиш. Клавиатура опрашивается в бесконечном цикле. При обнаружении нажатия кнопки во избежание регистрации нескольких нажатий из-за явления дребезга контактов вызывается подпрограмма формирования временной задержки длительностью 5 мс (delay2). После отпускания кнопки происходит запоминание введённого значения и возврат в цикл опроса клавиатуры, если ещё не все цифры введены.
Открыть замок
Ввод кода
Уменьшить количество попыток
Закрыть замок
Код верен?
Кол-во попыток = 0?
Восстановить количество попыток
Звуковой сигнал
Дверь открыта?
Световая индикация
нет
нет
нет
да
да
да
Дверь закрыта?
да
нет
Световая индикация
Включение
Рисунок 4.1 - Блок-схема работы программы
- Проверка введённого кода
Когда введены все цифры кода, производится последовательная проверка всех цифр, начиная с последней (метка code_wrong). Здесь для примера выбран шестизначный код “123456” В случае несовпадения цифры кода с заданной проверяется количество оставшихся попыток ввода кода (метка code_wrong).
- Контроль количества попыток ввода кода
Если все попытки ввода израсходованы, включается звуковой сигнал длительностью 1 с. Для формирования задержки используется подпрограмма delay. Во время действия звукового сигнала устройство не реагирует на нажатия клавиш.
- Открытие замка
Открытие замка производится установкой бита p2.0.
- Закрытие замка
Закрытие замка производится сбросом бита p2.0.
- Световая индикация
Световая индикация включается установкой бита p2.2 и выключается его сбросом.
- Звуковой сигнал
Звуковой сигнал включается установкой бита p2.1 и выключается его сбросом.
- Формирование
программной временной
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=
2) Формирование задержки длительностью 1 с.
При формировании задержки длительностью 1 с используется таймер T0.
delay: ;задержка 1 с
mov r1,#1fh
loop1:
mov th0,#0h
mov tl0,#0h
setb tcon.4
loop2:
jb tcon.4,loop2
djnz r1,loop1
ret
В 16-битном режиме (диапазон значений таймера 0-65535) при тактовой частоте 24МГц таймер позволяет формировать задержки длительностью до 32767,5 мкс. Для создания задержки в 1 с таймер должен переполниться 1/ 0,0327675=30,52 раз. Таким образом, в регистр r1 нужно загрузить значение 1fh.
При разработке и отладке программного
обеспечения для данного
- стандартный интерфейс Windows;
- полнофункциональный редактор исходных текстов с выделением синтаксических - элементов цветом;
- организатор проекта;
- транслятор с языка C;
- ассемблер;
- отладчик;
- встроенную справочную систему.
Среда разработки подобна Visual C++ Microsoft и Borland C++ для Windows. Пользователи, знакомые с любым из этих изделий, будут комфортно чувствовать себя в ProView. Первый этап разработки программы – запись её исходного текста на каком-либо языке программирования. Затем производится компиляция или трансляция его в коды системы команд микроконтроллера, используя транслятор или ассемблер. Трансляторы и ассемблеры – прикладные программы, которые обрабатывают текстовый файл, содержащий исходный текст программы, и создают объектные файлы, содержащие объектный код. После компоновки объектных модулей наступает этап отладки программы, устранения ошибок, оптимизации и тестирования программы. ProView объединяет все этапы разработки прикладной программы в единый рекурсивный процесс, когда в любой момент времени возможен быстрый возврат к любому предыдущему этапу. Далее описаны основные компоненты ProView.
Язык C - универсальный язык программирования,
который обеспечивает эффективность
кода, элементы структурного программирования
и имеет богатый набор
C51 - полная реализация стандарта ANSI (Американского национального института стандартов), насколько это возможно для архитектуры Intel 8051. C51 генерирует код для всего семейства микроконтроллеров Intel 8051. Транслятор сочетает гибкость программирования на языке C с эффективностью кода и быстродействием ассемблера.
Использование языка высокого уровня C имеет следующие преимущества над программированием на ассемблере:
Ассемблер A51 совместим с ASM51 Intel для
всего семейства
A51 транслирует исходный файл
ассемблера в перемещаемый
Компоновщик объединяет один или несколько объектных модулей в одну исполняемую программу. Компоновщик размещает внешние и общие ссылки, назначает абсолютные адреса перемещаемым сегментам программ. Он может обрабатывать объектные модули, созданные транслятором C51, ассемблером A51, транслятором PL/M-51 Intel и ассемблером ASM51 Intel.
Компоновщик автоматически выбирает соответствующие библиотеки поддержки и связывает только требуемые модули из библиотек. Установки по умолчанию для L51 выбраны так, чтобы они подходили для большинства прикладных программ, но можно определить и заказные установки.
Отладчик/симулятор
Внешний вид главного окна программы представлен на рисунке 5.1.
Рисунок 5.1 – Внешний вид главного окна ProView
В данной работе была осуществлена разработка электронного кодового замка, предназначенного для установки на наружную дверь жилого дома.
В ходе выполнения
работы был проведён анализ задачи,
на основе которого были сформулированы
требования к конечной системе. На основе
требований была построена структурная
схема. На основании структурной
схемы были подобраны соответствующие
устройства для реализации функций,
возложенных на элементы системы. Исходя
из экономических и
1. Описания электронных
компонентов в каталоге
http://www.platan.ru/
2. Описание электромеханического замка ПОЛИС-13:
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.
7. П. Хоровиц, У. Хилл. Искусство схемотехники М. Мир, 2003.
Приложение А
Исходный код программы микроконтроллера
dseg
door_code equ r0 ;массив введённых значений
attempts equ 38h ;переменная – число попыток ввода
cseg
org 00h
ajmp main