Винаги, когато отидем да гласуваме за избори, идваме да видим електронни машини за гласуване. В този проект ще проектираме и разработим проста машина за гласуване с помощта на ATmega32A микроконтролер. Въпреки че можем да използваме контролера, за да получим повече от 32 души машина за гласуване, за да улесним всичко, ще направим система за гласуване за размер от четирима души. Ще имаме четири бутона за четирима души и всеки път, когато бъде натиснат бутон, гласът отива за съответния човек и броят гласове, които всеки човек получава, се показва на LCD.
Необходими компоненти
Хардуер:
ATMEGA32
Захранване (5v)
AVR-ISP ПРОГРАМАТОР
JHD_162ALCD (16x2 LCD)
100nF кондензатор (пет парчета), 100uF кондензатор (свързан през захранване)
бутон (пет парчета), 10KΩ резистор (пет броя).
Софтуер:
Atmel studio 6.1
прогисп или флаш магия.
Електрическа схема и работно обяснение
Както е показано в горната схема на електронната машина за гласуване, PORTA на микроконтролера ATMEGA32 е свързан към порта за данни на 16x2 LCD. Тук трябва да запомните да деактивирате комуникацията JTAG в PORTC на ATMEGA, като промените байтовете на предпазителите, ако искате да използвате PORTC като нормален комуникационен порт. В 16x2 LCD има 16 щифта, ако има задно осветление, ако няма задно осветление, ще има 14 извода. Човек може да захранва или да оставя щифтове за задно осветяване. Сега в 14-те извода има 8 извода за данни (7-14 или D0-D7), 2 извода за захранване (1 & 2 или VSS & VDD или gnd & + 5v), 3 -ти извод за контрол на контраста (VEE - контролира колко дебели трябва да бъдат символите показан), 3 контролни щифта (RS & RW & E).
Във веригата можете да забележите, че съм взел само два контролни щифта, тъй като това дава гъвкавост на по-добро разбиране. Контрастният бит и READ / WRITE не се използват често, така че могат да бъдат късо заземени. Това поставя LCD в най-висок контраст и режим на четене. Просто трябва да контролираме ENABLE и RS щифтовете, за да изпращаме символи и данни по съответния начин.
Връзките, които се правят за LCD са дадени по-долу:
PIN1 или VSS - земя
PIN2 или VDD или VCC - + 5v мощност
PIN3 или VEE - земя (дава максимален контраст най-добър за начинаещи)
PIN4 или RS (Избор на регистър) - PD6 на uC
PIN5 или RW (четене / запис) - земя (поставя LCD в режим на четене улеснява комуникацията за потребителя)
PIN6 или E (Активиране) - PD5 на uC
PIN7 или D0 - PA0 на uC
PIN8 или D1 - PA1 на uC
PIN9 или D2 - PA2 на uC
PIN10 или D3 - PA3 на uC
PIN11 или D4 - PA4 на uC
PIN12 или D5 - PA5 от uC
PIN13 или D6 - PA6 на uC
PIN14 или D7 - PA7 от uC
Във веригата можете да видите, че сме използвали 8-битова комуникация (D0-D7), но това не е задължително. Можем да използваме 4-битова комуникация (D4-D7), но с 4-битова програма за комуникация става малко сложна, така че току-що отидох с 8-битова комуникация.
Така че само от наблюдение на горната таблица ние свързваме 10 щифта LCD към контролер, в който 8 щифта са щифтове за данни и 2 щифта за управление. Тук има пет бутона, четири за увеличаване на гласовете на кандидатите и пети за нулиране на гласовете на кандидата.
Кондензаторите, присъстващи тук, са за обезсилване на подскачащия ефект на бутоните. Ако бъдат премахнати, контролерът може да брои повече от един при всяко натискане на бутона. Резисторите, свързани за щифтове, са за ограничаване на тока, когато бутонът е натиснат, за да издърпате щифта на земята.
Всеки път, когато се натисне бутон, съответният щифт на контролера се издърпва на земята и по този начин контролерът разпознава, че е натиснат определен бутон и съответното действие, което трябва да се предприеме, може да бъде увеличаване на гласовете кандидат или нулиране на гласовете в зависимост от натиснатия бутон.
Когато се натисне бутонът, представляващ съответно лице, контролерът го избира и увеличава съответния номер на човек в паметта си, след като увеличава, показва резултата на съответните лица на LCD дисплея 16x2.
Работата на тази електронна машина за гласуване, базирана на микроконтролер, е обяснена в стъпка по стъпка от C код долу,