- Kāpēc mums ir nepieciešama 4x4 tastatūra:
- Kā darbojas 4x4 Matrix tastatūra:
- Nepieciešamais materiāls:
- Ķēdes shēma:
- Programmēšanas skaidrojums:
Tastatūras ir plaši izmantotas ievades ierīces, ko izmanto dažādos elektronikas un iegultos projektos. Tos izmanto, lai ņemtu ievadi skaitļu un alfabētu veidā, un tos pašus ievada sistēmā tālākai apstrādei. Šajā apmācībā mēs saskarnēsim 4x4 matricas tastatūru ar PIC16F877A.
Pirms iedziļināties detaļu loģikā un uzzināt, kā izmantot tastatūru, mums būs jāzina dažas lietas.
Kāpēc mums ir nepieciešama 4x4 tastatūra:
Parasti digitālā signāla nolasīšanai, piemēram, slēdža ieejai, mēs izmantojam vienu mikrokontrolleru bloka I / O kontaktu. Dažās lietojumprogrammās, kur ievades vajadzībām nepieciešami 9, 12, 16 taustiņi, ja katru taustiņu pievienosim mikrokontrolleru portā, mēs izmantosim 16 I / O porti. Šie 16 I / O porti ir paredzēti ne tikai I / O signālu lasīšanai, bet tos var izmantot arī kā perifēros savienojumus, piemēram, ADC atbalsta, I2C, SPI savienojumus atbalsta arī šie I / O kontakti. Tā kā šīs tapas ir savienotas ar slēdžiem / taustiņiem, mēs tos nevaram izmantot, bet tikai kā I / O porti. Tam vispār nav jēgas. Tātad, kā samazināt tapu skaitu? Atbilde ir, izmantojot sešstūra tastatūru vai matricas tastatūru; mēs varam samazināt tapu skaitu, kas saista 4x4 matricas taustiņus. Tas izmantos 8 tapas, no kurām 4 savienotas rindās un 4 savienotas kolonnās, tādējādi ietaupot 8 mikrokontrollera tapas.
Kā darbojas 4x4 Matrix tastatūra:
Augšējā attēlā kreisajā pusē ir parādīts matricas tastatūras modulis. Labajā pusē ir parādīts iekšējais savienojums, kā arī porta savienojums. Ja mēs redzam portu, ir 8 tapas, vispirms 4 no kreisās uz labo ir X1, X2, X3 un X4 ir rindas, bet pēdējie 4 no kreisās uz labo ir Y1, Y2, Y3, Y4 ir četras kolonnas. Ja kā izvadi izveidosim 4 rindas vai X pusi un padarīsim tās loģiski zemas vai 0, un 4 kolonnas izveidosim kā ievades un lasīsim taustiņus, mēs nolasīsim slēdža nospiešanu, kad korespondents Y saņems 0.
Tas pats notiks nxn matricā, kur n ir skaitlis. Tas var būt 3x3, 6x6 utt.
Tagad tikai domājiet, ka 1 ir nospiests. Tad 1 atrodas X1 rindā un Y1 kolonnā. Ja X1 ir 0, tad Y1 būs 0. Tādā pašā veidā mēs varam nojaust katru taustiņu rindā X1, uztverot kolonnas Y1, Y2, Y3 un Y4. Šī lieta notiek katram slēdžam, un mēs nolasīsim slēdžu stāvokli matricā.
Katrs zaļais aplis ir slēdzis, un tie abi ir savienoti kopā vienādi.
Šajā apmācībā mēs saskarnēsim tastatūru ar šādām specifikācijām:
- Mēs izmantosim iekšējo pievilkšanos
- Mēs pievienosim atslēgu noņemšanas atslēgu
Bet, kad slēdži netiek nospiesti, mums Y1, Y2, Y3 un Y4 ir jāpadara tikpat augsts vai 1. Pretējā gadījumā mēs nevaram noteikt loģiskās izmaiņas, kad slēdzis tiek nospiests. Bet mēs nevarējām to izdarīt pēc kodiem vai programmas, jo šie tapas tiek izmantotas kā ievade, nevis izeja. Tātad, mikrokontrollerā mēs izmantosim iekšējo darbību reģistru un darbināsim šīs tapas kā vāju aktivizēto režīmu. Izmantojot to, būs loģiski augsts iespējošanas režīms, kad tas būs noklusējuma stāvoklī.
Arī tad, kad mēs nospiežam taustiņu, ar slēdža kontaktiem rodas smaili vai troksnis, un šī daudzkārtējā slēdža dēļ notiek nospiešana, kas nav gaidāma. Tātad, vispirms mēs noteiksim slēdža nospiešanu, pagaidīsim dažas milisekundes, vēlreiz pārbaudīsim, vai slēdzis joprojām ir nospiests vai nē, un, ja slēdzis joprojām ir nospiests, mēs pieņemsim slēdzi nospiediet, visbeidzot, citādi nē. To sauc par de-veselīgs slēdžiem.
Mēs to visu ieviesīsim savā kodā un izveidosim savienojumu uz maizes dēļa.
Pārbaudiet arī to, kā 4x4 tastatūru savienot ar citiem mikrokontrolleriem:
- Tastatūras mijiedarbība ar Arduino Uno
- 4x4 matricas tastatūras mijiedarbība ar 8051 mikrokontrolleru
- 4x4 tastatūras mijiedarbība ar mikrokontrolleru ATmega32
- Raspberry Pi digitālā koda atslēga uz maizes plātnes
Nepieciešamais materiāls:
- Maizes dēlis
- Pic-kit 3 un izstrādes vide datorā, ti, MPLABX
- Vadi un savienotāji
- Rakstzīmju LCD 16x2
- 20Mhz kristāls
- 2 gab 33pF keramikas diska vāciņš.
- 4.7k rezistors
- 10 k iepriekš iestatīts (maināms rezistors)
- 4x4 Matrix tastatūra
- 5 V adapteris
Ķēdes shēma:
Mēs savienosim kristālus un rezistoru saistītajās tapās. Mēs arī savienosim LCD 4 bitu režīmā visā PORTD. Mēs savienojām sešstūra tastatūru vai matricas tastatūru pāri portam RB4.
Ja esat PIC lietotājs, sāciet ar darba sākšanu ar PIC mikrokontrolleru: Ievads PIC un MPLABX
Programmēšanas skaidrojums:
Beigās ir norādīts pilnīgs kods Matrix Keypad saskarnei ar PIC mikrokontrolleru. Kods ir vienkāršs un pats par sevi saprotams. Tastatūras bibliotēka ir vienīgā lieta, kas jāsaprot kodā. Šeit mēs izmantojām keypad.h un lcd.h bibliotēka saskarne tastatūru un 16x2 LCD. Tātad ļauj redzēt, kas notiek iekšpusē.
Tastatūras tastatūras iekšpusē mēs redzēsim, ka esam izmantojuši xc.h galveni, kas ir noklusējuma reģistru bibliotēka, kristāla frekvence ir definēta izmantošanai kavad.c failā izmantotās kavēšanās lietošanai. Mēs definējām tastatūras portus PORTRB reģistrā un atsevišķus tapas definējām kā rindu (X) un kolonnas (Y).
Mēs arī izmantojām divas funkcijas, vienu tastatūras inicializēšanai, kas novirzīs portu kā izvadi un ievadi, un slēdža preses skenēšanu, kas atgriezīs slēdža nospiešanas statusu, kad to izsauks.
# iekļaut
Jo keypad.c mēs redzam, ka turpmāk funkcija atgriezīs taustiņa nospiešanas, kad tastatūra skeneris funkcija neatgriež 'n'.
char switch_press_scan (void) // Saņemt atslēgu no lietotāja { char key = 'n'; // Pieņemsim, ka neviens taustiņš nav nospiests, kamēr (taustiņš == 'n') // Pagaidiet, līdz tiek nospiests taustiņš taustiņš = tastatūras_skeneris (); // Skenējiet taustiņus atkal un atkal Return key; // nospiežot taustiņu, atgrieziet tā vērtību }
Zemāk ir tastatūras lasīšanas funkcija. Katrā solī mēs izveidosim rindu X1, X2, X3 un X4 kā 0 un nolasīsim Y1, Y2, Y3 un Y4 statusu. Aizkave tiek izmantota atlēciena efektam, kad slēdzis joprojām ir nospiests, mēs atgriezīsim ar to saistīto vērtību. Kad neviens slēdzis netiek nospiests, mēs atgriezīsimies 'n'.
char tastatūras_skeneris (anulēts) { X_1 = 0; X_2 = 1; X_3 = 1; X_4 = 1; ja (Y_1 == 0) {__delay_ms (100); kamēr (Y_1 == 0); atgriež “1”; } ja (Y_2 == 0) {__delay_ms (100); kamēr (Y_2 == 0); atgriež “2”; } ja (Y_3 == 0) {__delay_ms (100); kamēr (Y_3 == 0); atgriež “3”; } if (Y_4 == 0) {__delay_ms (100); kamēr (Y_4 == 0); atgriezt 'A'; } X_1 = 1; X_2 = 0; X_3 = 1; X_4 = 1; ja (Y_1 == 0) {__delay_ms (100); kamēr (Y_1 == 0); atgriež “4”; } ja (Y_2 == 0) {__delay_ms (100); kamēr (Y_2 == 0); atgriež “5”; } ja (Y_3 == 0) {__delay_ms (100); kamēr (Y_3 == 0); atgriež “6”; } if (Y_4 == 0) {__delay_ms (100); kamēr (Y_4 == 0); atgriešanās 'B'; } X_1 = 1; X_2 = 1; X_3 = 0; X_4 = 1; ja (Y_1 == 0) {__delay_ms (100); kamēr (Y_1 == 0); atgriež “7”; } ja (Y_2 == 0) {__delay_ms (100); kamēr (Y_2 == 0); atgriež “8”; } ja (Y_3 == 0) {__delay_ms (100); kamēr (Y_3 == 0); atgriešanās “9”; } if (Y_4 == 0) {__delay_ms (100); kamēr (Y_4 == 0); atgriešanās 'C'; } X_1 = 1; X_2 = 1; X_3 = 1; X_4 = 0; ja (Y_1 == 0) {__delay_ms (100); kamēr (Y_1 == 0); atgriešanās '*'; } ja (Y_2 == 0) {__delay_ms (100); kamēr (Y_2 == 0); atgriež “0”; } ja (Y_3 == 0) {__delay_ms (100); kamēr (Y_3 == 0); atgriezt '#'; } if (Y_4 == 0) {__delay_ms (100); kamēr (Y_4 == 0); atgriešanās 'D'; } atgriezt 'n'; }
Mēs arī iestatīsim vājo pievilkšanos pēdējos četros bitos, kā arī ostu virzienu kā pēdējo 4 ieeju un pirmos 4 kā izvadi. OPTION_REG & = 0x7F; tiek izmantots, lai iestatītu vāju uzvilkšanas režīmu pēdējiem tapām.
void InitKeypad (void) { Tastatūra_PORT = 0x00; // Iestatiet tastatūras porta PIN vērtību nulle Tastatūra_PORT_Direction = 0xF0; // Pēdējo 4 tapu ievade, pirmo 4 tapu izeja OPTION_REG & = 0x7F; }
Jo galvenais PIC programmu (zemāk), mēs vispirms iestatīt konfigurācijas bitiem un iekļauti daži Needed bibliotēkas. Pēc tam funkcijās void system_init mēs inicializējam tastatūru un LCD. Un visbeidzot uz galveno funkciju, mēs esam lasīt tastatūru, zvanot uz switch_press_scan () funkciju, un atgriešanās vērtību LCD.
Šeit lejupielādējiet pilnu kodu ar galvenes failiem un pārbaudiet zemāk redzamo demonstrācijas video.