Mikroprocesorowy zamek szyfrowy

Wraz z rozwojem techniki mikroprocesorowej nastąpił gwałtowny rozwój różnego rodzaju zabezpieczeń i elektronicznych kluczy. Dla tych, którym znudziło się noszenie tradycyjnych kluczy od domu czy od samochodu proponujemy prosty i niezawodny klucz elektroniczny – mikroprocesorowy zamek szyfrowy.
Zasada działania
Głównym elementem układu jest mikroprocesor 89C2051 i jego oprogramowanie. Program został napisany w BASIC`u i skompilowany na kompilatorze BASCOM LT. 89C2051 zaczyna wykonywa kod programu po wł1czeniu zasilania i rozładowaniu kondensatora C3. Czas rozładowania kondensatora wynosi około 1s. Wykonywanie programu rozpoczyna się od informacji, jaki kwarc jest dołączony do 89C2051. W tym przypadku jest to rezonator kwarcowy o częstotliwości drga 12MHz. Informacja o tym zawarta jest w pierwszej linii programu komenda $crystal. Potem następuje definicja typów zmiennych wykorzystywanych w programie, komenda DIM. Kolejne linie programu definiuj1 wartość początkową zmiennych. Komendy zawarte miedzy DO a LOOP, to główna pętla programu. Zadaniem jej jest kolejne zerowanie linii portów P1.1, P1.0,P1.5, P1.6. Miedzy zerowaniami jest ustawiana wartością zmiennej Kolumna i skok do podprogramu Kolumna. Zadaniem podprogramu Kolumna jest identyfikacja naciśnięte go przełącznika S1-S12, sygnalizacja dźwiękowa w momencie naciśnięcia przełącznika S1-S12, zapobieganie iskrzenia styków przełączników i wywołanie podprogramu Kod. Podprogram Kod określa czy został naciśnięty przełącznik o oznaczeniu # lub *. Jeśli tak to wywołuje podprogram Porównaj. Zadaniem programu Porównaj jest identyfikacja wpisanego kodu. Przy pozytywnej identyfikacji następuje wywołanie podprogramu Przekaźnik, a następnie podprogramu Kasuj. Jeśli identyfikacja jest bledną następuje wywołanie tylko podprogramu Kasuj. Podprogram poprzez kolejne komendy RESTORE przekazuje z powrotem sterowanie do głównej petli programu. I proces zaczyna się od początku. Tak najkrócej można opisać działanie programu w 89C2051. Zadaniem układu US2 jest buforowanie wyjścia US1. Ma to na celu ochronę 89C2051 przed zbyt dużym poborem prądu z jego portów. Zbyt duży pobór prądu spowodowałby uszkodzenie 89C2051. Do sterowania przekaźnika wykorzystano aż trzy bufory połączone równolegle. Rozwiązanie takie zapewnia odpowiednią wydajność prądową, jaka jest potrzebna do sterowania przekaźnika. US3 obniża napięcie zasilania z +12V do +5V, które jest niezbędne do prawidłowej pracy US1 i US2.

Zmiana kodu dostępowego
Po włączeniu zasilania kod zawsze jest ten sam 123. Gdy chcemy zmienić kod
musimy wcisnąć 123 i *. Następnie wprowadziæ nowy kod np. 53335 i zatwierdzić poprzez naciśnięcie #. Przy wprowadzaniu nowego kodu należy pamiętać, że maksymalna długość kodu może składać się z 10 cyfr. Gdyby zdarzyło się, że zapomnimy wprowadzony kod, jedynym wyjęciem jest wyłączenie zasilania i powtórne wprowadzenie kodu.

Wsad do procesora:

‚**************************************
‚Klucz elektroniczny
‚Kod po wlaczeniu zasilania 123
‚Max dlugosc kodu 10 cyfr
‚Procesor 89C2051
‚Kompilator BASCOM LT
‚**************************************
$crystal = 12000000
Dim Klawisz As Byte , Adm As Byte , Wynik As Byte
Dim Licznik As Byte , Licznik1 As Byte
Dim Kod1 As String * 10 , Kod0 As String * 10
P1 = 255
P3 = 255
Licznik = 0
Licznik1 = 0
Kod0 = „[\]”
Kod1 = Left(0)
Wynik = 0
Adm = 0
‚**************************************
‚petla glowna
‚**************************************
Do
Reset P1.6
Klawisz = 60
Gosub Kolumna
Reset P1.5
Klawisz = 70
Gosub Kolumna
Reset P1.3
Klawisz = 80
Gosub Kolumna
Reset P1.1
Klawisz = 90
Gosub Kolumna
Loop
‚**************************************
‚podprogram kolumna
‚**************************************
Kolumna:
If P1.4 = 0 Then
P3.3 = 0
Klawisz = Klawisz + 1
Waitms 20
Bitwait P1.4 , Set
Waitms 100
P3.3 = 1
Gosub Kod
End If
If P1.7 = 0 Then
P3.3 = 0
Klawisz = Klawisz + 2
Waitms 20
Bitwait P1.7 , Set
Waitms 100
P3.3 = 1
Gosub Kod
End If
If P1.2 = 0 Then
P3.3 = 0
Klawisz = Klawisz + 3
Waitms 20
Bitwait P1.2 , Set
Waitms 100
P3.3 = 1
Gosub Kod
End If
P1 = 255
Return
‚**************************************
‚podprogram kod
‚**************************************
Kod:
If Adm = 1 Then
If Klawisz = 61 Then
Adm = 0
Wynik = 0
Licznik1 = 0
Gosub Kasuj
Return
End If
Kod0 = Kod0 + Chr(klawisz)
INC LICZNIK1
If Licznik1 = 10 Then
Adm = 0
Kod0 = Left(0)
Licznik1 = 0
Gosub Kasuj
End If
Return
End If
If Klawisz = 61 Then
Gosub Porownaj
If Wynik = 1 Then
Gosub Przekaznik
End If
Gosub Kasuj
Return
End If
If Klawisz = 63 Then
Gosub Porownaj
End If
If Klawisz = 63 Then
If Wynik = 1 Then
Adm = 1
Kod0 = Left(0)
Licznik1 = 0
End If
Return
End If
Kod1 = Kod1 + Chr(klawisz)
INC LICZNIK
If Licznik = 10 Then
Gosub Kasuj
End If
Return
‚**************************************
‚podprogram porownaj
‚**************************************
Porownaj:
If Kod0 = Kod1 Then
Wynik = 1
End If
Return
‚**************************************
‚podprogram kasuj
‚**************************************
Kasuj:
Kod1 = Left(0)
Licznik = 0
Wynik = 0
Return
‚**************************************
‚podprogram przekaznik
‚**************************************
Przekaznik:
If P3.2 = 0 Then
P3.4 = Not P3.4
P3.5 = Not P3.5
Return
End If
P3.4 = 0
P3.5 = 0
Wait 2
P3.4 = 1
P3.5 = 1
Return

Wykaz elementów:
R1 – 1kΩ
C1,C2 – 33pF
C3 – 4,7μF/50V
D1 – 1N4001
D2 – dowolny LED
US1 – 89C2051
US2 – 74LS07
US3 – 78L05
B1 – buzer
Q1 – 12MHz
PK1 – np. 4088
S1-S12 – mikro switch

Schemat ideowy:

 Mikroprocesorowy zamek szyfrowy

Post Author: swistak

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Potwierdz, że nie jesteś botem. *