Sempre que vamos votar nas eleições, vemos urnas eletrônicas. Neste projeto iremos projetar e desenvolver uma máquina de votação simples utilizando o microcontrolador ATmega32A. Embora possamos usar o controlador para obter mais de 32 pessoas na máquina de votação, para manter tudo simples, vamos fazer um sistema de votação para quatro pessoas. Teremos quatro botões para quatro pessoas e sempre que um botão for pressionado, um o voto vai para a pessoa correspondente e o número de votos que cada pessoa recebe é mostrado no LCD.
Componentes necessários
Hardware:
ATMEGA32
Fonte de alimentação (5v)
PROGRAMADOR AVR-ISP
JHD_162ALCD (LCD 16x2)
Capacitor 100nF (cinco peças), capacitor 100uF (conectado à fonte de alimentação)
botão (cinco peças), Resistência de 10KΩ (cinco peças).
Programas:
Atmel studio 6.1
progisp ou magia flash.
Diagrama de circuito e explicação de trabalho
Conforme mostrado no circuito da máquina de votação eletrônica acima , o microcontrolador PORTA do ATMEGA32 está conectado à porta de dados do LCD 16x2. Aqui deve-se lembrar de desabilitar a comunicação JTAG no PORTC do ATMEGA alterando os bytes do fusível, caso se queira usar o PORTC como porta de comunicação normal. No LCD 16x2, existem 16 pinos ao todo, se houver uma luz de fundo, se não houver luz de fundo, haverá 14 pinos. Pode-se ligar ou deixar os pinos da luz de fundo. Agora, nos 14 pinos, há 8 pinos de dados (7-14 ou D0-D7), 2 pinos de fonte de alimentação (1 e 2 ou VSS e VDD ou gnd e + 5v), 3º pino para controle de contraste (VEE-controla a espessura dos caracteres mostrado), 3 pinos de controle (RS & RW e E).
No circuito, você pode observar que tirei apenas dois pinos de controle, pois isso dá a flexibilidade de um melhor entendimento. O bit de contraste e READ / WRITE não são usados com frequência, portanto, podem entrar em curto com o aterramento. Isso coloca o LCD em maior contraste e modo de leitura. Precisamos apenas controlar os pinos ENABLE e RS para enviar caracteres e dados de acordo.
As conexões que são feitas para LCD são fornecidas abaixo:
PIN1 ou VSS - terra
PIN2 ou VDD ou VCC - alimentação de + 5v
PIN3 ou VEE - aterrado (oferece contraste máximo, melhor para um iniciante)
PIN4 ou RS (Seleção de Registro) - PD6 de uC
PIN5 ou RW (Leitura / Escrita) - terra (coloca o LCD em modo de leitura facilita a comunicação para o usuário)
PIN6 ou E (Ativar) - PD5 de uC
PIN7 ou D0 - PA0 de uC
PIN8 ou D1 - PA1 de uC
PIN9 ou D2 - PA2 de uC
PIN10 ou D3 - PA3 de uC
PIN11 ou D4 - PA4 de uC
PIN12 ou D5 - PA5 de uC
PIN13 ou D6 - PA6 de uC
PIN14 ou D7-- PA7 de uC
No circuito você pode ver que usamos comunicação de 8 bits (D0-D7) porém não é obrigatório. Podemos usar comunicação de 4 bits (D4-D7), mas o programa de comunicação de 4 bits torna-se um pouco complexo, então optei pela comunicação de 8 bits.
Portanto, pela mera observação da tabela acima, estamos conectando 10 pinos do LCD ao controlador, em que 8 pinos são pinos de dados e 2 pinos para controle. Há cinco botões presentes aqui, quatro para incrementar os votos dos candidatos e o quinto para zerar os votos dos candidatos.
Os capacitores presentes aqui são para anular o efeito de salto dos botões. Se forem removidos, o controlador poderá contar mais de um cada vez que o botão for pressionado. Os resistores conectados por pinos são para limitar a corrente, quando o botão é pressionado para puxar o pino para o solo.
Sempre que um botão é pressionado, o pino correspondente do controlador é puxado para baixo e, assim, o controlador reconhece que determinado botão foi pressionado e a ação correspondente a ser executada, pode ser incrementar os votos dos candidatos ou redefinir os votos dependendo do botão pressionado.
Quando o botão que representa uma pessoa correspondente é pressionado, o controlador o seleciona e incrementa o número da pessoa correspondente dentro de sua memória após o incremento, ele mostra a pontuação da pessoa correspondente no visor LCD 16x2.
O funcionamento desta máquina de votação eletrônica baseada em microcontrolador é explicado passo a passo do código C abaixo,