Hver gang vi går for at stemme på valg, kommer vi til at se elektroniske valgmaskiner. I dette projekt skal vi designe og udvikle en simpel stemmemaskine ved hjælp af ATmega32A mikrokontroller. Selvom vi kan bruge controlleren til at få mere end 32 personer til at stemme, vil vi for at holde alting simpelt lave et stemmesystem til en størrelse på fire personer. Vi har fire knapper til fire personer, og når der trykkes på en knap, en afstemning gælder for den tilsvarende person, og antallet af stemmer, hver person får vist på LCD.
Komponenter, der kræves
Hardware:
ATMEGA32
Strømforsyning (5v)
AVR-ISP-PROGRAMMERER
JHD_162ALCD (16x2 LCD)
100nF kondensator (fem stykker), 100uF kondensator (forbundet via strømforsyning)
knap (fem stykker), 10KΩ modstand (fem stykker).
Software:
Atmel studio 6.1
progisp eller flash magi.
Kredsløbsdiagram og arbejdsforklaring
Som vist i ovennævnte elektroniske stemmemaskinkredsløb er PORTA på ATMEGA32-mikrocontroller forbundet til dataporten på 16x2 LCD. Her skal man huske at deaktivere JTAG-kommunikationen i PORTC i ATMEGA ved at ændre sikringsbyte, hvis man vil bruge PORTC som en normal kommunikationsport. I 16x2 LCD er der overalt 16 ben, hvis der er baggrundslys, hvis der ikke er noget baggrundslys, vil der være 14 ben. Man kan tænde eller lade bagbelysningsstifterne stå. Nu i de 14 stifter er der 8 data stifter (7-14 eller D0-D7), 2 Strømforsyning stifter (1 & 2 eller VSS & VDD eller gnd & + 5V), 3 rd pin for kontraststyring (VEE-styringer, hvor tyk tegnene bør være vist), 3 kontrolben (RS & RW & E).
I kredsløbet kan du se, at jeg kun har taget to kontrolben, da dette giver fleksibiliteten til bedre forståelse. Kontrastbit og LÆS / SKRIV bruges ikke ofte, så de kan kortsluttes til jorden. Dette sætter LCD i højeste kontrast og læsetilstand. Vi skal bare kontrollere ENABLE og RS-ben for at sende tegn og data i overensstemmelse hermed.
Forbindelserne, der foretages for LCD, er angivet nedenfor:
PIN1 eller VSS - jord
PIN2 eller VDD eller VCC - + 5v strøm
PIN3 eller VEE - jord (giver maksimal kontrast bedst for en nybegynder)
PIN4 eller RS (Registreringsvalg) - PD6 for uC
PIN5 eller RW (læse / skrive) - jord (sætter LCD i læsefunktion letter kommunikationen for brugeren)
PIN6 eller E (Enable) - PD5 for uC
PIN7 eller D0 - PA0 for uC
PIN8 eller D1 - PA1 af uC
PIN9 eller D2 - PA2 af uC
PIN10 eller D3 - PA3 af uC
PIN11 eller D4 - PA4 af uC
PIN12 eller D5 - PA5 af uC
PIN13 eller D6 - PA6 af uC
PIN14 eller D7-- PA7 af uC
I kredsløbet kan du se, at vi har brugt 8bit kommunikation (D0-D7), men dette er ikke obligatorisk. Vi kan bruge 4-bit kommunikation (D4-D7), men med 4-bit kommunikation bliver programmet lidt komplekst, så jeg gik bare med 8 bit kommunikation.
Så fra blot observation af ovenstående tabel forbinder vi 10 ben på LCD til controller, hvor 8 ben er datapinde og 2 ben til kontrol. Der er fem knapper til stede her, fire til forøgelse af kandidaternes stemmer og femte er for at nulstille kandidatens stemmer til nul.
De kondensatorer, der er til stede her, er til at annullere knappernes hoppende effekt. Hvis de fjernes, tæller controlleren muligvis mere end en hver gang der trykkes på knappen. Modstandene, der er forbundet til stifter, er til at begrænse strømmen, når der trykkes på knappen for at trække stiften ned til jorden.
Hver gang der trykkes på en knap, trækkes den tilsvarende kontrolpind ned til jorden, og dermed genkender controlleren, at der trykkes på en bestemt knap, og den tilsvarende handling, der skal udføres, kan det øge kandidatstemmerne eller nulstille stemmer afhængigt af, hvilken knap der trykkes ned.
Når der trykkes på knappen, der repræsenterer en tilsvarende person, vælger controlleren den og forøger det tilsvarende personnummer i hukommelsen efter forøgelse, den viser de tilsvarende personers score på 16x2 LCD-displayet.
Arbejdet med denne mikrocontroller-baserede elektroniske stemmemaskine forklares trin for trin i C-koden nedenunder,