V vseh naštetih primerih sta matrična tipkovnica in Bascom-8051 idealna za uporabo. Tipkovnici pravimo matrična tipkovnica zato, ker so tipke razporejene v matriko, kar vidimo na sliki 1.
Na sliki 1 vidimo vezavo tipkovnice z 12 tipkami, razporejenih v matrico 3×4. Obstajajo tudi 4×4 matrične tipkovnice, o čemer bo še govora v nadaljevanju. Na sliki 1 vidimo, da vsako tipko definirata dve koordinati, številka vrstice in številak stolpca. Tako se npr. tipke T1, T4, T7 in T10 (ustrezajo karakterjem 1, 4, 7 in *) nahajajo v prvem (levem) stolpcu, tipke T1, T2 in T3 (ustrezajo karakterjem 1, 2 in 3) pa se nahajajo v prvi (zgornji) vrstici. Vse tipke oziroma vsa stikala so odprta oziroma niso sklenjena, dokler nobena tipka ni pritisnjena. Ko pritisnemo tipko, sklenemo stikalo in mikrokontroler prepozna, katero tipko smo pritisnili.
Opis Bascom programa za prepoznavanje 3×4 tipkovnice
Pri programiranju nismo izumljali tople vode. Na domači strani proizvajalca Bascom programskih jezikov je veliko že narejenih primerov programov, med njimi tudi program za 3×4 tipkovnico. Spletno stran najdete na: http://www.mcselec.com/applicat.htm. Program je napisal g. Mike Gill, mi smo ga malce predelali glede na svoje zahteve. Na sliki 2 je prikazan diagram poteka programa.
Na začetku programa najprej definiramo V/I vrata, na katera je spojena tipkovnica. V našem primeru je tipkovnica vezana tako, da so kolone tipkovnice vezane tako, kot je prikazano v izseku programa:
Kolona1 Alias P2.5 ' Definicija kolon
Kolona2 Alias P2.4
Kolona3 Alias P2.3 ' Dodaj se eno kolono za 4x4 tipkovnico
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
In seveda so stoplci vezani takole:
Stolp1 Alias P2.2 ' Definicija stolpcev
Stolp2 Alias P2.1
Stolp3 Alias P2.0
Stolp4 Alias P2.6
Lepota programiranja se izkaže, če želimo menjati vezavo posameznih kolon ali stolpcev tipkovnice, v primeru da nam tako narekuje naša električna vezava vezja. V tem primeru samo zamenjamo nastavitve V/I vrat v omenjenih izsekih in v glavnem bo to vse. No, namenoma sem napisal “v glavnem”, zato ker je potrebno še eno malenkost spremeniti. Kaj je še potrebno zamenjati, si preberite pri opisu subrutine Sprejeta_t. Nadaljujemo z opisom glavnega programa. Za definicijo tipk sledi del programa, kjer postavljamo kolone v tipkovnici eno za drugo na logično »0« in s tem preverjamo, ali je pritisnjena katera izmed tipk. Najprej postavimo na nič spremenljivko Kolona1, nato Kolona2 in končno Kolona3.
Kolona1 = 0 : Kolona2 = 1 : Kolona3 = 1 ' Postavljamo kolone na nic
Vrednost_t = 1 : Debounce Stolp1 , 0 , Sprejeta_t , Sub ' Gremo v subrutino,
ce je tipka pritisnjena
Vrednost_t = 4 : Debounce Stolp2 , 0 , Sprejeta_t , Sub
Vrednost_t = 7 : Debounce Stolp3 , 0 , Sprejeta_t , Sub
Vrednost_t = 11 : Debounce Stolp4 , 0 , Sprejeta_t , Sub ' Tipka *
Ko je na 0 postavljena Kolona1, lahko beremo tipke 1, 4, 7 in *. V našem programu smo postavili vrednost spremenljivke Vrednost_t = 11 zato, da lahko “spoznamo”, kdaj je pritisnjena tipka *. Kot že vemo iz prejšnjih primerov, z Debounce ukazom zaznavamo pritisnjenost tipke oziroma v našem primeru posameznega stolpca. V kolikor je bila recimo pritisnjena tipka “1”, potem bomo izvajali ukaz:
Vrednost_t = 1 : Debounce Stolp1 , 0 , Sprejeta_t , Sub