Sempre que anem a votar per a les eleccions venim a veure màquines electròniques de vot. En aquest projecte dissenyarem i desenvoluparem una màquina de votació senzilla mitjançant el microcontrolador ATmega32A. Tot i que podem utilitzar el controlador per obtenir màquina de votar més de 32 persones, per simplificar-ho, farem un sistema de votació per a una mida de quatre persones. Disposarem de quatre botons per a quatre persones i sempre que es prem un botó, el vot correspon a la persona corresponent i el nombre de vots que cada persona es mostra a la pantalla LCD.
Components necessaris
Maquinari:
ATMEGA32
Font d'alimentació (5v)
PROGRAMADOR AVR-ISP
JHD_162ALCD (LCD de 16x2)
Condensador 100nF (cinc peces), condensador 100uF (connectat a través de la font d'alimentació)
botó (cinc peces), Resistència de 10KΩ (cinc peces).
Programari:
Atmel studio 6.1
progisp o màgia flash.
Diagrama de circuits i explicació de treball

Com es mostra al circuit anterior de la màquina de votació electrònica, el microcontrolador PORTA del ATMEGA32 està connectat al port de dades de 16x2 LCD. Aquí s'ha de recordar desactivar la comunicació JTAG a PORTC d'ATMEGA canviant els bytes del fusible, si es vol utilitzar el PORTC com a port de comunicació normal. A la pantalla LCD de 16x2, hi ha 16 pins sobre tot si hi ha llum de fons, si no hi ha llum de fons hi haurà 14 pins. Es pot alimentar o deixar els passadors de llum de fons. Ara als 14 pins hi ha 8 pins de dades (7-14 o D0-D7), 2 pins de font d'alimentació (1 i 2 o VSS i VDD o gnd & + 5v), 3r pin per controlar el contrast (VEE controla el gruix dels caràcters mostrat), 3 pins de control (RS & RW & E).
Al circuit, podeu observar que només he pres dos pins de control, ja que donen la flexibilitat d’una millor comprensió. El bit de contrast i READ / WRITE no s’utilitzen sovint, de manera que es poden reduir a terra. D’aquesta manera, la pantalla LCD té un contrast i un mode de lectura més alts. Només hem de controlar els pins ENABLE i RS per enviar caràcters i dades en conseqüència.
Les connexions que es fan per a LCD es donen a continuació:
PIN1 o VSS: terra
PIN2 o VDD o VCC - + 5v d'alimentació
PIN3 o VEE: terra (proporciona el màxim contrast possible per a principiants)
PIN4 o RS (Selecció de registre) - PD6 de uC
PIN5 o RW (lectura / escriptura): terra (posa la pantalla LCD en mode lectura facilita la comunicació per a l'usuari)
PIN6 o E (Habilita): PD5 d'UC
PIN7 o D0 - PA0 de uC
PIN8 o D1 - PA1 de uC
PIN9 o D2 - PA2 de uC
PIN10 o D3 - PA3 de uC
PIN11 o D4 - PA4 de uC
PIN12 o D5 - PA5 de uC
PIN13 o D6 - PA6 de uC
PIN14 o D7-- PA7 de uC
Al circuit podeu veure que hem utilitzat la comunicació de 8 bits (D0-D7), però això no és obligatori. Podem utilitzar la comunicació de 4 bits (D4-D7), però amb un programa de comunicació de 4 bits es torna una mica complex, així que acabo d’anar amb la comunicació de 8 bits.
Per tant, a partir de la simple observació de la taula anterior, estem connectant 10 pins de LCD al controlador en què 8 pins són pins de dades i 2 pins per al control. Aquí hi ha cinc botons, quatre per incrementar els vots dels candidats i el cinquè per restablir els vots del candidat a zero.
Els condensadors presents aquí serveixen per anul·lar l’efecte de rebot dels botons. Si s'eliminen, el controlador pot comptar-ne més d'un cada vegada que es prem el botó. Les resistències connectades per als pins serveixen per limitar el corrent quan es prem el botó per tirar el pin cap a terra.
Sempre que es prem un botó, el pin corresponent del controlador s’estira cap a terra i, per tant, el controlador reconeix que es prem cert botó i s’ha d’efectuar l’acció corresponent, pot ser incrementar els vots dels candidats o restablir els vots en funció del botó premut.
Quan es prem el botó que representa una persona corresponent, el controlador el tria i augmenta el número de persona corresponent a la memòria després que l’increment mostri la puntuació de les persones corresponents a la pantalla LCD de 16x2.
El funcionament d'aquesta màquina de vot electrònic basada en microcontroladors s'explica pas a pas del codi C que es mostra a continuació,
