Näppäimistöt ovat laajalti käytettyjä syöttölaitteita, joita käytetään eri elektroniikassa ja sulautetuissa projekteissa. Niitä käytetään ottamaan syötteitä lukujen ja albabettien muodossa ja syöttämään ne järjestelmään jatkokäsittelyä varten. Tässä opetusohjelmassa aiomme liittää 4x4-matriisinäppäimistön 8051-mikrokontrolleriin.
4X4 Matrix -näppäimistö
Ennen kuin liitämme näppäimistön mikro-ohjaimeen, meidän on ensin ymmärrettävä, miten se toimii. Matrix-näppäimistö koostuu joukosta painikkeita, jotka on kytketty toisiinsa. Kuten tapauksessamme, käytämme 4X4-matriisinäppäimistöä, jossa on 4 painonappia kussakin neljässä rivissä. Ja painikkeiden liittimet on kytketty kaavion mukaisesti. Ensimmäisellä rivillä yksi liitäntä kaikista 4 painikkeesta on kytketty yhteen ja toinen 4 painikkeen painike edustaa kutakin 4 saraketta, sama pätee jokaiselle riville. Joten saamme 8 päätelaitetta yhteyden muodostamiseksi mikrokontrolleriin.
Liitäntäinen näppäimistö 8051-mikrokontrollerilla (AT89S52)
Ensin meidän on liitettävä LCD-moduuli näyttämään KEYPADin kautta syötettävät tiedot, joten käy läpi "LCD Interfacing with 8051 Microcontroller" -artikkeli ennen KEYPADin liittämistä.
Kuten yllä olevassa piirikaaviossa on esitetty, näppäimistön liittämiseksi meidän on kytkettävä näppäimistön 8 liitintä mihin tahansa mikro-ohjaimen porttiin (8 nastaa). Kuten olemme liittäneet näppäimistön päätteet porttiin 1 8051. Aina kun jotain painiketta painetaan, meidän on löydettävä painikkeen sijainti, mikä tarkoittaa vastaavaa RIVI saraketta nro. Kun olemme saaneet painikkeen sijainnin, voimme tulostaa merkin vastaavasti.
Nyt kysymys on, kuinka saada painetun painikkeen sijainti? Selitän tämän alla olevissa vaiheissa ja haluan myös, että tarkastelet koodia:
1. Ensin olemme tehneet kaikki rivit logiikkatasolle 0 ja kaikki sarakkeet logiikkatasolle 1.
2. Aina kun painamme kyseistä painiketta vastaavaa painiketta, sarake ja rivi oikosuljetaan ja tehdään vastaava sarake loogiselle tasolle 0. Koska kyseinen sarake kytketään (oikosulkuun) riviin, joka on logiikkatasolla 0. Saamme sarake nro. Katso pää () -toiminto.
3. Nyt meidän on löydettävä Rivi no., Joten olemme luoneet neljä kutakin saraketta vastaavaa toimintoa. Kuten jos jotain sarakkeen painiketta painetaan, kutsumme funktion row_finder1 () etsimään rivin nro.
4. Funktiossa row_finder1 () käännimme logiikkatasot päinvastaiseksi, eli nyt kaikki rivit ovat 1 ja sarakkeet 0. Nyt painetun painikkeen rivin tulisi olla 0, koska se on yhdistetty (oikosulussa) sarakkeeseen, jonka painiketta painetaan, ja kaikki sarakkeet ovat 0 logiikassa. Joten olemme skannanneet kaikki rivit 0: lle.
5. Joten aina kun löydämme rivin logiikalla 0, se tarkoittaa, että painettu painike on rivi. Joten nyt meillä on sarake nro (tuli vaiheessa 2) ja rivi nro, ja voimme tulostaa ei. painikkeesta lcd_data-funktiota.
Sama menettely noudattaa jokaista painikkeen painallusta, ja käytämme (1) -näppäintä jatkuvasti tarkistamaan, painetaanko painiketta.