Ori de câte ori mergem la vot pentru alegeri, venim să vedem aparate electronice de vot. În acest proiect vom proiecta și dezvolta o mașină de votare simplă utilizând microcontrolerul ATmega32A. Deși putem folosi controlerul pentru a obține mai mult de 32 de persoane aparat de votat, pentru a simplifica totul, vom face un sistem de votare pentru o dimensiune de patru persoane. Vom avea patru butoane pentru patru persoane și ori de câte ori este apăsat un buton, un votul merge pentru persoana corespunzătoare și numărul de voturi pe care fiecare persoană îl primește este afișat pe ecranul LCD.
Componente necesare
Hardware:
ATMEGA32
Alimentare (5v)
PROGRAMATOR AVR-ISP
JHD_162ALCD (LCD 16x2)
Condensator 100nF (cinci bucăți), condensator 100uF (conectat la sursa de alimentare)
buton (cinci piese), Rezistor de 10KΩ (cinci piese).
Software:
Atmel studio 6.1
progisp sau flash magic.
Diagrama circuitului și explicația de lucru
Așa cum se arată în circuitul mașinii de votare electronice de mai sus , PORTA a microcontrolerului ATMEGA32 este conectat la portul de date de 16x2 LCD. Aici ar trebui să vă amintiți să dezactivați comunicarea JTAG în PORTC din 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ă de fundal, dacă nu există lumină de fundal 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), 3 pini de control (RS & RW & E).
În circuit, puteți observa că am luat doar doi pini de control, deoarece acest lucru oferă flexibilitatea unei mai bune înțelegeri. Bitul de contrast și READ / WRITE nu sunt adesea folosite, astfel încât acestea pot fi scurtcircuitate la sol. 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 - masă
PIN2 sau VDD sau VCC - + 5v putere
PIN3 sau VEE - sol (oferă un contrast maxim optim pentru un începător)
PIN4 sau RS (Selecție înregistrare) - PD6 de uC
PIN5 sau RW (citire / scriere) - masă (pune LCD în modul de citire facilitează comunicarea pentru utilizator)
PIN6 sau E (Activare) - PD5 al uC
PIN7 sau D0 - PA0 de uC
PIN8 sau D1 - PA1 de uC
PIN9 sau D2 - PA2 de uC
PIN10 sau D3 - PA3 de uC
PIN11 sau D4 - PA4 de uC
PIN12 sau D5 - PA5 de uC
PIN13 sau D6 - PA6 de uC
PIN14 sau D7 - PA7 de uC
În circuit puteți vedea că am folosit comunicația pe 8 biți (D0-D7), însă aceasta nu este obligatorie. Putem folosi comunicația pe 4 biți (D4-D7), dar programul de comunicare pe 4 biți devine puțin complex, așa că am mers doar cu comunicarea pe 8 biți.
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. Există cinci butoane prezente aici, patru pentru creșterea voturilor candidaților și al cincilea este pentru resetarea voturilor candidatului la zero.
Condensatorii prezenți aici sunt pentru a anula efectul de săritură al butoanelor. Dacă sunt eliminate, controlerul poate conta mai mult de unul de fiecare dată când este apăsat butonul. Rezistențele conectate pentru pini sunt pentru limitarea curentului, atunci când butonul este apăsat pentru a trage în jos pinul la pământ.
Ori de câte ori este apăsat un buton, știftul corespunzător al controlerului este tras în jos și astfel controlerul recunoaște că este apăsat un anumit buton și acțiunea corespunzătoare care trebuie întreprinsă, poate crește voturile candidatului sau resetarea voturilor în funcție de butonul apăsat.
Când este apăsat butonul care reprezintă o persoană corespunzătoare, controlerul îl alege și mărește numărul de persoană corespunzător în memoria sa după incrementare afișează scorul persoanelor corespunzătoare pe afișajul LCD 16x2.
Funcționarea acestui aparat de vot electronic bazat pe microcontroler este explicată pas cu pas din codul C de mai jos,