Hver gang vi går for å stemme på valg, kommer vi til å se elektroniske stemmeutstyr. I dette prosjektet skal vi designe og utvikle en enkel stemmemaskin ved å bruke ATmega32A mikrokontroller. Selv om vi kan bruke kontrolleren til å få mer enn 32 personer til å stemme, for å holde alt enkelt, skal vi lage et stemmesystem for en størrelse på fire personer. Vi vil ha fire knapper for fire personer, og når en knapp trykkes på, en stemmer stemmer for den tilsvarende personen og antall stemmer hver person blir vist på LCD.
Komponenter kreves
Maskinvare:
ATMEGA32
Strømforsyning (5v)
AVR-ISP-PROGRAMMERER
JHD_162ALCD (16x2 LCD)
100nF kondensator (fem deler), 100uF kondensator (tilkoblet strømforsyning)
knapp (fem stykker), 10KΩ motstand (fem stykker).
Programvare:
Atmel studio 6.1
progisp eller flash magi.
Kretsdiagram og arbeidsforklaring
Som vist i den elektroniske kretsen for elektronisk stemmeapparat, er PORTA på ATMEGA32 mikrokontroller koblet til dataporten på 16x2 LCD. Her bør man huske å deaktivere JTAG-kommunikasjonen i PORTC til ATMEGA ved å endre sikringsbyte, hvis man vil bruke PORTC som en vanlig kommunikasjonsport. I 16x2 LCD er det 16 pinner overalt hvis det er baklys, hvis det ikke er noe bakgrunnslys, vil det være 14 pinner. Man kan drive eller la baklysetappene ligge. Nå i de 14 pinnene er det 8 datapinner (7-14 eller D0-D7), 2 strømforsyningspinner (1 & 2 eller VSS & VDD eller GND & + 5V), 3. pinne for kontrastkontroll (VEE-styrer hvor tykke tegnene skal være vist), 3 kontrollpinner (RS & RW & E).
I kretsen kan du observere at jeg bare har tatt to kontrollpinner, da dette gir fleksibiliteten til bedre forståelse. Kontrastbiten og LES / SKRIV brukes ikke ofte slik at de kan kortsluttes til bakken. Dette setter LCD i høyest kontrast og lesemodus. Vi trenger bare å kontrollere ENABLE- og RS-pinner for å sende tegn og data tilsvarende.
Tilkoblingene som gjøres for LCD er gitt nedenfor:
PIN1 eller VSS - bakken
PIN2 eller VDD eller VCC - + 5v strøm
PIN3 eller VEE - bakken (gir maksimal kontrast best for en nybegynner)
PIN4 eller RS (Register Selection) - PD6 for uC
PIN5 eller RW (lese / skrive) - bakken (setter LCD i lesemodus forenkler kommunikasjonen for brukeren)
PIN6 eller E (Enable) - PD5 for uC
PIN7 eller D0 - PA0 av uC
PIN8 eller D1 - PA1 av uC
PIN9 eller D2 - PA2 av uC
PIN10 eller D3 - PA3 av uC
PIN11 eller D4 - PA4 av uC
PIN12 eller D5 - PA5 av uC
PIN13 eller D6 - PA6 av uC
PIN14 eller D7-- PA7 av uC
I kretsen kan du se at vi har brukt 8bit kommunikasjon (D0-D7), men dette er ikke obligatorisk. Vi kan bruke 4-biters kommunikasjon (D4-D7), men med 4-bits kommunikasjonsprogram blir det litt komplekst, så jeg gikk bare med 8-bits kommunikasjon.
Så fra bare observasjon av tabellen ovenfor kobler vi 10 pins LCD til kontrolleren der 8 pins er datapinner og 2 pins for kontroll. Det er fem knapper til stede her, fire for å øke kandidatenes stemmer og den femte for å tilbakestille kandidatens stemmer til null.
Kondensatorene som er tilstede her, er for å oppheve den hoppende effekten av knapper. Hvis de fjernes, kan kontrolleren telle mer enn én hver gang du trykker på knappen. Motstandene som er koblet til pinner, er for å begrense strømmen når du trykker på knappen for å trekke ned pinnen til bakken.
Hver gang du trykker på en knapp, blir den korresponderende kontrollpinnen trukket ned til bakken, og dermed gjenkjenner kontrolleren at det trykkes på en bestemt knapp og tilsvarende tiltak som skal utføres, det kan være å øke kandidatstemmene eller tilbakestille stemmer avhengig av hvilken knapp du trykker på.
Når du trykker på knappen som representerer en tilsvarende person, velger kontrolleren den og øker det tilsvarende personnummeret i minnet etter trinn, det viser de tilsvarende personene på 16x2 LCD-skjermen.
Arbeidet til denne mikrocontrollerbaserte elektroniske stemmemaskinen forklares trinn for trinn av C-koden nedenfor,