Кодовый замок
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
@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 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. Заключение
В данной работе была осуществлена разработка кодового замка.
В ходе выполнения работы был проведён анализ задачи, на основе которого были сформулированы требования к конечной системе. На основе требований была построена структурная схема. На основании структурной схемы были подобраны соответствующие устройства для реализации функций, возложенных на элементы системы. Исходя из экономических и эксплуатационных соображений, для данного устройства был выбран микроконтроллер PIC16F676. Особенностью данного замка является наличие световой индикации, оповещающей владельца о правильности ввода кода. Далее, с использованием выбранных устройств была построена функциональная схема. Разработка завершилась составлением блок-схемы алгоритма и написанием исходного кода программы для микроконтроллера.
При выполнении данного курсового проекта были получены новые и закреплены старые знания в области микроконтроллеров, разработки программ на языке высокого уровня, моделировании схем устройств.
7. Список литературы
1. Описания электронных компонентов в каталоге товаров оптовой базы комплектации электронных компонентов и приборов ПЛАТАН:
. Описание электромеханического замка ПОЛИС-13:
. Описание клавиатуры AK-207 на сайте компании Accord:
. Описание микроконтроллера AT89S51 на сайте компании Atmel:
. Описание микроконтроллера AT89S51:
. В.Б. Бродин. Микроконтроллеры: архитектура, программирование, интерфейс: