Närhelst vi går för att rösta för val kommer vi att se elektroniska röstmaskiner. I det här projektet ska vi utforma och utveckla en enkel röstmaskin med hjälp av ATmega32A mikrokontroller. Även om vi kan använda styrenheten för att få mer än 32 personer röstmaskin, för att hålla allt enkelt kommer vi att göra ett röstningssystem för en storlek på fyra personer. Vi kommer att ha fyra knappar för fyra personer och närhelst en knapp trycks in, en röst gäller för motsvarande person och antalet röster varje person visas på LCD.
Komponenter krävs
Hårdvara:
ATMEGA32
Strömförsörjning (5v)
AVR-ISP-PROGRAMMERARE
JHD_162ALCD (16x2 LCD)
100nF kondensator (fem delar), 100uF kondensator (ansluten över strömförsörjningen)
knapp (fem delar), 10KΩ motstånd (fem delar).
Programvara:
Atmel studio 6.1
progisp eller flash magi.
Kretsschema och arbetsförklaring
Som visas i ovanstående elektroniska röstmaskinkrets är PORTA på ATMEGA32 mikrokontroller ansluten till dataporten på 16x2 LCD. Här bör man komma ihåg att inaktivera JTAG-kommunikationen i PORTC i ATMEGA genom att ändra säkringsbyten, om man vill använda PORTC som en normal kommunikationsport. I 16x2 LCD finns det 16 stift överallt om det finns en bakgrundsbelysning, om det inte finns något bakgrundsbelysning kommer det att finnas 14 stift. Man kan driva eller lämna bakljuset. Nu i de 14 stiften finns 8 datastift (7-14 eller D0-D7), 2 effektmatningsstiften (1 & 2 eller VSS & VDD eller GND & + 5v), 3 : e stift för kontrastreglering (VEE-styr hur tjock tecknen bör vara visas), 3 kontrollstift (RS & RW & E).
I kretsen kan du observera att jag bara har tagit två kontrollstift eftersom det ger flexibiliteten för bättre förståelse. Kontrastbiten och LÄS / SKRIV inte ofta så att de kan kortslutas till marken. Detta sätter LCD i högsta kontrast och läsläge. Vi behöver bara kontrollera ENABLE- och RS-stift för att skicka tecken och data i enlighet därmed.
De anslutningar som görs för LCD ges nedan:
PIN1 eller VSS - mark
PIN2 eller VDD eller VCC - + 5v ström
PIN3 eller VEE - mark (ger maximal kontrast bäst för en nybörjare)
PIN4 eller RS (Registrera val) - PD6 för uC
PIN5 eller RW (läs / skriv) - mark (sätter LCD i läsläge underlättar kommunikationen för användaren)
PIN6 eller E (Aktivera) - PD5 för uC
PIN7 eller D0 - PA0 för uC
PIN8 eller D1 - PA1 för uC
PIN9 eller D2 - PA2 för uC
PIN10 eller D3 - PA3 för uC
PIN11 eller D4 - PA4 för uC
PIN12 eller D5 - PA5 för uC
PIN13 eller D6 - PA6 för uC
PIN14 eller D7-- PA7 för uC
I kretsen kan du se att vi har använt 8-bitars kommunikation (D0-D7) men detta är inte obligatoriskt. Vi kan använda 4-bitars kommunikation (D4-D7) men med 4-bitars kommunikation blir programmet lite komplext så jag gick bara med 8-bitars kommunikation.
Så från enbart observationen av ovanstående tabell ansluter vi 10 stift LCD till styrenheten där 8 stift är datapinnar och 2 stift för kontroll. Det finns fem knappar här, fyra för att öka kandidaternas röster och femte för att återställa kandidatens röster till noll.
Kondensatorerna som finns här är till för att upphäva knapparnas studsande effekt. Om de tas bort kan styrenheten räkna mer än en varje gång du trycker på knappen. Motstånden som är anslutna för stift är för att begränsa strömmen när du trycker på knappen för att dra ner stiften till marken.
Närhelst en knapp trycks ned, dras motsvarande stift av styrenhet ner till marken och därmed känner styrenheten igen att viss knapp trycks in och motsvarande åtgärder som ska vidtas, kan det öka inkandidatrösterna eller återställa rösterna beroende på vilken knapp som trycks ned.
När du trycker på knappen som representerar en motsvarande person, väljer styrenheten den och ökar motsvarande personnummer i sitt minne efter inkrementet, det visar motsvarande personers poäng på 16x2 LCD-skärmen.
Den bearbetning av denna mikrokontroller baserad elektronisk röstning maskin förklaras i steg för steg av C-kod ner nedan,