Elke keer als we gaan stemmen voor verkiezingen, komen we elektronische stemmachines tegen. In dit project gaan we een eenvoudige stemmachine ontwerpen en ontwikkelen met behulp van ATmega32A microcontroller. Hoewel we de controller kunnen gebruiken om meer dan 32 mensen stemmachine te krijgen, gaan we om alles eenvoudig te houden een stemsysteem maken voor een grootte van vier personen. We zullen vier knoppen hebben voor vier personen en telkens wanneer een knop wordt ingedrukt, een stem geldt voor de corresponderende persoon en het aantal stemmen dat elke persoon krijgt op het LCD-scherm.
Componenten vereist
Hardware:
ATMEGA32
Stroomvoorziening (5v)
AVR-ISP PROGRAMMER
JHD_162ALCD (16x2 LCD)
100nF condensator (vijf stuks), 100uF condensator (aangesloten over voeding)
knoop (vijf stuks), 10KΩ weerstand (vijf stuks).
Software:
Atmel studio 6.1
progisp of flash magie.
Schakelschema en werkuitleg
Zoals te zien is in het bovenstaande elektronische stemmachinecircuit, is PORTA van de ATMEGA32-microcontroller verbonden met de datapoort van 16x2 LCD. Hier moet men onthouden om de JTAG-communicatie in PORTC van ATMEGA uit te schakelen door de zekeringbytes te wijzigen, als men de PORTC als een normale communicatiepoort wil gebruiken. In een 16x2 LCD-scherm zijn er in totaal 16 pinnen als er een achtergrondverlichting is, als er geen achtergrondverlichting is, zijn er 14 pinnen. Men kan de achterlichtpinnen van stroom voorzien of laten. Nu in de 14 pennen zijn er 8 datapennen (7-14 of D0-D7), 2 voedingspennen (1 & 2 of VSS en VDD en GND en + 5 V), 3 rd pin voor contrastregeling (VEE-bepaalt hoe dik de tekens moet afgebeeld), 3 controlepennen (RS & RW & E).
In het circuit kun je zien dat ik maar twee controlepennen heb genomen, omdat dit de flexibiliteit van een beter begrip geeft. Het contrastbit en READ / WRITE worden niet vaak gebruikt, zodat ze kunnen worden kortgesloten naar aarde. Dit plaatst LCD in het hoogste contrast en leesmodus. We hoeven alleen de ENABLE- en RS-pinnen te bedienen om tekens en gegevens dienovereenkomstig te verzenden.
De aansluitingen die zijn gemaakt voor LCD worden hieronder gegeven:
PIN1 of VSS - aarde
PIN2 of VDD of VCC - + 5v vermogen
PIN3 of VEE - ground (geeft maximaal contrast het beste voor een beginner)
PIN4 of RS (registerselectie) - PD6 van uC
PIN5 of RW (lezen / schrijven) - aarde (zet LCD in leesmodus om de communicatie voor de gebruiker te vergemakkelijken)
PIN6 of E (inschakelen) - PD5 van uC
PIN7 of D0 - PA0 van uC
PIN8 of D1 - PA1 van uC
PIN9 of D2 - PA2 van uC
PIN10 of D3 - PA3 van uC
PIN11 of D4 - PA4 van uC
PIN12 of D5 - PA5 van uC
PIN13 of D6 - PA6 van uC
PIN14 of D7-- PA7 van uC
In het circuit kun je zien dat we 8bit-communicatie hebben gebruikt (D0-D7), maar dit is niet verplicht. We kunnen 4-bits communicatie gebruiken (D4-D7) maar met 4-bits communicatie wordt het programma een beetje ingewikkeld, dus ik ging gewoon met 8-bits communicatie.
Dus door alleen de bovenstaande tabel te observeren, verbinden we 10 pinnen van het LCD-scherm met de controller waarin 8 pinnen datapinnen zijn en 2 pinnen voor controle. Er zijn hier vijf knoppen aanwezig, vier voor het verhogen van de stemmen van kandidaten en de vijfde voor het resetten van de stemmen van de kandidaat naar nul.
De condensatoren die hier aanwezig zijn, dienen om het stuiterende effect van knoppen teniet te doen. Als ze worden verwijderd, telt de controller mogelijk meer dan één keer elke keer dat de knop wordt ingedrukt. De weerstanden die voor pinnen zijn aangesloten, zijn bedoeld om de stroom te beperken, wanneer de knop wordt ingedrukt om de pin naar de grond te trekken.
Telkens wanneer een knop wordt ingedrukt, wordt de corresponderende pin van de controller naar de grond getrokken en dus herkent de controller dat een bepaalde knop wordt ingedrukt en de bijbehorende actie die moet worden ondernomen, het kan het verhogen van de kandidaatstemmen of het resetten van stemmen zijn, afhankelijk van de ingedrukte knop.
Wanneer de knop die een corresponderende persoon vertegenwoordigt, wordt ingedrukt, kiest de controller deze en verhoogt het corresponderende persoonsnummer in zijn geheugen. Na verhoging toont het de corresponderende persoonsscore op het 16x2 LCD-scherm.
De werking van deze op microcontroller gebaseerde elektronische stemmachine wordt hieronder in de C-code stap voor stap uitgelegd,