Tipkovnice su široko korišteni ulazni uređaji koji se koriste u raznim elektroničkim i ugrađenim projektima. Koriste se za unos podataka u obliku brojeva i albabeta i isti unose u sustav za daljnju obradu. U ovom uputstvu sučelit ćemo 4x4 matričnu tipkovnicu s 8051 mikrokontrolerom.
4X4 matrična tipkovnica
Prije nego što tipkovnicu povežemo s mikrokontrolerom, prvo moramo shvatiti kako to radi. Matrična tipkovnica sastoji se od skupa tipki koje su međusobno povezane. Kao i u našem slučaju, koristimo matričnu tipkovnicu 4X4, u kojoj su 4 tipke u svakom od četiri reda. I terminali tipki povezani su prema dijagramu. U prvom redu jedan terminal svih 4 tipke povezan je zajedno, a drugi terminal od 4 tipke predstavljaju svaki od 4 stupca, isto vrijedi i za svaki redak. Tako dobivamo 8 terminala za povezivanje s mikrokontrolerom.

Tipkovnica za povezivanje s mikrokontrolerom 8051 (AT89S52)

Prvo moramo povezati LCD modul za prikaz podataka koji će se unositi putem KEYPAD-a, zato prije pridruživanja KEYPAD-a prođite kroz članak "Interface LCD-a s mikrokontrolerom 8051".
Kao što je prikazano na gornjoj shemi sklopa, za sučelje tipkovnice moramo povezati 8 terminala tipkovnice na bilo koji priključak (8 pinova) mikrokontrolera. Kao što smo spojili terminale tipkovnice na priključak 1 od 8051. Kad god pritisnemo bilo koji gumb, moramo dobiti mjesto gumba, što znači odgovarajući RED i STUPAC br. Jednom kada dobijemo mjesto gumba, prema tome možemo ispisati znak.
Sad je pitanje kako dobiti mjesto pritisnutog gumba? Objasnit ću vam to u donjim koracima, a također želim da pogledate kod:
1. Prvo smo napravili sve retke do razine logike 0, a sve stupce do razine logike 1.
2. Kad god pritisnemo gumb, stupac i redak koji odgovaraju tom gumbu se kratko spoje i pretvore odgovarajući stupac u logičku razinu 0. Budući da taj stupac postaje povezan (skraćen) s retkom koji je na razini logike 0. Tako dobivamo stupac br. Pogledajte glavnu () funkciju.

3. Sada moramo pronaći redak br., Pa smo stvorili četiri funkcije koje odgovaraju svakom stupcu. Kao da se pritisne bilo koji gumb prvog stupca, pozivamo funkciju row_finder1 (), kako bismo pronašli redak br.
4. U funkciji row_finder1 () preokrenuli smo logičke razine, što znači da su sada svi retci 1, a stupci 0. Sada bi red pritisnutog gumba trebao biti 0 jer je povezan (skraćen) sa stupcem čiji je gumb pritisnut, a svi stupci imaju logiku 0. Dakle, skenirali smo sve retke za 0.

5. Dakle, kad god pronađemo Red na logici 0, znači da je to red pritisnutog gumba. Dakle, sada imamo stupac br (dobiven u koraku 2) i redak br., A možemo ispisati br. tog gumba pomoću funkcije lcd_data.
Isti postupak slijedi za svako pritiskanje gumba, a mi koristimo while (1) da neprestano provjeravamo je li gumb pritisnut ili ne.
