Кодовый замок

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информатика, ВТ, телекоммуникации
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    162,67 Кб
  • Опубликовано:
    2012-06-17
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Кодовый замок

Федеральное агентство по образованию

Государственное образовательное учреждение

Высшего профессионального образования

Нижегородский государственный технический университет

им. Р. Е. Алексеева

Институт радиоэлектроники и информационных технологий (ИРИТ)

Кафедра «Вычислительные системы и технологии»




Курсовая работа

по дисциплине: «Микропроцессорные системы»

по теме: «Кодовый замок»

Выполнил: студент

группы 09-В-2

Кузнецова Т.Н.

Проверил: Киселёв Ю.Н.




Нижний Новгород 2012г.

Содержание

1.     Введение

2.       Выбор и обоснование технических решений

2.1   Детализация исходного ТЗ и постановка задачи

2.2     Источники информации (входных сигналов)

.3       Приемник информации (выходных сигналов)

.4       Возможные пути решения поставленной задачи

.5       Возможные варианты структурных схем

.6       Обоснование выбора структурной схемы

.7       Обоснование выбора микроконтроллера для решения поставленной задачи

3.     Структурная схема устройства и её описание

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

3.2     Назначение отдельных функциональных блоков

.3       Алгоритм работы структурной схемы

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

.1     Описание принципиальной схемы устройства

4.2     Описание функциональной схемы устройств

5.     Разработка рабочей программы

.1     Текст программы

5.2     Моделирование

6.     Заключение

7.       Список литературы

1.   Введение

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

2. Выбор и обоснование технических решений

.1 Детализация исходного ТЗ и постановка задачи

Задание:

Разработать электронный кодовый замок, имеющий 10 кнопок для ввода кода, обозначенных цифрами от «0» до «9». Замок должен иметь переключатель режимов «Запись/Работа», кнопку «Сброс» в случае набора неверной цифры. Предусматривается смена установленного кода. Длина кода 6 десятичных цифр. После правильно введенного кода должна загораться лампочка.

Общая рекомендация:

Устройство должно быть выполнено на базе стандартных микроконтроллеров с моделированием работы в симуляторе Proteus.

.2 Источники информации (входных сигналов)

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

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

.3 Приемник информации (выходных сигналов)

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

.4 Возможные пути решения поставленной задачи

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

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

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

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

.5 Возможные варианты структурных схем

Основная структурная схема будет похожа во всех перечисленных вариантах, меняться будут лишь составляющие ее элементы:

Схема №1







Схема №2







Данная схема похожа на №1, она отличается лишь тем, что функцию ввода/вывода будет происходить с помощью одного устройства (сенсорного дисплея), кроме того она сложнее в реализации.

Схема №3












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

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

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

- микроконтроллер;

-        клавиатура;

- устройство сигнализации о правильности введенного кода;

- аккумулятор/батарея

дисплей

2.6 Обоснование выбора структурной схемы

Простота переноса данной структурной схемы уже на схематическое проектирование и программный аспект устройства.

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

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

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

.7 Обоснование выбора микроконтроллера для решения поставленной задачи

Основными требованиями, предъявляемыми к микроконтроллеру в этом проекте, являются:

-     наличие параллельных портов ввода-вывода в количестве, достаточном для подключения всех устройств, входящих в структурную схему системы;

-        достаточно высокая надёжность и стабильность работы;

         возможность работы в расширенном температурном диапазоне.

Учитывая все эти требования, в качестве устройства управления я выбрала микроконтроллер PIC16F676 (8-разрядный КМОП микроконтроллер с Flash памятью, основан на AVR-архитектуре RISC , позволяет достигнуть оптимального соотношения производительности к потребляемой энергии).


Причины выбора:

огромное количество справочной информации, примеров работы с микроконтроллером, книг по программированию данного МК.

PIC16F676 недорогой по сравнению с другими микроконтроллерами, имеет низкое энергопотребление.

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

Данный микроконтроллер довольно доступен на радио рынках в достаточных количествах.

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

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

Основные характеристики:

Высокопроизводительный RISC-процессор:

• Всего 35 простых для изучения инструкции

• Все инструкции исполняются за один такт (200 нс), кроме инструкций перехода, выполняемых за два такта; минимальная длительность такта 200 нс

• 14 битовые команды

• 8 - битовые данные

• Вход внешних прерываний

• 8-уровневый аппаратный стек

• Прямой, косвенный и относительный режимы адресации для данных и инструкций

Периферия:

• 22 линий ввода/вывода с индивидуальным контролем направления

• Сильноточные схемы портов ввода/вывода:

• 25 мА макс. вытек. ток

• 25 мА макс. втек. ток: 8-разрядный таймер/счетчик: 16-разрядный таймер/счетчик: 8-разрядный таймер/счетчик

ШИМ модуля

Последовательные интерфейсы

-проводный SPIC Master и Slave режимы(с поддержкой адреса)

каналов 10-битного АЦП

аналоговых компаратора

Интегрированный программируемый источник опорного напряжения

Особенности микроконтроллера:

• Сброс при включении питания (POR)

• Таймер включения питания (PWRT) и таймер запуска генератора (OST)

• Сброс по снижению напряжения питания (BOR)

• Сторожевой таймер (WDT) с собственным встроенным RC-генератором для повышения надежности работы

• Режим экономии энергии (SLEEP)

• Выбор источника тактового сигнала

• Программирование на плате через последовательный порт (ICSPT) (с использованием двух выводов)

• Отладка на плате через последовательный порт (ICD) (с использованием двух выводов)

• Возможность самопрограммирования

• Программируемая защита кода

• 1000 циклов записи/стирания FLASH памяти программы

• 100 000 циклов записи/стирания памяти данных ЭСППЗУ

• Период хранения данных ЭСППЗУ > 40 лет

Технология КМОП:

• Экономичная, высокоскоростная технология КМОП

• Полностью статическая архитектура

• Широкий рабочий диапазон напряжений питания - от 2,0В до 5,5В

• Промышленный и расширенный температурный диапазоны

• Низкое потребление энергии

3. Структурная схема устройства и её описание

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






3.2 Назначение отдельных функциональных блоков

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

Назначение светодиодов: сообщение и правильности введенного кода.

Назначение клавиатуры: ввод кода.

3.3 Алгоритм работы структурной схемы









                                         

                                                                                                                                           нет

                                                                  

                                           нет                                                       нет         


              да






                                                     


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

.1 Описание принципиальной схемы устройства


Описание схемы:

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

На ней видно как между собой связанны составные элементы системы: микроконтроллер, клавиши и светодиоды.

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

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

4.2 Описание функциональной схемы устройств


Описание схемы:

Выше представлена функциональная схема проектируемого устройства. Устройство управляется микроконтроллером PIC16F676.

Контроллер сканирует подключенную к его портам клавиатуру по определенному принципу и в случае нажатой клавиши анализирует код нажатой клавиши (который складывается из номера строки и столбца) запуская по его значению определенные процедуры.

. Разработка рабочей программы

.1 Текст программы

#DEFINE CONFIG_REQ 1

LIST P = 16F676, F = INHX8M, W = 2, X = ON, R = DEC, MM = ON, N = 0, C = 255EQU 0X0000EQU 0X0001EQU 0X0002EQU 0X0003EQU 0X0004EQU 0X0005EQU 0X0006EQU 0X0007EQU 0X000AEQU 0X000BEQU 0X000CL EQU 0X000ELH EQU 0X000FH EQU 0X000FCON EQU 0X0010EQU 0X0019EQU 0X001EEQU 0X001EEQU 0X001F_REG EQU 0X0081EQU 0X0085EQU 0X0086EQU 0X0087EQU 0X008CEQU 0X008EEQU 0X0090EQU 0X0091EQU 0X0095EQU 0X0095EQU 0X0096EQU 0X0096EQU 0X0099EQU 0X009AEQU 0X009AEQU 0X009AEQU 0X009BEQU 0X009CEQU 0X009DEQU 0X009EEQU 0X009F=7=6=5_TO=4_PD=3=2=1=0=7=6IE=5=4=3IF=2=1=0=7=6=3IF=0IF=0GE=6CKPS1=5CKPS0=4OSCEN=3_T1SYNC=2CS=1ON=0=6=4=3=2=1=0=7=6=4=3=2=1_DONE=1_DONE=1_GO_DONE=1=0_GPPU=7_RAPU=7=6CS=5SE=4=3=2=1=0=7=6=3IE=0IE=0_POR=1_BOD=0=7=6=5=4=3=2=7=6=5=4=3=2=1=0=7=5=3=2=1=0=3=2_WREN=2=1_WR=1=0_RD=0=6=5=4

__MAXRAM 0XFF

__BADRAM 0X06, 0X08-0X09, 0X0D, 0X11-0X18, 0X1A-0X1D, 0X60-0X7F

__BADRAM 0X86, 0X88-0X89, 0X8D, 0X8F, 0X92-0X94, 0X97-0X98, 0XE0-0XFFEQU 0X3EFF_OFF EQU 0X3FFFEQU 0X3F7F_OFF EQU 0X3FFFEQU 0X3FFF_OFF EQU 0X3FBF_ON EQU 0X3FFF_OFF EQU 0X3FDF_OFF EQU 0X3FFF_ON EQU 0X3FEF_ON EQU 0X3FFF_OFF EQU 0X3FF7_OSC EQU 0X3FF8_OSC EQU 0X3FF9_OSC EQU 0X3FFA_OSC EQU 0X3FFB_OSC_NOCLKOUT EQU 0X3FFC_OSC_CLKOUT EQU 0X3FFD_OSC_NOCLKOUT EQU 0X3FFE_OSC_CLKOUT EQU 0X3FFF

#DEFINE __16F676 1

#DEFINE XTAL 4

#DEFINE _CORE 14

#DEFINE _MAXRAM 64

#DEFINE _RAM_END 64

#DEFINE _MAXMEM 1024

#DEFINE _ADC 8

#DEFINE _ADC_RES 10

#DEFINE _EEPROM 128

#DEFINE _PAGES 1

#DEFINE _BANKS 2

#DEFINE RAM_BANKS 1

#DEFINE _USART 0

#DEFINE _USB 0

#DEFINE _FLASH 0

#DEFINE _CWRITE_BLOCK 0

#DEFINE BANK0_START 32

#DEFINE BANK0_END 95

#DEFINE _SYSTEM_VARIABLE_COUNT 14_BANK = 0@PAGE = 0@PAGE = 0

#DEFINE LCD#TYPE 0@CALL MACRO DEST(DEST < 1)(DEST > $)DEST@JUMP MACRO DEST(DEST < 1)(DEST > $)DEST@PAGE MACRO DEST@B MACRO VARIN((VARIN & 384) == 0)(RAM_BANK == 1)3,5(RAM_BANK == 2)3,6(RAM_BANK == 3)3,53,6_BANK = 0((VARIN & 384) == 128)(RAM_BANK == 0)3,5(RAM_BANK == 2)3,53,6(RAM_BANK == 3)3,6_BANK = 1((VARIN & 384) == 256)(RAM_BANK == 0)3,6(RAM_BANK == 1)3,53,6(RAM_BANK == 3)3,5_BANK = 2@B MACRO((RAM_BANK & 1) != 0)3,5((RAM_BANK & 2) != 0)3,6_BANK = 0MACRO PLABELPLABEL_BYTE MACRO PBYTEOUT@B PBYTEOUTPBYTEOUT@B_BIT MACRO PVAROUT,PBITOUT@B PVAROUT1STATUS,2PVAROUT,PBITOUTSTATUS,2PVAROUT,PBITOUT@B_WORD MACRO PWORDOUT@B PWORDOUTPWORDOUT@B PWORDOUT+1PWORDOUT+1@B_DWORD MACRO PDWORDOUT@B PDWORDOUT+3PDWORDOUT+3@B PDWORDOUT+2PDWORDOUT+2@B PDWORDOUT+1PDWORDOUT+1@B PDWORDOUTPDWORDOUT@B_WREG MACRO PBYTEIN@B PBYTEINPBYTEIN,W@B_WREG MACRO PNUMIN(PNUMIN & 255)_BYTE MACRO PNUMIN,PBYTEOUT@B PBYTEOUT(PNUMIN == 0)PBYTEOUT(PNUMIN & 255)PBYTEOUT@B_BIT MACRO PNUMIN,PVAROUT,PBITOUT@B PVAROUT((PNUMIN & 1) == 1)PVAROUT,PBITOUTPVAROUT,PBITOUT@B_WORD MACRO PNUMIN,PWORDOUT((PNUMIN & 255) == 0)@B PWORDOUTPWORDOUT@B PWORDOUTLOW (PNUMIN)PWORDOUT(((PNUMIN >> 8) & 255) == 0)@B PWORDOUT+1PWORDOUT+1@B PWORDOUT+1HIGH (PNUMIN)PWORDOUT+1@B_DWORD MACRO PNUMIN,PDWORDOUT((PNUMIN >> 24 & 255) == 0)@B PDWORDOUT+3PDWORDOUT+3@B PDWORDOUT+3((PNUMIN >> 24) & 255)PDWORDOUT+3( ((PNUMIN >> 16) & 255) == 0)@B PDWORDOUT+2PDWORDOUT+2@B PDWORDOUT+2((PNUMIN >> 16) & 255)PDWORDOUT+2( ((PNUMIN >> 8) & 255) == 0)@B PDWORDOUT+1PDWORDOUT+1@B PDWORDOUT+1HIGH (PNUMIN)PDWORDOUT+1((PNUMIN & 255) == 0)@B PDWORDOUTPDWORDOUT@B PDWORDOUTLOW (PNUMIN)PDWORDOUT@B_WREG MACRO PVARIN,PBITIN@B PVARINPVARIN,PBITIN1@B_BYTE MACRO PVARIN,PBITIN,PBYTEOUT@B PVARINPVARIN,PBITIN1@B PBYTEOUTPBYTEOUT@B_BIT MACRO PVARIN,PBITIN,PVAROUT,PBITOUT((PVARIN & 65408) == (PVAROUT & 65408))@B PVAROUTPVARIN,PBITINPVAROUT,PBITOUTPVARIN,PBITINPVAROUT,PBITOUT@B PVARINPVARIN,PBITIN@B PVAROUTPVAROUT,PBITOUTPVAROUT,PBITOUT_WORD MACRO PVARIN,PBITIN,PWORDOUT@B PWORDOUT+1PWORDOUT+1_BYTE PVARIN,PBITIN,PWORDOUT_DWORD MACRO PVARIN,PBITIN,PDWORDOUT@B PDWORDOUT+3PDWORDOUT+3@B PDWORDOUT+2PDWORDOUT+2@B PDWORDOUT+1PDWORDOUT+1_BYTE PVARIN,PBITIN,PDWORDOUT_WREG MACRO PWORDIN_WREG PWORDIN_BYTE MACRO PWORDIN,PBYTEOUT_BYTE PWORDIN,PBYTEOUT_BIT MACRO PWORDIN,PVAROUT,PBITOUT_BIT PWORDIN, PVAROUT, PBITOUT_WORD MACRO PWORDIN,PWORDOUT@B PWORDIN+1PWORDIN+1,W@B PWORDOUT+1PWORDOUT+1_BYTE PWORDIN,PWORDOUT_DWORD MACRO PWORDIN,PDWORDOUT@B PDWORDOUT+3PDWORDOUT+3@B PDWORDOUT+2PDWORDOUT+2_BYTE PWORDIN+1,PDWORDOUT+1_BYTE PWORDIN,PDWORDOUT_BYTE MACRO PBYTEIN,PBYTEOUT@B PBYTEINPBYTEIN,W@B PBYTEOUTPBYTEOUT@B_WORD MACRO PBYTEIN,PWORDOUT@B PWORDOUT+1PWORDOUT+1_BYTE PBYTEIN,PWORDOUT_DWORD MACRO PBYTEIN,PDWORDOUT@B PDWORDOUT+3PDWORDOUT+3@B PDWORDOUT+2PDWORDOUT+2@B PDWORDOUT+1PDWORDOUT+1_BYTE PBYTEIN,PDWORDOUT_BIT MACRO PBYTEIN,PVAROUT,PBITOUT((PBYTEIN & 65408) == (PVAROUT & 65408))@B PBYTEINPBYTEIN,0PVAROUT,PBITOUTPBYTEIN,0PVAROUT,PBITOUT@B PBYTEINPBYTEIN,W@B PVAROUTPVAROUT,PBITOUTPVAROUT,PBITOUT@B_WREG MACRO PDWORDIN_WREG PDWORDIN_BYTE MACRO PDWORDIN,PBYTEOUT_BYTE PDWORDIN,PBYTEOUT_WORD MACRO PDWORDIN,PWORDOUT@B PDWORDIN+1PDWORDIN+1,W@B PWORDOUT+1PWORDOUT+1_BYTE PDWORDIN,PWORDOUT_DWORD MACRO PDWORDIN,PDWORDOUT_BYTE PDWORDIN+3,PDWORDOUT+3_BYTE PDWORDIN+2,PDWORDOUT+2_BYTE PDWORDIN+1,PDWORDOUT+1_BYTE PDWORDIN,PDWORDOUT_BIT MACRO PDWORDIN,PVAROUT,PBITOUT_BIT PDWORDIN,PVAROUT,PBITOUTCURRENT@PAGE = 0PDESTINATION@PAGE = 0@PAGE MACRO PLABELINCURRENT_ADDR = $DEST_ADDR = PLABELIN((CURRENT_ADDR >= 0X1800) && (CURRENT_ADDR <= 0X2000))@PAGE = 3((CURRENT_ADDR >= 0X1000) && (CURRENT_ADDR <= 0X1800))@PAGE = 2((CURRENT_ADDR >= 0X0800) && (CURRENT_ADDR <= 0X1000))@PAGE = 1((CURRENT_ADDR >= 0) && (CURRENT_ADDR <= 0X0800))@PAGE = 0((DEST_ADDR >= 0X1800) && (DEST_ADDR <= 0X2000))@PAGE = 3((DEST_ADDR >= 0X1000) && (DEST_ADDR <= 0X1800))@PAGE = 2((DEST_ADDR >= 0X0800) && (DEST_ADDR <= 0X1000))@PAGE = 1((DEST_ADDR >= 0) && (DEST_ADDR <= 0X0800))@PAGE = 0_FSR MACRO PNUMIN_BYTE PNUMIN, FSR(((PNUMIN >> 8) & 255) == 1)STATUS,7STATUS,7_WORD MACRO PLABELIN,PWORDOUTLOW (PLABELIN)@B PWORDOUTPWORDOUTHIGH (PLABELIN)@B PWORDOUTPWORDOUT+1@BH = 32= 33H = 34= 35#VAR0 = 36= 37H = 38= 39H = 40= 41H = 42= 43H = 44#P9 = 45= 46KEYPASS#0=46,KEYPASS#1=47,KEYPASS#2=48= 49MKEY#0=49,MKEY#1=50,MKEY#2=51

_B#VR1 = 52= 53= 54

_I = 55

#DEFINE RAW1 PORTA,0

#DEFINE RAW2 PORTA,1

#DEFINE RAW3 PORTA,2

#DEFINE RAW4 PORTA,3

#DEFINE COL1 PORTA,4

#DEFINE COL2 PORTA,5

#DEFINE COL3 PORTC,0

#DEFINE LED1 PORTC,4

#DEFINE LED2 PORTC,5

#DEFINE LEDPOD PORTC,3

#DEFINE FLAG _B#VR1,0

#DEFINE FLAG1 _B#VR1,1#CODE#START0PROTON#MAIN#START@GTB38@GTW40@GT391@ST3540,W38,W$ + 339,W37,W41235,W1I@NT@RD3,5155@RD@W3,5156,PP_RD154,W155,FI@NT@WR@WR@W3,5154156,PP_WREN85157170157156,PP_WR156,PP_WR$ - 1156,PP_WREN155,FI@NT@MS40@W39@P25539,F40,FI@NT338223DLUS@WDLY@P@US38@W2323738,F252$ + 437,F$ - 237,F38,F$ - 637,0$ + 137,1$ + 3$ + 1@NT3,7@NT23,53,6#MAIN#START_SOF EQU $ ; ZAM_676.PRP_EOF EQU $ ; ZAM_676.PRP_SOF EQU $ ; ZAM_676.BAS_000009 EQU $ ; IN [ZAM_676.BAS] ALL_DIGITAL = TRUE7CMCONSTATUS,5_BANK = 1ANSEL_000010 EQU $ ; IN [ZAM_676.BAS] INPUT PORTA.0: INPUT PORTA.1: INPUT PORTA.2: INPUT PORTA.3TRISA,0TRISA,1TRISA,2TRISA,3_000011 EQU $ ; IN [ZAM_676.BAS] OUTPUT PORTA.4: OUTPUT PORTA.5: OUTPUT PORTA.6: OUTPUT PORTCTRISA,4TRISA,5TRISA,6TRISC_000029 EQU $ ; IN [ZAM_676.BAS] KEY = 0STATUS,5_BANK = 0KEY_000030 EQU $ ; IN [ZAM_676.BAS] FLAG = 1_B#VR1,0_000031 EQU $ ; IN [ZAM_676.BAS] FLAG1 = 0_B#VR1,1_000032 EQU $ ; IN [ZAM_676.BAS] KEYPASS[0] = EREAD 00EE@RDPBP#VAR0PBP#VAR0,WKEYPASS#0_000033 EQU $ ; IN [ZAM_676.BAS] KEYPASS[1] = EREAD 11EE@RDPBP#VAR0PBP#VAR0,WKEYPASS#1_000034 EQU $ ; IN [ZAM_676.BAS] KEYPASS[2] = EREAD 22EE@RDPBP#VAR0PBP#VAR0,WKEYPASS#2_000035 EQU $ ; IN [ZAM_676.BAS] MKEY[0] =1: MKEY[1] =7: MKEY[2] =81MKEY#07MKEY#18MKEY#2_000038 EQU $ ; IN [ZAM_676.BAS] GOSUB KLAVAKLAVA_000039 EQU $ ; IN [ZAM_676.BAS] IF KEY = 35 THEN35KEY,WSTATUS,2BC@LL2_000040 EQU $ ; IN [ZAM_676.BAS] GOTO USTKEYUSTKEYBC@LL3@LL2_000041 EQU $ ; IN [ZAM_676.BAS] ELSE_000042 EQU $ ; IN [ZAM_676.BAS] FLAG = 1_B#VR1,0_000043 EQU $ ; IN [ZAM_676.BAS] GOSUB PROVERKAPROVERKA_000044 EQU $ ; IN [ZAM_676.BAS] ENDIF@LL3_000045 EQU $ ; IN [ZAM_676.BAS] GOTO MAINMAIN_000048 EQU $ ; IN [ZAM_676.BAS] HIGH LEDPOD: HIGH LED2:KEY=0STATUS,5_BANK = 1TRISC,3STATUS,5_BANK = 0PORTC,3STATUS,5_BANK = 1TRISC,5STATUS,5_BANK = 0PORTC,5KEY_000049 EQU $ ; IN [ZAM_676.BAS] DELAYMS 3000:LOW LED2:DELAYMS 1000: HIGH LED211PP1H184DLY@WSTATUS,5_BANK = 1TRISC,5STATUS,5_BANK = 0PORTC,53PP1H232DLY@WSTATUS,5_BANK = 1TRISC,5STATUS,5_BANK = 0PORTC,5_000050 EQU $ ; IN [ZAM_676.BAS] IF FLAG = 1 THEN_B#VR1,0BC@LL5_000051 EQU $ ; IN [ZAM_676.BAS] FOR I=0 TO 2_I@LB73_I,WSTATUS,0NX@LB8_000052 EQU $ ; IN [ZAM_676.BAS] WHILE KEY = 0@LL8KEY,FSTATUS,2BC@LL9_000053 EQU $ ; IN [ZAM_676.BAS] GOSUB KLAVAKLAVA_000054 EQU $ ; IN [ZAM_676.BAS] DELAYMS 200200DL@MS_000055 EQU $ ; IN [ZAM_676.BAS] WENDBC@LL8@LL9_000056 EQU $ ; IN [ZAM_676.BAS] EWRITE I ,[ KEY ]_I,WSTATUS,5_BANK = 1EEADRSTATUS,5_BANK = 0KEY,WEE@WR_000057 EQU $ ; IN [ZAM_676.BAS] LOW LED2: DELAYMS 100: HIGH LED2STATUS,5_BANK = 1TRISC,5STATUS,5_BANK = 0PORTC,5100DL@MSSTATUS,5_BANK = 1TRISC,5STATUS,5_BANK = 0PORTC,5_000058 EQU $ ; IN [ZAM_676.BAS] KEYPASS[I] = KEY_I,WKEYPASSFSRKEY,WINDF_000059 EQU $ ; IN [ZAM_676.BAS] KEY = 0KEY_000060 EQU $ ; IN [ZAM_676.BAS] NEXT I_I,FSTATUS,2FR@LB7@LB8_000061 EQU $ ; IN [ZAM_676.BAS] DELAYMS 10003PP1H232DLY@W_000062 EQU $ ; IN [ZAM_676.BAS] FLAG = 0_B#VR1,0_000063 EQU $ ; IN [ZAM_676.BAS] LOW LED2: LOW LEDPODSTATUS,5_BANK = 1TRISC,5STATUS,5_BANK = 0PORTC,5STATUS,5_BANK = 1TRISC,3STATUS,5_BANK = 0PORTC,3_000064 EQU $ ; IN [ZAM_676.BAS] ENDIF@LL5_000065 EQU $ ; IN [ZAM_676.BAS] GOTO MAINMAIN_000068 EQU $ ; IN [ZAM_676.BAS] FLAG1 = 0: SEC=0:I = 0_B#VR1,1SEC_I_000069 EQU $ ; IN [ZAM_676.BAS] FOR I=0 TO 2_I@LB113_I,WSTATUS,0NX@LB12_000070 EQU $ ; IN [ZAM_676.BAS] WHILE KEY = 0@LL12KEY,FSTATUS,2BC@LL13_000071 EQU $ ; IN [ZAM_676.BAS] GOSUB KLAVAKLAVA_000072 EQU $ ; IN [ZAM_676.BAS] DELAYMS 200200DL@MS_000073 EQU $ ; IN [ZAM_676.BAS] SEC=SEC+1SEC,F_000074 EQU $ ; IN [ZAM_676.BAS] IF I>0 AND SEC>30 THEN_I,WPP00T@GTBSP#P9SEC,WPP030T@GTBSP#P9,FSTATUS,2BC@LL15_000075 EQU $ ; IN [ZAM_676.BAS] HIGH LED2: DELAYMS 100: LOW LED2: LOW LEDPOD :I = 0STATUS,5_BANK = 1TRISC,5STATUS,5_BANK = 0PORTC,5100DL@MSSTATUS,5_BANK = 1TRISC,5STATUS,5_BANK = 0PORTC,5STATUS,5_BANK = 1TRISC,3STATUS,5_BANK = 0PORTC,3_I_000076 EQU $ ; IN [ZAM_676.BAS] GOTO MAINMAIN_000077 EQU $ ; IN [ZAM_676.BAS] ENDIF@LL15_000078 EQU $ ; IN [ZAM_676.BAS] WENDBC@LL12@LL13_000080 EQU $ ; IN [ZAM_676.BAS] HIGH LEDPODSTATUS,5_BANK = 1TRISC,3STATUS,5_BANK = 0PORTC,3_000081 EQU $ ; IN [ZAM_676.BAS] IF FLAG1 = 0 THEN_B#VR1,1BC@LL17_000082 EQU $ ; IN [ZAM_676.BAS] IF KEYPASS[I] <> KEY AND MKEY[I]<>KEY THEN_I,WKEYPASSFSRINDF,WPBP#VAR0PBP#VAR0,WKEY,WSTATUS,21SP#P9_I,WMKEYFSRINDF,WPBP#VAR0PBP#VAR0,WKEY,WSTATUS,21SP#P9,FSTATUS,2BC@LL19_000083 EQU $ ; IN [ZAM_676.BAS] FLAG1 = 1_B#VR1,1_000084 EQU $ ; IN [ZAM_676.BAS] ENDIF@LL19_000085 EQU $ ; IN [ZAM_676.BAS] ENDIF@LL17_000086 EQU $ ; IN [ZAM_676.BAS] KEY = 0KEY_000087 EQU $ ; IN [ZAM_676.BAS] HIGH LED2: DELAYMS 100: LOW LED2STATUS,5_BANK = 1TRISC,5STATUS,5_BANK = 0PORTC,5100DL@MSSTATUS,5_BANK = 1TRISC,5STATUS,5_BANK = 0PORTC,5_000088 EQU $ ; IN [ZAM_676.BAS] NEXT I_I,FSTATUS,2FR@LB11@LB12_000089 EQU $ ; IN [ZAM_676.BAS] IF FLAG1 = 0 THEN_B#VR1,1BC@LL21_000090 EQU $ ; IN [ZAM_676.BAS] LOW LEDPODSTATUS,5_BANK = 1TRISC,3STATUS,5_BANK = 0PORTC,3_000091 EQU $ ; IN [ZAM_676.BAS] HIGH LED1STATUS,5_BANK = 1TRISC,4STATUS,5_BANK = 0PORTC,4_000092 EQU $ ; IN [ZAM_676.BAS] DELAYMS 20007PP1H208DLY@W_000093 EQU $ ; IN [ZAM_676.BAS] LOW LED1STATUS,5_BANK = 1TRISC,4STATUS,5_BANK = 0PORTC,4_000095 EQU $ ; IN [ZAM_676.BAS] ENDIF@LL21_000096 EQU $ ; IN [ZAM_676.BAS] LOW LEDPODSTATUS,5_BANK = 1TRISC,3STATUS,5_BANK = 0PORTC,3_000097 EQU $ ; IN [ZAM_676.BAS] RETURN_000100 EQU $ ; IN [ZAM_676.BAS] KEY = 0KEY_000101 EQU $ ; IN [ZAM_676.BAS] COL1 = 1PORTA,4_000102 EQU $ ; IN [ZAM_676.BAS] IF RAW1 = 1 THENPORTA,0BC@LL23_000103 EQU $ ; IN [ZAM_676.BAS] DELAYMS 100100DL@MS_000104 EQU $ ; IN [ZAM_676.BAS] KEY = 11KEY_000105 EQU $ ; IN [ZAM_676.BAS] ENDIF@LL23_000106 EQU $ ; IN [ZAM_676.BAS] IF RAW2 = 1 THENPORTA,1BC@LL25_000107 EQU $ ; IN [ZAM_676.BAS] DELAYMS 100100DL@MS_000108 EQU $ ; IN [ZAM_676.BAS] KEY = 44KEY_000109 EQU $ ; IN [ZAM_676.BAS] ENDIF@LL25_000110 EQU $ ; IN [ZAM_676.BAS] IF RAW3 = 1 THENPORTA,2BC@LL27_000111 EQU $ ; IN [ZAM_676.BAS] DELAYMS 100100DL@MS_000112 EQU $ ; IN [ZAM_676.BAS] KEY = 77KEY_000113 EQU $ ; IN [ZAM_676.BAS] ENDIF@LL27_000114 EQU $ ; IN [ZAM_676.BAS] IF RAW4 = 1 THENPORTA,3BC@LL29_000115 EQU $ ; IN [ZAM_676.BAS] DELAYMS 100100DL@MS_000116 EQU $ ; IN [ZAM_676.BAS] KEY = 4242KEY_000117 EQU $ ; IN [ZAM_676.BAS] ENDIF@LL29_000118 EQU $ ; IN [ZAM_676.BAS] COL1 = 0PORTA,4_000119 EQU $ ; IN [ZAM_676.BAS] COL2 = 1PORTA,5_000120 EQU $ ; IN [ZAM_676.BAS] IF RAW1 = 1 THENPORTA,0BC@LL31_000121 EQU $ ; IN [ZAM_676.BAS] DELAYMS 100100DL@MS_000122 EQU $ ; IN [ZAM_676.BAS] KEY = 22KEY_000123 EQU $ ; IN [ZAM_676.BAS] ENDIF@LL31_000124 EQU $ ; IN [ZAM_676.BAS] IF RAW2 = 1 THENPORTA,1BC@LL33_000125 EQU $ ; IN [ZAM_676.BAS] DELAYMS 100100DL@MS_000126 EQU $ ; IN [ZAM_676.BAS] KEY = 55KEY_000127 EQU $ ; IN [ZAM_676.BAS] ENDIF@LL33_000128 EQU $ ; IN [ZAM_676.BAS] IF RAW3 = 1 THENPORTA,2BC@LL35_000129 EQU $ ; IN [ZAM_676.BAS] DELAYMS 100100DL@MS_000130 EQU $ ; IN [ZAM_676.BAS] KEY = 88KEY_000131 EQU $ ; IN [ZAM_676.BAS] ENDIF@LL35_000132 EQU $ ; IN [ZAM_676.BAS] IF RAW4 = 1 THENPORTA,3BC@LL37_000133 EQU $ ; IN [ZAM_676.BAS] DELAYMS 100100DL@MS_000134 EQU $ ; IN [ZAM_676.BAS] KEY = 1010KEY_000135 EQU $ ; IN [ZAM_676.BAS] ENDIF@LL37_000136 EQU $ ; IN [ZAM_676.BAS] COL2 = 0PORTA,5_000137 EQU $ ; IN [ZAM_676.BAS] COL3 = 1PORTC,0_000138 EQU $ ; IN [ZAM_676.BAS] IF RAW1 = 1 THENPORTA,0BC@LL39_000139 EQU $ ; IN [ZAM_676.BAS] DELAYMS 100100DL@MS_000140 EQU $ ; IN [ZAM_676.BAS] KEY = 33KEY_000141 EQU $ ; IN [ZAM_676.BAS] ENDIF@LL39_000142 EQU $ ; IN [ZAM_676.BAS] IF RAW2 = 1 THENPORTA,1BC@LL41_000143 EQU $ ; IN [ZAM_676.BAS] DELAYMS 100100DL@MS_000144 EQU $ ; IN [ZAM_676.BAS] KEY = 66KEY_000145 EQU $ ; IN [ZAM_676.BAS] ENDIF@LL41_000146 EQU $ ; IN [ZAM_676.BAS] IF RAW3 = 1 THENPORTA,2BC@LL43_000147 EQU $ ; IN [ZAM_676.BAS] DELAYMS 100100DL@MS_000148 EQU $ ; IN [ZAM_676.BAS] KEY = 99KEY_000149 EQU $ ; IN [ZAM_676.BAS] ENDIF@LL43_000150 EQU $ ; IN [ZAM_676.BAS] IF RAW4 = 1 THENPORTA,3BC@LL45_000151 EQU $ ; IN [ZAM_676.BAS] DELAYMS 200200DL@MS_000152 EQU $ ; IN [ZAM_676.BAS] IF RAW4 = 1 THENPORTA,3BC@LL47_000153 EQU $ ; IN [ZAM_676.BAS] DELAYMS 5001PP1H244DLY@W_000154 EQU $ ; IN [ZAM_676.BAS] KEY = 3535KEY_000155 EQU $ ; IN [ZAM_676.BAS] ENDIF@LL47_000156 EQU $ ; IN [ZAM_676.BAS] ENDIF@LL45_000157 EQU $ ; IN [ZAM_676.BAS] COL3 = 0PORTC,0_000158 EQU $ ; IN [ZAM_676.BAS] RETURN_EOF EQU $ ; ZAM_676.BAS@LB49PB@LB49

__EOF

__CONFIG CPD_OFF&CP_OFF&BODEN&MCLRE_OFF&PWRTE_OFF&WDT_OFF&INTRC_OSC_NOCLKOUT

END

.2 Моделирование

Для моделирования описанного кодового замка была использована программа разработки электрических схем Proteus 7 Professional.

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

Микроконтроллер PIC16F676

Клавиатура KEYPAD-PHONE

Светодиоды 3х цветов (LED-BLUE, LED-GREEN, LED-RED)

Резистор





После правильного соединения элементов между собой и их настойки, устанавливаем файл прошивки (ZAM_676.hex) к контроллеру в его свойствах.

Теперь можно пытаться симулировать работу собранного устройства.

6. Заключение

В данной работе была осуществлена разработка кодового замка.

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

7. Список литературы

1. Описания электронных компонентов в каталоге товаров оптовой базы комплектации электронных компонентов и приборов “ПЛАТАН”: http://www.platan.ru/

. Описание электромеханического замка ПОЛИС-13: http://dialog-universal.ru/product_info.php?cPath=109&products_id=173

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

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

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

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

. П. Хоровиц, У. Хилл. Искусство схемотехники М. Мир, 2003.

Похожие работы на - Кодовый замок

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!