Каждый раз, когда мы идем голосовать на выборах, мы видим электронные машины для голосования. В этом проекте мы собираемся спроектировать и разработать простую машину для голосования с использованием микроконтроллера ATmega32A. Хотя мы можем использовать контроллер, чтобы получить машину для голосования более 32 человек, для простоты мы собираемся сделать систему голосования для четырех человек. У нас будет четыре кнопки для четырех человек, и всякий раз, когда нажимается кнопка, Голосование идет за соответствующего человека, и количество голосов, поданных каждым человеком, отображается на ЖК-дисплее.
Необходимые компоненты
Оборудование:
ATMEGA32
Источник питания (5В)
ПРОГРАММИРОВАНИЕ AVR-ISP
JHD_162ALCD (ЖК-дисплей 16x2)
Конденсатор 100 нФ (пять штук), конденсатор 100 мкФ (подключен к источнику питания)
пуговица (пять штук), Резистор 10КОм (пять штук).
Программного обеспечения:
Атмель Студия 6.1
прогисп или флеш-магия.
Принципиальная схема и объяснение работы
Как показано на приведенной выше схеме электронного устройства для голосования, ПОРТА микроконтроллера ATMEGA32 подключается к порту данных ЖК-дисплея 16x2. Здесь следует не забыть отключить связь JTAG в PORTC ATMEGA, изменив байты предохранителя, если кто-то хочет использовать PORTC в качестве обычного порта связи. В LCD 16x2 всего 16 контактов, если есть подсветка, если нет подсветки, будет 14 контактов. Можно включить или оставить контакты подсветки. Теперь в 14 контактах 8 контактов данных (7-14 или D0-D7), 2 контакта источника питания (1 и 2 или VSS и VDD или gnd & + 5v), 3- й контакт для контроля контрастности (VEE-контролирует толщину символов. показано), 3 управляющих контакта (RS, RW и E).
В схеме вы можете заметить, что я взял только два управляющих контакта, поскольку это дает гибкость для лучшего понимания. Бит контраста и READ / WRITE используются нечасто, поэтому их можно замкнуть на массу. Это переводит ЖК-дисплей в режим максимальной контрастности и чтения. Нам просто нужно управлять контактами ENABLE и RS, чтобы отправлять символы и данные соответственно.
Подключения, которые выполняются для ЖК-дисплея, приведены ниже:
PIN1 или VSS - земля
PIN2 или VDD или VCC - питание +5 В
PIN3 или VEE - земля (дает максимальный контраст лучше всего для новичков)
PIN4 или RS (выбор регистра) - PD6 uC
PIN5 или RW (чтение / запись) - земля (переводит ЖК-дисплей в режим чтения, упрощает коммуникацию для пользователя)
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 мкК
PIN13 или D6 - PA6 uC
PIN14 или D7 - PA7 мкК
В схеме вы можете видеть, что мы использовали 8-битную связь (D0-D7), но это не обязательно. Мы можем использовать 4-битную связь (D4-D7), но с 4-битной коммуникационной программой становится немного сложнее, поэтому я просто выбрал 8-битную связь.
Итак, просто наблюдая за таблицей выше, мы подключаем 10 контактов ЖК-дисплея к контроллеру, из которых 8 контактов являются контактами данных и 2 контакта для управления. Здесь присутствует пять кнопок, четыре для увеличения голосов кандидатов и пятая для обнуления голосов кандидата.
Конденсаторы, представленные здесь, предназначены для того, чтобы нейтрализовать эффект отскока кнопок. Если их удалить, контроллер может считать больше одного при каждом нажатии кнопки. Резисторы, подключенные к контактам, предназначены для ограничения тока, когда кнопка нажата, чтобы опустить контакт к земле.
Всякий раз, когда нажимается кнопка, соответствующий вывод контроллера опускается на землю, и, таким образом, контроллер распознает, что определенная кнопка нажата и соответствующее действие должно быть предпринято, он может увеличивать количество голосов кандидатов или сбрасывать голоса в зависимости от нажатой кнопки.
Когда кнопка, представляющая соответствующего человека, нажата, контроллер выбирает ее и увеличивает соответствующий номер человека в своей памяти, после того, как приращение показывает соответствующий счет людей на ЖК-дисплее 16x2.
Работа этого электронного устройства для голосования на базе микроконтроллера объясняется шаг за шагом кода C ниже,