Knappsatser används ofta för inmatningsenheter som används i olika elektronik- och inbäddade projekt. De används för att ta insignaler i form av siffror och albhabeter och matar in samma i systemet för vidare bearbetning. I denna handledning ska vi gränssnitt en 4x4 matris tangentbord med 8051 mikrokontroller.
Matrittangentbord 4X4
Innan vi gränssnitt knappsatsen med mikrokontroller, först måste vi förstå hur det fungerar. Matrisens knappsats består av en uppsättning tryckknappar som är sammankopplade. Som i vårt fall använder vi 4X4 matris tangentbord, där det finns 4 tryckknappar i var och en av fyra rader. Och polerna på tryckknapparna är anslutna enligt diagrammet. På första raden är en terminal av alla de 4 tryckknapparna anslutna och en annan terminal med 4 tryckknappar representerar var och en av fyra kolumner, samma sak gäller för varje rad. Så vi får 8 terminaler för att ansluta till en mikrokontroller.
Gränssnitts knappsats med 8051 mikrokontroller (AT89S52)
Först måste vi ansluta en LCD-modul för att visa de data som kommer att matas genom KEYPAD, så gå igenom artikeln "LCD-gränssnitt med 8051 Microcontroller" innan du gränssnitt KEYPAD.
Som visas i kretsschemat ovan, för att koppla in knappsatsen, måste vi ansluta 8 terminaler på knappsatsen till valfri port (8 stift) på mikrokontrollern. Som om vi har anslutit tangentbordsterminaler till port 1 av 8051. När någon knapp trycks in måste vi få plats för knappen, betyder motsvarande RAD ett KOLONN-nr. När vi väl har fått plats för knappen kan vi skriva ut karaktären därefter.
Nu är frågan hur man får platsen för den tryckta knappen? Jag kommer att förklara detta i nedanstående steg och vill också att du ska titta på koden:
1. Först har vi gjort alla rader till logiknivå 0 och alla kolumner till logiknivå 1.
2. När vi trycker på en knapp blir kolumn och rad som motsvarar den knappen kortsluten och gör motsvarande kolumn till logisk nivå 0. Eftersom den kolumnen kopplas (kortsluten) till raden, som ligger på logisk nivå 0. Så vi får kolumn nr. Se huvudfunktionen ().
3. Nu måste vi hitta radnummer, så vi har skapat fyra funktioner som motsvarar varje kolumn. Som om någon knapp i kolumn en trycks ned ringer vi till funktionen row_finder1 () för att hitta radnr.
4. I funktionen row_finder1 () vände vi logiska nivåer, betyder att alla rader är 1 och kolumner är 0. Nu ska raden med den tryckta knappen vara 0 eftersom den har blivit ansluten (kortsluten) till den kolumn vars knapp trycks in och alla kolumner har 0 logik. Så vi har skannat alla rader för 0.
5. Så när vi hittar raden vid logik 0, betyder det att det är raden med tryckte knappen. Så nu har vi kolumn nr (kom i steg 2) och rad nr, och vi kan skriva ut nr. av den knappen med lcd_data-funktionen.
Samma procedur följer för varje knapptryckning, och vi använder medan (1) för att kontinuerligt kontrollera om knappen trycks ned eller inte.