Кожного разу, коли ми йдемо голосувати за вибори, ми приходимо бачити електронні машини для голосування. У цьому проекті ми збираємося спроектувати та розробити просту машину для голосування за допомогою мікроконтролера ATmega32A. Незважаючи на те, що ми можемо використовувати контролер для отримання більш ніж 32 людей, що голосують, для того, щоб все було простіше, ми збираємося створити систему голосування для чотирьох людей. У нас буде чотири кнопки для чотирьох людей, і кожен раз, коли натискається кнопка, Голос надходить за відповідну особу, а кількість голосів, яку отримує кожна людина, відображається на РК-дисплеї.
Потрібні компоненти
Обладнання:
ATMEGA32
Блок живлення (5 В)
ПРОГРАМИСТ AVR-ISP
JHD_162ALCD (РК-дисплей 16x2)
Конденсатор 100 нФ (п'ять штук), конденсатор 100 мкФ (підключений через джерело живлення)
кнопка (п'ять штук), Резистор 10 кОм (п’ять штук).
Програмне забезпечення:
Студія Atmel 6.1
прогісп або флеш-магія.
Принципова схема та робоче пояснення
Як показано у наведеній вище схемі електронного автомата для голосування, PORTA мікроконтролера ATMEGA32 підключена до порту даних 16x2 LCD. Тут слід пам’ятати про те, щоб вимкнути зв'язок JTAG у PORTC ATMEGA, змінивши байти запобіжників, якщо потрібно використовувати PORTC як звичайний порт зв'язку. У РК-дисплеї 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 uC
PIN13 або D6 - PA6 uC
PIN14 або D7 - PA7 uC
У схемі ви можете бачити, що ми використовували 8-бітовий зв'язок (D0-D7), однак це не є обов'язковим. Ми можемо використовувати 4-бітовий зв’язок (D4-D7), але програма з 4-бітовим зв’язком стає дещо складним, тому я щойно пішов із 8-розрядним зв’язком.
Отже, з простого спостереження за наведеною таблицею ми підключаємо 10 висновків РК-дисплея до контролера, в якому 8 висновків - це висновки для даних і 2 висновки для управління. Тут є п’ять кнопок, чотири - для збільшення голосів кандидатів, а п’ята - для скидання голосів кандидата до нуля.
Конденсатори, присутні тут, призначені для анулювання ефекту підстрибування кнопок. Якщо їх видалити, контролер може рахувати більше одного при кожному натисканні кнопки. Резистори, підключені для штифтів, призначені для обмеження струму, коли натискається кнопка, щоб опустити штифт на землю.
Кожного разу, коли натискається кнопка, відповідний штифт контролера опускається на землю, і, таким чином, контролер розпізнає, що натискається певна кнопка і здійснюються відповідні дії, це може бути збільшення голосів кандидатів або скидання голосів залежно від натиснутої кнопки.
Коли натискається кнопка, що представляє відповідну особу, контролер вибирає її та збільшує номер відповідної особи всередині своєї пам'яті після збільшення, на якій відображається оцінка відповідних осіб на РК-дисплеї 16x2.
Робота цієї електронної машини для голосування на базі мікроконтролера пояснюється поетапно кодом С нижче,