ELEKTRONSKA  KLJUÈAVNICA


Avtorja:
    Borut Seljak
    Peter Paglovec
 

Vsebina:

OPIS NALOGE
HARDVERSKA IZVEDBA
PROGRAMSKA  IZVEDBA
PIT
PROGRAMSKA KODA

OPIS NALOGE:
V filmih je lepo videti elektronske kljuèavnice, zgleda fino in zelo moderno. Zato sva hotela nekaj takega narediti in preiskusit.
Naprava naj bi delala podobno kot bankomat. Prideš, vstaviš kartico, vtipkaš geslo in vrata se odprejo(žal ne dajo denarja).
Uporabila sva telefonske kartice, za kodo pa uporabila prebrano serijsko številko kartice, katero se primerja s kodo uporabnika.
Da je stvar še malo bolj zanimiva, sva naredila še menujsko izbiro nastavitev kljuèavnice(trajanje vklopa releja, definiranje in brisanje uporabnikov). Za dostop do tega menuja je potrebno vstaviti "sistemsko" kartico in vpisati kodo.


HARDVERSKA IZVEDBA: (nazaj)
Delala sva z RT68-03, uènim vezjem (avtor Sreèko Levaèiè),dalo se ga je dobiti na faksu. Na plošèico sva pritrdila tipkovnico, displej, rele, podnožje za kartico, piezo piskaè in vsa integrirana vezja, potrebna za dostopanje do teh enot.
Displej sva priklopila na podatkovno vodilo, ker pa je RW signal prehiter za direktno krmiljenje displeja oz. da bi izbiral med vpisom in branjem, sva RW priklopila na naslovno vodilo, ker so ti biti tega vodila dlje postavljeni (glej sliko in shemo).
S tem sva dosegla, da procesor vidi displej na štirih naslovih(osnovni prijemi za delanje z displeji so opisani v Svetu elektronike št.6,7; in na straneh proizvajalcev). Za krmiljenje so vsi displeji, ki imajo vgrajeno vezje HD44780, enaki.
Tipkovnico sva sunila iz domaèega iskrinega telefonskega aparata (eta). Priklopila sva jo preko D flip-flopa IC 74hc573(izhod za izbiro vrstice) in vhodnega IC74hc245 (ki doloèa smer podatkov) na podatkovno vodilo.
Podnožje kartice sva priklopila direktno na port1. Za ugotavljanje prisotnosti kartice je v podnožju vgrajeno stikalo, ki se razklene ko je vstavljena kartica.
Rele je preko transistorja priklopljen na enega od prostih pinov porta1(glej shemo). Glej tudi PIT.
Piezo piskaè je priklopljen enako kot rele.
(nazaj)

PROGRAMSKA IZVEDBA:
Kdor se hoèe poglobiti v programsko izvedbo tega projekta naj si vzame nekaj dopusta in se potopi v 1513 vrstic dolg tekst, ki govori o dogajanju med izvajanjem programa.
Na kratko.
Program je sestavljen iz opravil in glavnega programa.
(nazaj)
Opravila:
Tabela opravil:
        ORG   _EPROM       ;Must start at $xx00!
SCHTAB  FDB   TIM          ;Timer.
        FDB   KBD          ;Tipkovnica.
        FDB   KARTASK ;    ;kartica
        FDB   SCHRET;      ;Void task.
        FDB   TIM          ;Timer.
        FDB   SCHRET;      ;Void task.
        FDB   IZPISTASK    ;IZPIS NA DISPLEJ.
        FDB   SCHRET       ;Void task.
        FDB   TIM          ;Timer.
        FDB   SCHRET;      ;Void task.
        FDB   KARTASK      ;kartica
        FDB   SCHRET;      ;Void task.
        FDB   TIM          ;Timer.
        FDB   BEE          ;piskac
        FDB   IZPISTASK    ;IZPIS NA DISPLEJ.
        FDB   RELE         ;Rele.
(nazaj)

-tipkovnica (Peter): Procesor vidi tipkovnico kot dve spominski lokaciji. Prva je za vpis, z njo izbereš vrstico. Druga je za branje, z nje prebereš stanje tipk v posamezni vrstici. Pritisnjene tipke se shranjujejo v FIFO medpomnilnik( med KBDB in  KBDE). Ob vsakem pritisku tipke piezo zapiska (pošlje se ukaz driverju za piskaè preko BEEDUR).
-piezo piskaè(Peter): Opravilo ima svojo èasovno rezino, ki se izvede 64-krat na sekundo. Ob vsakem klicu preveri, èe je v BEEDUR zapisana nenièelna vrednost. Èe je, se postavi bit porta1 in s tem sproži piskanje hkrati se tudi BEEDUR zmanjša za 1, sicer se briše bit porta 1.
-rele(Peter): Opravilo deluje podobno kot piskaè, le da se RELEDUR zmanjša samo vsakih 64 klicev.
-displej(Peter in Borut): Krmilimo ga preko podatkovnega in ukaznega registra. Procesor ju vidi na štirih lokacijah. Posebej naslov za branje in pisanje v register. Za prikaz znakov na displej vpisujemo v podatkovni register($1002) , za nastavitve displeja pa v ukazni register($1000). Ob vsakem vpisu podatka ali ukaza pa je potrebno preverjati še zastavico BUSY, ki pove, èe je displej že pripravljen na nov podatek ali ukaz. Ta zastavica je osmi bit ukaznega registra, ki ga preberemo na ($1001).  Driver bere podatke iz medpomnilnika (med DISB in DISE).
-kartica(Borut): Kartica je prikljuèena na port1. Z njim generiramo clock impulze, ki poveèujejo naslovni števec kartice, med tem pa beremo vsak bit vsebine kartice. Na zaèetku je potrebno kartico resetirati da postavimo naslovni števec na 0. Potem pa pošiljamo preko porta 1. Clock impulze, hkrati pa beremo izhod iz kartice.
(nazaj)
Glavni program (Borut):
Na zaèetku je potrebna inicializacija timerja, zbriše vse kartice, ki so vpisane v spominu, ker bi sicer lahko prišlo do napak v delovanju. Ker je ob vsakem opravilu še precej podprogramov za branje iz medpomnilnikov in vpisovanje vanj, je sam glavni program dokaj enostaven.
Deli se na dva dela. Nastavljanje in Odpiranje.
Za odpiranje najprej program poèaka da je vstavljena kartica in da je prebrana (spremlja KARSTAT in KTABSTAT). Nato se klièe podprogram za branje Kode, ki se shrani na doloèeno spominsko lokacijo in šele nato se išèe in primerja zapis kartice v tabeli kjer je seznam kartic. Vsaka kartica ima zapis dolg 9 znakov (9 bytes). Ko najde kartico pogleda v tabeli, èe je ta kartica brisana (preverja status katrice v tabeli mora biti 1), nato pa preverja še kodo ki jo je uporabnik vpisal. Èe ne najde kartice ali da koda ni pravilna, izpiše sporoèilo, da ni pravilna kartica in se vrne na zaèetek.
Za dostop do menuja nastavitev, je potrebno vstaviti sistemsko kartico in vtipkati pravilno kodo, ki je shranjena v Epromu (tudi ob prvem vklopu napajanja to storimo). Potem se izpisuje na displej menujski tekst in ob pritisku na tipko se izpiše naslednji.
Pri vnašanju nove kartice se v tabeli kartic najprej poišèe prazno mesto tako da beremo status kartic v tabeli( status nam omogoèa da lahko nakluèno brišemo in vnašamo nove kartice), nato v tabelo vpišemo novo kartico, novo kodo in nato postavimo status te zapisane kartice na 1.
Pri brisanju kartice brišemo le status katrice v tabeli iz 1 v 0.
(nazaj)
PIT (problemi in težave):
Najveè težav je povzroèal rele, ker je porabil preveè toka ob vklopu, zato se je mikrokontroler zelo nenavadno obnašal. Ker sva iskala napako v programu, je preteklo precej èasa do odkritja problema v napajanju. Rešitev je bil kondenzator na napajanju, ki je prispajkan blizu releja.

(nazaj)

PROGRAMSKA KODA:
    lab1.asm
    lab1.mot
 
 

Za vse dodatne informacije se obrnite na :
   borut.seljak@kiss.uni-lj.si