HALÛK BAYRAM & AHMET FARUK UĞUR

ORTEM ELEKTRONİK - TUBITAK  Marmara Araştırma Merkezi  / GEBZE

2001-07-27

8031 Mimarisi

8051 Komut Kümesi

konu ile ilgili linkler:

http://www.cit.ac.nz/smac/i8051/estart.htm

http://www.8051.com

konu ile ilgili kitap:

Mikroişlemciler ve 8051 Ailesi

Dr. Halûk Gümüşkaya

ALFA Yayınları

                        SMART KARTLI GÜVENLİK SİSTEMİ

Bu uygulamada kullanıcı bir tuş takımı aracılığı ile mikrokontrolörle iletişim kurmaktadır. Kullanıcı, arabirim aracılığı ile şifresini girmektedir ya da şifre değiştirmek isteğini kontrolöre bildirebilmektedir. Kontrolör tuş takımından okuduğu kodların anlamlarını çözerek kullanıcının isteği doğrultusunda gerekli işlemleri yerine getirebilmektedir. Tablo -1 de projenin gerçeklenmesi için gerekli olan malzeme tablosu verilmiştir.

Adet    Parça                          Tanım

1         Kondansatör 10 mikroF      Resetleme işleminde

2         Kondansatör 33pf              Osilatör kondansatörleri

1         Kristal , 11.0592 Mhz        Osilatör kristal

1         AT89C2051                      Atmel MCU

3         LED

3         Direnç ,10K                      Tuş takimi pull-up dirençleri

1         Direnç ,10K                      Reset direnci

1         Sıra direnç, 8x10K            Port-1 pull-up dirençleri

2         Direnç ,10K                      Port3.0 ve Port3.1 pull-up

1         Transistör ,BC337             Not kapısı

1         Direnç , 120K                  Not kapısı için

1         Direnç , 3.3K                  Not kapısı için

1         Smart kart okuyucu

1         Seri EEPROM, 93C46

1         4x3 tuş takimi                  Kullanıcı arabirimi

Tablo-1. Proje malzeme tablosu

Mikrokontrolöre yapılan bağlantılar:

PIN.jpg (23584 bytes)

 

Kullanılan osilatörün bağlantı şekli:

1. Kullanıcı Arabirimi (Tuş Takımı)

Tuş takımı matris biçiminde yerleştirilmiş olan tuşlardan oluşur. Smart kartli güvenlik sistemin uygulamasinda kullanilan tuş takimi 4 x 3 lük bir matris biçimindedir.

Yıldız Tuşu (*) : Kullanıcıların şifre değiştirme işlemlerinde, Yetkili kullanıcının smart kart iptal etme ve yeni smart kart oluşturma işlemlerinde kullanilir.

Diyez Tuşu (#) : Bu tuş sadece kullanicilarin sisteme şifrelerini girmelerinde kullanilir.

Tuş takiminin taranmasi işleminde, satirlara (0111), (1011), (1101) ve (1110) degerleri gönderilir. Sütunlar pull-up dirençleri vasitasiyla lojik 1 seviyesindedir. Tarama işlemindeki dört bit şunu saglar: 1.bit (LSB) 4 nolu satira , 4.bit (MSB) 1 nolu satira ve 2 ve 3 . inci bitlerde sirasiyla 3 ve 2 nolu satirlara gönderilir. Tarama işlemi sirasinda herhangi bir tuşa basilmasi durumda ilgili sütün lojik 0 seviyesinde digerleri ise lojik 1 seviyesinde kalacaktir. Eger hiç bir tuşa basilmamiş ise bu 4 satirin bagli oldugu kapilardan lojik 1 degeri okunur.

2. Seri EEPROM (FM93C46)

Sisteme kayıtlı olan tüm kullanıcılar dahili seri eeprom (93C46) da tutulmaktadır. Hafıza kapasitesi 256 byte dır. 93C46 ‘nın pin yapısı aşağıdaki gibidir.

 

FM93C46 nın komut seti:

Tüm işlemlerden önce WEN gerçekleştirilmelidir. Zamanlama diyagrami aşagidadir:

Yazdığımız programdaki WEN alt programı aşağıdadır:

EE_EWEN:           CLR SK

MOV R2,EEPROM_SECIMI

CJNE R2, #001h, HARICI2

SETB CS_D

JMP ASAGI2

HARICI2:             SETB CS_S

ASAGI2:               MOV A,#00000001b ; Start bit

CALL SEND_EE ; Start biti gönderiliyor

MOV A,#00110000b ; Wen OpCode

CALL SEND_EE ; WEN opcode gönderiliyo

MOV R2,EEPROM_SECIMI

CJNE R2, #001h, HARICI3

CLR CS_D

JMP ASAGI3

HARICI3:             CLR CS_S

ASAGI3:             CLR DIO

                            RET

Okuma işleminin zaman diyagramı:

Buradaki işlemde ilk önce start biti ve opcode ile okunacak adresi gönderiliyor. Daha sonra 93C46 nin DO ucundan dummy biti verinin yollanmaya başlanacagi sinyalinden sonra 16 bitlik veri gönderilir. Yazdigimiz programdaki seri eeprom okuma alt programi şöyledir:

EE_READ:

                             CLR SK

                             MOV R2,EEPROM_SECIMI

                             CJNE R2, #001h, HARICI8

                              SETB CS_D

JMP ASAGI8

HARICI8: SETB CS_S

ASAGI8: MOV A,#00000001b ; start

CALL SEND_EE

MOV A,#10000000b ; Read OpCode

ORL A,EEPROM_ADRES ; Adresi al

CALL SEND_EE

 

SETB DIO

JB DIO,$ ; 0 okuyana kadar bekle ( dummy biti )

 

CALL REC_EE

MOV R0, EEPROMDAN_GELEN_VERI_H

MOV @R0, A ; D15...D8

 

CALL REC_EE

MOV R0, EEPROMDAN_GELEN_VERI_L

MOV @R0, A ; D7...D0

MOV R2,EEPROM_SECIMI

CJNE R2, #001h, HARICI9

CLR CS_D

JMP ASAGI9

HARICI9:             CLR CS_S

ASAGI9:

                             CLR DIO

                             RET

Yazma işleminin zaman diyagrami:

 

Buradaki işlemde ilk önce start biti ve opcode ile yazilacak adres gönderiliyor. Daha sonra yazilcak 16 bitlik veri gönderilir. Yazma işleminin bittigini anlamak için DO ucu lojik sifir seviyesine düşer ve lojik bir seviyesine çikar.Yazdigimiz programdaki seri eeprom a yazma alt programi şöyledir:

 

EE_WRITE:           CLR SK

MOV R2,EEPROM_SECIMI

CJNE R2, #001h, HARICI4

SETB CS_D

JMP ASAGI4

HARICI4:             SETB CS_S

ASAGI4:

MOV A,#00000001b ; Start

CALL SEND_EE

MOV A,#01000000b ; Write OpCode

ORL A,EEPROM_ADRES ; Adresi al

CALL SEND_EE

MOV A,EEPROM_YAZ_VERI_H ; YAZILACAK VERİNİN YÜKSEK BYTE

CALL SEND_EE

MOV A,EEPROM_YAZ_VERI_L ; YAZILACAK VERİNİN DÜŞÜK BYTE

CALL SEND_EE

SETB DIO

MOV R2,EEPROM_SECIMI

CJNE R2, #001h, HARICI5

CLR CS_D

JMP ASAGI5

HARICI5:             CLR CS_S

ASAGI5:

NOP

MOV R2,EEPROM_SECIMI

CJNE R2, #001h, HARICI6

SETB CS_D

JMP ASAGI6

HARICI6:             SETB CS_S

ASAGI6:

NOP

NOP

NOP

JNB DIO,$ ; 1 okuyana kadar bekle

MOV R2,EEPROM_SECIMI

CJNE R2, #001h, HARICI7

CLR CS_D

JMP ASAGI7

HARICI7:             CLR CS_S

ASAGI7:

CLR DIO

RET

FM93C46 ’nın hafıza haritası:

000H adresi : parametere bilgisi

Buranın en düşük biti tuş takımının parametresidir. En küçük değerlikli bit sıfır ise tuş takımının kullanılmaz. Eğer bir ise tuş takımının aktiftir..

001H-005H adresi : boş alan

006H adresi : Sistem numarası

Her bir mikrokontrolör sistemi için farklı bir numara verilir.

007H adresi : Sisteme kayıtlı kullanıcı sayısı tutulur. Kullanıcı sayısına yetkili kullanıcı dahil değildir.

008H adresi : :adresinden itibaren kullanıcı kayıtları gelmektedir. Yetkili kullanıcının id_no su 0001’ dir. Normal kullanıcılar 0002 nodan itibaren başlar. Kullanıcı kayıt içeriği:

ID_NO............. : Sisteme kayıtlı her smart kart için farklıdır.

SIFRE ............. : Şifre kriptolanmiş olarak saklanir.

GUVEN_PAR.. : Kart kopyalamalarına önlem olarak yapılmıştır.

Smart kart içeriği:

000H adresinden itibaren veriler yazılmaktadır.

1) ID_NO............. : Sisteme kayıtlı her smart kart için farklıdır.

2) SIFRE ............. : Şifre kriptolanmiş olarak saklanir.

3) GUVEN_PAR.. : Kart kopyalamalarına önlem olarak yapılmıştır.

4) SISTEM_NO.... : Sistem numarası

Sistemin İşleyişi:

1-) Sistemde başlangiçta kirmizi led yanar.

2-) Smart kart, okuyucuya yerleştirildikten sonra içerigi dahili seri eeprom ile karşilaştirilir. Karşilaştirma sonucu dogru ise parametre bilgisi bölümünden tuş takiminin aktif olup olmadigi kontrol edilir. Yanliş ise uyari verir.

3-) Tuş takimi iptal edilmiş ise belli bir miktar röle aktif olur ve sonra yeşil led yanar.

4-) Smart kart 3 saniye içerisinde alınmadığı takdirde ikaz vererek kullanıcının kartını unutması engellenmiştir.

5-) Kart çıkarıldığında sistem tekrar başa döner. Kırmızı led yanar.

6-) Tuş takimi aktif ise kullanicidan 4 haneli şifresi girilmesi ve artindan diyez tuşuna basilmasi beklenmektedir.

7-) Şifre girilip diyeze basildiktan sonra şifre kontrol edilir. Yanliş ise tekrar girilmesi istenir. Dogru girildiginde, röle aktif olup yeşil led yanar. 3 sn içerisinde kart alinmaz ise uyari verir. Kart alindiginda kirmizi led yanar. Yeşil led söner.

6-) Bu aşamalar esnasinda kartin yerinden çikarilmasi durumda sistem uyari vererek başlangica dönecektir.

 

Sistemin Diğer Fonksiyonları

1-) Şifre Degiştirme :

Kullanıcı kartını okuyucuya yerleştirdikten sonra 4 haneli şifresini girdikten sonra üç kere sıfır tuşuna ve yıldız tuşuna basar. Şifreyi ve opcode doğru olarak girmiş ise yeni şifre girilmesinin hazır olduğunu belirten bir ikaz verir. Yeni şifre girilip yıldız tuşuna basılır. Ve tekrar yeni şifre girilip yıldız tuşuna basılır. Girilen şifreler uyumlu ise yeşil ışık yanar ve kartın alınması beklenir. Kart 3 sn içerisinde alınmaz ise ikaz verir.

2-) Kart İptal Etme :

Kart iptal etme işlemi sadece tek bir kart ile yapilabilir. Her bir sistemde bir tane yetkili kart olmaktadir. Yetkili kart takildiktan sonra şifre girilir. Ve ardindan üç kere sifir tuşuna ve sonra yildiz tuşuna basilir. Girilen şifre ve opcode dogru ise iptal edilecek id_no girilmesi beklenir. id_no girilip yildiz tuşuna basilirsa tuş iptal olur ve yeşil led yanar. Artik o kart artik sisteme giremez.

3-) Kart Oluşturma :

Kart iptal etme işleminde de oldugu gibi , kart oluşturma işleminde de yetkili kart kullanilir. Yetkili kart takildiktan sonra şifre girilir. Ve ardindan iki kere sifir tuşuna , bir kere bir tuşuna ve sonra yildiz tuşuna basilir. Girilen şifre ve opcode dogru ise yeşil işik yanar ve yetkili kartin çikarilip yeni bir kartin takilmasini bekler. Yetkili kart çikarildiginda yeşil işik söner ve kirmizi işik yanar. Yeni kart takildiginda yeşil işik yanar ve artik kart oluşturulmuştur. Oluşturulan yeni kartın şifresi 1111 dir.

programın tamamı