Bất cứ khi nào chúng ta đi bỏ phiếu bầu cử, chúng ta đều đến xem các máy bỏ phiếu điện tử. Trong dự án này, chúng tôi sẽ thiết kế và phát triển một máy bỏ phiếu đơn giản bằng cách sử dụng vi điều khiển ATmega32A. Mặc dù chúng tôi có thể sử dụng bộ điều khiển để có được hơn 32 máy bỏ phiếu, nhưng để giữ mọi thứ đơn giản, chúng tôi sẽ tạo ra một hệ thống bỏ phiếu cho quy mô bốn người. Chúng tôi sẽ có bốn nút cho bốn người và bất cứ khi nào nhấn một nút, một phiếu bầu cho người tương ứng và số phiếu bầu của mỗi người được hiển thị trên màn hình LCD.
Thành phần bắt buộc
Phần cứng:
ATMEGA32
Nguồn điện (5v)
TRÌNH LẬP TRÌNH AVR-ISP
JHD_162ALCD (LCD 16x2)
Tụ điện 100nF (năm cái), tụ điện 100uF (kết nối qua nguồn điện)
nút (năm miếng), Điện trở 10KΩ (năm miếng).
Phần mềm:
Atmel studio 6.1
progisp hoặc phép thuật chớp nhoáng.
Sơ đồ mạch và giải thích hoạt động
Như trong mạch máy biểu quyết điện tử trên , PORTA của vi điều khiển ATMEGA32 được kết nối với cổng dữ liệu của LCD 16x2. Ở đây người ta nên nhớ vô hiệu hóa giao tiếp JTAG trong PORTC của ATMEGA bằng cách thay đổi các byte cầu chì, nếu người ta muốn sử dụng PORTC như một cổng giao tiếp thông thường. Trong LCD 16x2, có 16 chân trên tất cả nếu có đèn nền, nếu không có đèn nền sẽ có 14 chân. Người ta có thể cấp nguồn hoặc để lại các chân đèn sau. Bây giờ trong 14 chân có 8 dữ liệu ghim (7-14 hoặc D0-D7), 2 chân cung cấp điện (1 & 2 hoặc VSS & VDD hoặc GND & + 5V), 3 thứ pin cho điều khiển độ tương phản (VEE-điều khiển như thế nào dày các nhân vật nên được hiển thị), 3 chân điều khiển (RS & RW & E).
Trong mạch, bạn có thể quan sát rằng tôi chỉ lấy hai chân điều khiển vì điều này mang lại sự linh hoạt để hiểu rõ hơn. Bit tương phản và READ / WRITE không thường xuyên được sử dụng để chúng có thể được nối đất. Điều này đặt LCD ở chế độ đọc và độ tương phản cao nhất. Chúng ta chỉ cần điều khiển các chân ENABLE và RS để gửi các ký tự và dữ liệu cho phù hợp.
Các kết nối được thực hiện cho LCD được đưa ra dưới đây:
PIN1 hoặc VSS - mặt đất
PIN2 hoặc VDD hoặc VCC - nguồn + 5v
PIN3 hoặc VEE - mặt đất (mang lại độ tương phản tối đa tốt nhất cho người mới bắt đầu)
PIN4 hoặc RS (Lựa chọn đăng ký) - PD6 của uC
PIN5 hoặc RW (Đọc / Ghi) - nối đất (đặt màn hình LCD ở chế độ đọc giúp giảm bớt giao tiếp cho người dùng)
PIN6 hoặc E (Bật) - PD5 của uC
PIN7 hoặc D0 - PA0 của uC
PIN8 hoặc D1 - PA1 của uC
PIN9 hoặc D2 - PA2 của uC
PIN10 hoặc D3 - PA3 của uC
PIN11 hoặc D4 - PA4 của uC
PIN12 hoặc D5 - PA5 của uC
PIN13 hoặc D6 - PA6 của uC
PIN14 hoặc D7-- PA7 của uC
Trong mạch bạn có thể thấy chúng tôi đã sử dụng giao tiếp 8bit (D0-D7) tuy nhiên đây không phải là điều bắt buộc. Chúng ta có thể sử dụng giao tiếp 4 bit (D4-D7) nhưng với 4 bit chương trình giao tiếp trở nên phức tạp một chút vì vậy tôi chỉ sử dụng giao tiếp 8 bit.
Vì vậy, từ quan sát bảng trên, chúng ta đang kết nối 10 chân của LCD với bộ điều khiển trong đó 8 chân là chân dữ liệu và 2 chân để điều khiển. Có năm nút hiện diện ở đây, bốn nút để tăng số phiếu bầu của các ứng cử viên và nút thứ năm là để đặt lại số phiếu bầu của ứng viên về 0.
Các tụ điện hiện diện ở đây là để vô hiệu hóa hiệu ứng nảy của các nút. Nếu chúng bị loại bỏ, bộ điều khiển có thể đếm nhiều hơn một mỗi lần nhấn nút. Các điện trở được kết nối cho các chân là để hạn chế dòng điện, khi nhấn nút để kéo chân cắm xuống đất.
Bất cứ khi nào một nút được nhấn, chốt tương ứng của bộ điều khiển sẽ được kéo xuống đất và do đó bộ điều khiển nhận ra rằng một số nút nhất định được nhấn và hành động tương ứng sẽ được thực hiện, nó có thể tăng số phiếu ứng cử viên hoặc đặt lại phiếu bầu tùy thuộc vào nút được nhấn.
Khi nhấn nút đại diện cho một người tương ứng, bộ điều khiển sẽ chọn nó và tăng số người tương ứng trong bộ nhớ của nó sau khi tăng, nó sẽ hiển thị điểm số của những người tương ứng trên màn hình LCD 16x2.
Hoạt động của máy biểu quyết điện tử dựa trên vi điều khiển này được giải thích theo từng bước của mã C dưới đây,