În acest tutorial vom interfața o tastatură 4x4 (16 taste) cu microcontroler ATMEGA32A. Știm că tastatura este unul dintre cele mai importante dispozitive de intrare utilizate în proiectele electronice. Tastatura este una dintre cele mai simple modalități de a da comenzi sau instrucțiuni unui sistem electronic.
Componente necesare
Hardware: ATMEGA32, sursă de alimentare (5v), PROGRAMATOR AVR-ISP, JHD_162ALCD (16 * 2LCD), condensator 100uF, condensator 100nF, rezistor 10KΩ (8 bucăți).
Software: Atmel studio 6.1 sau Atmel studio 6.2, progisp sau flash magic.
Diagrama circuitului și explicația de lucru
În circuitul PORTB al ATMEGA32 este conectat la portul de date LCD. Aici ar trebui să vă amintiți să dezactivați comunicarea JTAG în PORTC sau ATMEGA prin schimbarea octeților siguranței, dacă doriți să utilizați PORTC ca un port de comunicație normal. În ecranul LCD 16x2 există 16 pini peste tot dacă există o lumină din spate, dacă nu există lumină din spate vor exista 14 pini. Se poate alimenta sau lăsa pinii luminii din spate. Acum, în cele 14 pinii există 8 pini de date (7-14 sau D0-D7), 2 pini de alimentare (1 & 2 sau VSS & VDD sau gnd & + 5v), 3 rd pini pentru controlul contrastului (VEE-control cât de gros personajele ar trebui să fie afișat) și 3 pini de control (RS & RW & E).
În circuit, puteți observa că am luat doar doi pini de control, ceea ce oferă flexibilitatea, bitul de contrast și CITIREA / SCRIEREA nu sunt adesea folosite, astfel încât acestea pot fi scurtcircuitate la masă. Acest lucru pune LCD în cel mai mare contrast și modul de citire. Trebuie doar să controlăm ENABLE și pinii RS pentru a trimite caractere și date în consecință.
Conexiunile care se fac pentru LCD sunt date mai jos:
PIN1 sau VSS la masă
PIN2 sau VDD sau VCC la + 5v putere
PIN3 sau VEE la sol (oferă un contrast maxim optim pentru un începător)
PIN4 sau RS (Selectare înregistrare) la PD6 de uC
PIN5 sau RW (citire / scriere) la masă (pune LCD în modul de citire facilitează comunicarea pentru utilizator)
PIN6 sau E (Activare) la PD5 de uC
PIN7 sau D0 la PB0 de uC
PIN8 sau D1 la PB1 de uC
PIN9 sau D2 până la PB2 de uC
PIN10 sau D3 până la PB3 de uC
PIN11 sau D4 la PB4 de uC
PIN12 sau D5 până la PB5 de uC
PIN13 sau D6 la PB6 de uC
PIN14 sau D7to PB7 de uC
În circuit puteți vedea că am folosit comunicația pe 8 biți (D0-D7), totuși acest lucru nu este obligatoriu, putem folosi comunicația pe 4 biți (D4-D7), dar programul de comunicare pe 4 biți devine un pic complex. Deci, din simpla observare a tabelului de mai sus, conectăm 10 pini de LCD la controler în care 8 pini sunt pini de date și 2 pini pentru control.
Acum să vorbim despre tastatură, tastatura nu este altceva decât taste multiplexate. Butoanele sunt conectate într-o formă multiplexată pentru a reduce utilizarea pinului sistemului de control.
Luați în considerare că avem o tastatură 4x4, în această tastatură avem 16 butoane, în cazuri normale avem nevoie de 16 pini de controler pentru a interfața 16 butoane, dar acest lucru nu este bun din punct de vedere al sistemului de control. Această utilizare a pinului poate fi redusă prin conectarea butoanelor în formă multiplex.
De exemplu, considerăm că avem 16 butoane și dorim să-l atașăm la un controler pentru a forma o tastatură, aceste taste sunt aranjate așa cum se arată în figură:
Aceste butoane sunt conectate prin coloane comune așa cum se arată în figură:
Așa cum se arată în figură, capetele nemarcate ale fiecărui patru butoane sunt glisate până la capăt pentru a forma o coloană, astfel încât pentru 16 taste avem patru coloane.
Dacă uităm conexiunile coloanelor de mai sus și conectăm capetele comune marcate ale fiecărui patru butoane împreună pentru a forma un rând:
Așa cum se arată în figură, pentru 16 taste vom avea patru rânduri așa cum se arată în figură.
Acum, când sunt văzuți amândoi împreună, obținem ceva de genul circuitului de mai jos:
Aici am conectat 16 taste într-o formă multiplexată, astfel încât să reducem utilizarea pinului controlerului. În comparație cu primul caz de 16 taste conectate, aveam nevoie de 16 pini pe controler, dar acum, după multiplexare, avem nevoie de 8 pini de controler pentru a conecta 16 taste.
În mod normal, acest lucru este prezentat în interiorul unei tastaturi:
Așa cum se arată în figura de mai sus, există 16 taste în tastatura de mai sus și fiecare dintre aceste taste reprezintă un buton în configurația butoanelor multiplexate. Și, de asemenea, există conexiuni cu 8 pini, așa cum se arată în figura de mai sus, care simbolizează conexiunea multiplexată.
Acum pentru lucru:
Tastatura are aici patru coloane și patru rânduri, pentru identificarea butonului apăsat, vom folosi metoda de referință încrucișată. Aici mai întâi vom conecta toate coloanele sau toate rândurile la vcc, deci dacă rândurile sunt conectate la vcc comun, vom lua coloanele ca intrări la controler.
Acum, dacă butonul 1 este apăsat așa cum se arată în figură:
După aceea, un curent curge prin circuit așa cum se arată în figura de mai jos:
Deci avem C1 ridicat, pentru o apăsare de buton. În acest moment, vom schimba porturile de alimentare și de intrare, adică vom alimenta coloanele și vom lua rânduri ca intrări, Prin aceasta, va exista un flux de putere așa cum se arată în figura de mai jos:
Deci, pentru rând avem R1 ridicat.
De acum avem C1 ridicat în primul caz și R1 ridicat în al doilea caz, deci avem poziția matricială a butonului, de unde și numărul „unu”.
Dacă este apăsat al doilea buton, vom avea C1 ca coloană, dar logica înaltă pe care o obținem în coloana comună va fi „R2”. Deci vom avea C1 și R2, prin urmare vom avea poziția matricială a celui de-al doilea buton.
Așa vom scrie programul, vom conecta opt pini ai tastaturii la opt pini ai controlerului. Și pentru început alimentăm patru pini ai controlerului pentru alimentarea a patru rânduri de tastatură, în acest moment ceilalți patru pini sunt luați ca intrări. Când butonul este apăsat, pinul de coloană corespunzător este tras în sus și astfel pinul controlerului este tras în sus, acest lucru va fi recunoscut pentru a schimba intrarea în putere și puterea în intrare, deci vom avea rânduri ca intrări.
Prin aceasta primim butonul apăsat de utilizator. Această adresă matricială este direcționată către numărul corespunzător, iar acest număr este afișat pe ecranul LCD.
Funcționarea interfeței tastaturii cu microcontrolerul AVR este explicată pas cu pas în codul C dat mai jos. De asemenea, puteți verifica: interfața tastaturii cu microcontrolerul 8051.