Turvallisuus on tärkeä huolenaihe jokapäiväisessä elämässämme, ja digitaalisista lukoista on tullut tärkeä osa näitä turvajärjestelmiä. Paikkamme turvaamiseksi on saatavilla monen tyyppisiä tekniikoita, kuten PIR-pohjaiset turvajärjestelmät, RFID-pohjainen turvajärjestelmä, laser-turvahälytykset, biomatriisijärjestelmät jne. Jopa nyt on olemassa digitaalisia lukkoja, joita voidaan käyttää älypuhelimillamme, ei tarkoita enemmän tarvetta pitää eri avaimet, vain yksi älypuhelin voi käyttää kaikkia lukkoja, tämä konsepti perustuu esineiden internetiin.
Tässä projektissa olemme selittäneet yksinkertaisen elektronisen koodilukon 8051 Microcontorller -sovelluksella, joka voidaan avata vain ennalta määritetyllä koodilla, jos annamme väärän koodin, järjestelmä hälyttää sireenillä summerilla. Olemme jo luoneet digitaalisen lukon Arduinolla.
Työselitys:
Tämä järjestelmä sisältää pääasiassa AT89S52- mikrokontrollerin, näppäimistömoduulin, summerin ja LCD-näytön. At89s52-mikrokontrolleri ohjaa kaikkia prosesseja, kuten salasanan muotoisen näppäimistömoduulin ottamista, ennalta määritetyn salasanan vertailua, summerin ajamista ja lähetystilaa LCD-näytölle. Näppäimistöä käytetään salasanan lisäämiseen mikro-ohjaimeen. Summeriä käytetään väärän salasanan ilmaisemiseen ja nestekidenäyttöä tilan tai viestien näyttämiseen siinä. Summerilla on sisäänrakennettu ohjain käyttämällä NPN-transistoria.
Komponentit:
- 8051-mikrokontrolleri (AT89S52)
- 4X4-näppäimistömoduuli
- Summeri
- 16x2 LCD
- Vastus (1k, 10k)
- Vetovastus (10K)
- Kondensaattori (10uf)
- Punainen johti
- Leipälauta
- IC 7805
- 11,0592 MHz kristalli
- Virtalähde
- Johtojen liittäminen
Tulojen ottaminen 4X4-näppäimistömatriisista multipleksointitekniikalla:
Tässä piirissä olemme käyttäneet multipleksointitekniikkaa näppäimistön liittämiseen 8051-mikrokontrolleriin salasanan syöttämiseksi järjestelmään. Tässä käytämme 4x4-näppäimistöä, jossa on 16 näppäintä. Jos haluamme käyttää 16 avainta, tarvitsemme 16 nastaa yhteyden muodostamiseen 89s52: een, mutta multipleksointitekniikassa meidän on käytettävä vain 8 nastaa 16 avaimen liittämiseen. Joten se on älykäs tapa liittää näppäimistömoduuli.
Multipleksointitekniikka on erittäin tehokas tapa vähentää mikrokontrollerin kanssa käytettävien nastojen määrää syötteen tai salasanan antamiseksi. Pohjimmiltaan tätä tekniikkaa käytetään kahdella tavalla - yksi on riviskannaus ja toinen sarakeskannaus.
Tässä aiomme selittää riviskannauksen:
Ensin on määriteltävä 8-nastainen näppäimistömoduuli. Missä ensimmäiset 4 nastaa ovat saraketta ja viimeiset 4 nastaa ovat rivejä.
Riviskannausta varten meidän on annettava tietoja tai signaalia sarakkeen nastoille ja luettava kyseiset tiedot tai signaali rivinastasta. Oletetaan, että annamme alla olevat tiedot sarakkeen nastoille:
C1 = 0;
C2 = 1;
C3 = 1;
C4 = 1;
Ja luemme nämä tiedot rivinastoista (oletusarvoisesti rivinastat ovat KORKEAT ylösvetovastuksen takia).
Jos käyttäjä painaa näppäimen numeroa '1', R1 vaihtaa HIGH arvoksi LOW tarkoittaa R1 = 0; ja ohjain ymmärtää, että käyttäjä on painanut näppäintä '1'. Ja se tulostaa '1' nestekidenäytölle ja tallentaa '1' matriisiin. Joten tämä HIGH - LOW-muutos R1: ssä on tärkein asia, jolla ohjain ymmärtää, että jotakin saraketta 1 vastaavaa näppäintä on painettu.
Nyt kun käyttäjä painaa näppäimen numeroa 2, R1 pysyy HIGH-tasolla, kun C1 ja R1 ovat jo HIGH-arvoilla. Siksi muutosta ei tule, se tarkoittaa, että mikro-ohjain ymmärtää, että mitään ei ole painettu sarakkeessa yksi. Ja samoin tämä päämies pätee kaikkiin muihin nastoihin. Joten tässä vaiheessa ohjain odottaa vain sarakkeen 1 avaimia: '1', '4', '7' ja '*'.
Jos nyt haluamme seurata muiden sarakkeiden avaimia (kuten sarakkeessa 2), meidän on muutettava sarakkeiden nastojen tietoja:
C1 = 1;
C2 = 0;
C3 = 1;
C4 = 1;
Tämä aikaohjain odottaa avaimia vain sarakkeessa 2: '2', '5', '8' ja '0', koska muutos (HIGH - LOW) tapahtuu vain, kun sarakkeen kahta näppäintä painetaan. Jos painamme mitä tahansa näppäintä sarakkeessa 1, 3 tai 4, muutosta ei tapahdu, koska nämä sarakkeet ovat HIGH: ssä ja Rivit ovat jo HIGH: ssä.
Joten samoin sarakkeiden C3 ja C4 avaimia voidaan myös seurata tekemällä niistä 0 kerrallaan. Tarkista tästä yksityiskohtainen selitys: Näppäimistön liitäntä 8051: een. Käy läpi myös alla oleva Koodi-osio ymmärtääksesi logiikan oikein.
Piirin selitys:
Kytkentäkaavio tälle 8051-digitaalilukolle on esitetty alla ja se on helposti ymmärrettävä. Näppäimistömoduulin saraketapit on kytketty suoraan napoihin P0.0, P0.1, P0.2, P0.3 ja rivinastat on kytketty 89s52-mikrokontrolleriportin 0 P0.4, P0.5, P0.6, P0.7 16x2-nestekidenäyttö on kytketty 89s52-mikrokontrolleriin 4-bittisessä tilassa. Ohjaustapa RS, RW ja En on kytketty suoraan napoihin P1.0, GND ja P1.2. Ja datanapa D4-D7 on kytketty 89s52: n nastoihin P1.4, P1.5, P1.6 ja P1.7. Ja yksi summeri on kytketty nastaan P2.6 vastuksen kautta.
Ohjelman selitys:
Olemme käyttäneet ohjelmassa ennalta määritettyä salasanaa, jonka käyttäjä voi määrittää tämän salasanan alla olevalla koodilla. Kun käyttäjä syöttää salasanan järjestelmään, sitten järjestelmä vertaa käyttäjän syöttämää salasanaa ohjelmakoodiin tallennettuun tai ennalta määritettyyn salasanaan. Jos ottelu tapahtuu, nestekidenäytössä näkyy "Access Grated" ja jos salasana ei täsmää, LCD-näytössä näkyy "Access Denied" ja summeri piippaa jatkuvasti jonkin aikaa. Tässä olemme käyttäneet string.h-kirjastoa. Tämän kirjaston avulla voimme verrata tai sovittaa kahta merkkijonoa käyttämällä "strncmp" -toimintoa.
Ohjelmaan sisällytämme ensinnäkin otsikkotiedoston ja määrittelemme muuttuja-, tulo- ja lähtönastat näppäimistölle ja LCD: lle.
#sisältää
Yhden sekunnin viiveen luomiseksi on luotu toiminto, samoin kuin jotkut LCD-toiminnot, kuten nestekidenäytön alustaminen, merkkijonon tulostaminen, komennot jne. Löydät ne helposti koodista. Tarkista tässä artikkelissa LCD-liitännät 8051: n ja sen toimintojen kanssa.
Tämän jälkeen olemme alustaneet LCD-näytön ja sitten luemme näppäimistön syötteen näppäimistön () avulla ja tallennamme syöttönäppäimet taulukkoon ja verrataan sitä ennalta määritetyistä taulukotiedoista strncmp: n avulla.
void main () {summeri = 1; lcd_init (); lcdstring ("sähköinen koodi"); lcdcmd (0xc0); lcdstring ("Lukitusjärjestelmä"); viive (400); lcdcmd (1); lcdstring ("Piirin yhteenveto"); viive (400); kun (1) {i = 0; näppäimistö (); jos (strncmp (läpäisy, "4201", 4) == 0)
Jos syötetty salasana täsmää, hyväksytään () -toiminto kutsutaan:
void accept () {lcdcmd (1); lcdstring ("Tervetuloa"); lcdcmd (192); lcdstring ("Salasanan hyväksyminen"); viive (200); }
Ja jos salasana on väärä, kutsutaan väärä () -toiminto:
void väärä () {summeri = 0; lcdcmd (1); lcdstring ("Väärä salasana"); lcdcmd (192); lcdstring ("PLZ Yritä uudelleen"); viive (200); summeri = 1; }
Tarkista alla oleva näppäimistötoiminto koodista, joka lukee syöttölomakkeen näppäimistömoduulin.