Разработка электронного кодового замка с использованием микроконтроллера

Основные требования, предъявляемые к микроконтроллеру PIC16F676. Назначение отдельных функциональных блоков. Схема проектируемого устройства. Разработка рабочей программы моделирования кодового замка с помощью Proteus 7 Professional, ее компоненты.

Рубрика Коммуникации, связь, цифровые приборы и радиоэлектроника
Вид курсовая работа
Язык русский
Дата добавления 31.01.2018
Размер файла 196,0 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru//

Размещено на http://www.allbest.ru//

Содержание

1. Введение

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Заключение

1. Введение

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

дисплей

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

За основную структурную схему я выбрала первый вариант по следующим причинам:

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

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

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

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

2.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. Структурная схема устройства и её описание

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

5.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

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

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

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

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

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

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

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

Резистор

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

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

Заключение

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

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

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

Размещено на Allbest.ru

...

Подобные документы

  • Принцип работы кодового замка. Проектирование кодового замка с возможностью звуковой сигнализации при попытке подбора кода, на базе микроконтроллера с архитектурой MCS-51. Функциональная схема устройства, составление программы для микроконтроллера.

    курсовая работа [3,2 M], добавлен 14.11.2010

  • Разработка электронного кодового замка с использованием микроконтроллера PIC16F676. Назначение отдельных функциональных блоков. Возможные варианты структурных схем. Обоснование выбора структурной схемы устройства. Алгоритм работы структурной схемы.

    курсовая работа [334,9 K], добавлен 18.06.2012

  • Общее описание восьмиразрядного высокопроизводительного однокристального микроконтроллера. Порты ввода-вывода. Разработка структурно-функциональной схемы. Выбор элементной базы, основные используемые процедуры. Описание алгоритма программы, ее листинг.

    курсовая работа [28,4 K], добавлен 23.12.2012

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

    курсовая работа [333,3 K], добавлен 26.12.2014

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

    реферат [663,7 K], добавлен 25.06.2014

  • Электронный замок: общая характеристика и принцип действия. Анализ вариантов реализации устройства. Разработка алгоритма функционирования, структурной и электрической принципиальной схемы электронного замка. Блок-схема алгоритма работы программы.

    курсовая работа [363,3 K], добавлен 10.05.2015

  • Технические характеристики цифрового кодового звонка. Принцип его действия: структурная и принципиальная схема. Разработка инструкции по настройке и регулировке. Характерные неисправности изделия, алгоритм их поиска. Электрический расчет мультивибраторов.

    курсовая работа [194,7 K], добавлен 24.05.2017

  • Выбор и обоснование основных технических решений микроконтроллера. Разработка алгоритма рабочей программы. Расчет потребляемой мощности и определение требований к источникам питания. Описание модулей программы и ее отдельных функциональных модулей.

    курсовая работа [210,3 K], добавлен 25.11.2013

  • Описание Автоматического Определителя Номера (АОНа). Характеристики микроконтроллера Z86E0812PSC, ЖК индикатора PANAPHONE. Ассемблирование и разработка алгоритма работы устройства. Управление АОН и описание функциональных узлов МПС, принципиальная схема.

    курсовая работа [913,0 K], добавлен 26.12.2009

  • Микросхема 555 - таймер: история создания, фирмы производители и аналоги, основные технические характеристики. Принцип работы и практическое применение. Идеологически устройство чипа. Пример работы кодового замка. Переменный подстрочный резистор.

    курсовая работа [4,0 M], добавлен 16.06.2015

  • Согласование уровней сигналов функциональных схем. Электрический расчёт узлов устройства. Схема преобразователя тока в напряжение. Проверка узлов схемы на Electronics Workbench. Разработка печатной платы одного из фрагментов электронного устройства.

    курсовая работа [301,2 K], добавлен 15.08.2012

  • Микропроцессорные системы и микроконтроллеры. Разработка схемы и программы микроконтроллера. Симуляция проекта в программе Proteus 7. Прерывание программы по внешнему сигналу, поступающему в процессор. Устройство и настройка канала порта на ввод-вывод.

    контрольная работа [551,8 K], добавлен 26.01.2013

  • Особенности проектирования микропроцессорного устройства "Цифровой осциллограф". Выбор микроконтроллера, описание периферийных устройств. Разработка принципиальной схемы устройства и программы для микроконтроллера, осуществляющей все функции устройства.

    курсовая работа [923,5 K], добавлен 24.12.2012

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

    курсовая работа [1,1 M], добавлен 22.01.2015

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

    курсовая работа [667,0 K], добавлен 23.04.2015

  • Описание узлов 16 разрядного счетчика и изучение принципов работы его элементов. Обзор общих сведений о триггерах. Разработка принципиальной схемы проектируемого устройства с использованием моделей компьютерной программы Electron ics Workbench 5.12.

    контрольная работа [1,1 M], добавлен 25.05.2014

  • Разработка структурной и принципиальной схемы устройства и его отдельных блоков и обоснования принятых решений. Алгоритм и временная диаграмма работы генератора и его отдельных блоков. Расчет основных параметров и характеристик и моделирование генератора.

    курсовая работа [44,0 K], добавлен 29.01.2009

  • Структурная схема устройства управления. Алгоритм работы микроконтроллера в его составе. Строение центрального процессорного элемента – микроконтроллера AVR семейства Classic. Принципиальная схема устройства, расчет временных параметров ее работы.

    курсовая работа [636,5 K], добавлен 03.12.2013

  • Функциональная спецификация и преимущества термометрического датчика. Структурная схема микроконтроллера РIС16F84A. Алгоритм работы программы, описание функциональных узлов, выбор элементной базы и принципиальная схема терморегулятора для аквариума.

    курсовая работа [4,7 M], добавлен 27.12.2009

  • Разработка принципиальной схемы и описание работы контроллера клавиатуры/дисплея КР580ВД79. Схема сопряжения микроконтроллера с фотоимпульсным датчиком. Расчет потребляемого тока от источника питания. Блок-схема программы вывода информации на индикацию.

    курсовая работа [736,9 K], добавлен 18.02.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.