Tastaturer er mye brukt inngangsenheter som brukes i forskjellige elektronikk- og innebygde prosjekter. De brukes til å ta innganger i form av tall og albhabeter, og mate det samme inn i systemet for videre behandling. I denne opplæringen skal vi grensesnitt et 4x4 matrisetastatur med 8051 mikrokontroller.
4X4 matrisetastatur
Før vi kobler tastaturet til mikrokontroller, må vi først forstå hvordan det fungerer. Matrisetastaturet består av sett med trykknapper som er sammenkoblet. Som i vårt tilfelle bruker vi 4X4 matrisetastatur, der det er 4 trykknapper i hver av fire rader. Og terminalene til trykknappene er koblet i henhold til diagrammet. I første rad er en terminal av alle de 4 trykknappene koblet sammen, og en annen terminal med 4 trykknapper representerer hver av 4 kolonner, det samme gjelder for hver rad. Så vi får 8 terminaler for å koble til en mikrokontroller.
Grensesnitt tastatur med 8051 mikrokontroller (AT89S52)
Først må vi grensesnitt en LCD-modul for å vise dataene som vil mates gjennom KEYPAD, så gå gjennom "LCD-grensesnitt med 8051 Microcontroller" -artikkelen før du grensesnitt KEYPAD.
Som vist i kretsskjemaet ovenfor, for å koble til tastaturet, må vi koble 8 terminaler på tastaturet til hvilken som helst port (8 pinner) på mikrokontrolleren. Som om vi har koblet tastaturterminalene til port 1 av 8051. Hver gang du trykker på en knapp, må vi få plassering av knappen, betyr tilsvarende RAD et KOLONN-nr. Når vi har fått plassering av knappen, kan vi skrive ut tegnet tilsvarende.
Nå er spørsmålet hvordan du får plassering av den trykkte knappen? Jeg skal forklare dette i trinnene nedenfor, og vil også at du skal se på koden:
1. Først har vi laget alle radene til logikknivå 0 og alle kolonnene til logikknivå 1.
2. Hver gang vi trykker på en knapp, blir kolonne og rad som tilsvarer den knappen kortsluttet og gjør den tilsvarende kolonnen til logisk nivå 0. Fordi den kolonnen blir koblet (kortsluttet) til raden, som er på Logisk nivå 0. Så vi får kolonne nr. Se hovedfunksjonen ().
3. Nå må vi finne radnr., Så vi har opprettet fire funksjoner som tilsvarer hver kolonne. Som om det trykkes på en knapp i kolonne en, kaller vi funksjonen row_finder1 () for å finne radnr.
4. I funksjonen row_finder1 () snudde vi logiske nivåer, betyr at nå er alle radene 1 og kolonnene er 0. Nå skal rad på den trykkte knappen være 0 fordi den har blitt koblet (kortsluttet) til kolonnen hvis knapp trykkes, og alle kolonnene har 0 logikk. Så vi har skannet alle rader for 0.
5. Så når vi finner raden ved logikk 0, betyr det at det er raden med trykk på knappen. Så nå har vi kolonne nr (kom i trinn 2) og rad nr., Og vi kan skrive ut nr. av den knappen ved hjelp av lcd_data-funksjonen.
Samme prosedyre følger for hvert knappetrykk, og vi bruker mens (1) for kontinuerlig å sjekke om knappen trykkes inn eller ikke.