Obsluha maticové klávesnice

Programování klávesnice

Klávesnici si můžete zakoupit v různém provedení – vždy je to ale určitý počet řádků a určitý počet sloupců. Každý sloupec nebo řádek se musí ovládat jedním bitem, takže pro náš 8 bitový port můžeme ovládat maximálně 4 x 4 znaků.

Klávesnice, na které si vysvětlíme princip programu, má 3 sloupce a 4 řádky – každý sloupec a každý řádek je připojen na jeden pin portu. Vycházíme ze zadaného schématu.

 

Obr. 1: Schéma maticové klávesnice

Dle hardwarového zapojení vidíme, že je nutno postupně poslat na jednotlivé sloupce 0 a pak programem testovat řádek po řádku, jestli se tato nula nedostala na pin příslušného řádku. Při zmáčknutí klávesy se propojí sloupec s řádkem.

Na pinu 10 je napájení Ucc, na pinu 1 je zem.

Zkusíme nejdříve program, kde po zmáčknutí klávesy 1 (na portu P1) se zobrazí na sedmisegmentovce (na portu P3) číslo 1 a po 100 ms zhasne.

                    ZAC:               MOV P1,#11011111b          

; inicializace levého sloupce(na sloupec, kde je ; klávesa 1 pošleme „0“)

                   SKOK:             JB P1.3, SKOK                  

; test zmáčknutí klávesy -po zmáčknutí dochází ke ; zkratu – přenesení 0

                                           MOV P3, #11111001b        

; je - li kláv 1 zmáčknuta, dojde k zobrazení čísla

                                           CALL MS100                     ; čas rozsvícení 100 ms

                                           MOV P3, #11111111b        ; zhasnutí všech segmentů

                                          JMP ZAC                           ; znovu čekej na zmáčknutí

Nová je instrukce JB bit, hop - tato instrukce testuje, na co je nastaven daný bit. Pokud je roven „1“, skáče na návěstí hop, pokud je roven „0“, jde dál a provede se další instrukce. Opakem je instrukce JNB.

Pro lepší pochopení si vybereme 3 klávesy v různých sloupcích a zadání by mohlo vypadat třeba takto:

Po zmáčknutí klav 1 se zobrazí číslo 1, po zmáčknutí klav 5 se zobrazí číslo 5, po zmáčknutí kláv 9 se zobrazí číslo 9.

Všechny 3 klávesy jsou umístěny v rozdílných sloupcích, proto musíme každý sloupec nejdřív inicializovat – tedy pošleme na něho 0 a na ostatní piny jedničky.

Program může být řešen třeba takto:

                   ZAC:               MOV P1,#11011111b      

; inicializace levého sloupce (na; sloupec klav 1 pošleme „0“)

                                         JB P1.3,KL5                    

; test zmáčknutí klávesy - po zmáčknutí; zkrat – přenesení 0

                                         MOV P3,#11111001b       ; při zmáčknutí klav 1 se zobrazí č 1

                    KL5:              MOV P1,#10111111b        

; zapnutí prostředního sloupce –; posíláme „0“ na bit P1.6

                                         JB P1.2,KL9                     ; test, jestli se nula nedostala na P1.2

                                         MOV P3,#10010010b        

; pokud byla zmáčknuta klav 5, zobrazí ; se číslo 5 na P3

                     KL9:             MOV P1,#01111111b        

; zapnutí pravého sloupce – posíláme ; „0“ na bit P1.7

                                         JB P1.1,ZAC                    ; test, jestli se nula nedostala na P1.1

                                         MOV P3,#10010000b        

; při zmáčknutí klav 9, zobrazí se číslo 9 na ; portu P3

                                         JMP ZAC                          

; program nezapomeň správně zacyklit

Lehce si můžete dodělat zobrazení znaků po zmáčknutí všech kláves.

Na stejném programu si můžeme ukázat jednoduchou kombinaci klávesnice zvuk. Necháme v akci stejné klávesy, jen po jejich zmáčknutí se nebudou zobrazovat znaky, ale na portu P3 bude připojen reproduktor a budou se z něho ozývat různé tóny.

Pro přehlednost budou tóny vyřešeny podprogramy.

    ZAC:            MOV P1,#11011111b                                ; inicializace levého sloupce

                        JB P1.3,KL5                                             ; test zmáčknutí klávesy

                        CALL ZVUK1                                            

; je-li kláv 1 dojde k vygenerování tónu 1

    KL5:           MOV P1,#10111111b                                ; zapnutí prostředního sloupce

                       JB P1.2,KL9                                             ; test, jestli se nula nedostala na P1.2

                       CALL ZVUK2                                            ; klav5, dojde k vygenerování tónu 2

    KL9:           MOV P1,#01111111b                                ; zapnutí prostředního sloupce

                      JB P1.1,ZAC                                            ; test, jestli se nula nedostala na P1.1

                      CALL ZVUK3                                           ; při zmáčknutí klav9, tón 3

                      JMP ZAC                                                 ; program správně zacyklit

Tímto jednoduchým způsobem si můžete vytvořit malý zvukový klavír. Každá klávesa bude vydávat jiný tón.

Zdroje
  • VESELÁ, Zuzana. Mikroprocesorová technika. Interní skriptum, VOŠ a SPŠE Olomouc. 2013

Obrázky​:

  • Obr. 1: Archiv autora
Doplňující učivo

Vyzkoušej program s jednou klávesou, například pomocí DIP spínače.