เมื่อใดก็ตามที่เราไปลงคะแนนเลือกตั้งเราจะเห็นเครื่องลงคะแนนอิเล็กทรอนิกส์ ในโครงการนี้เราจะออกแบบและพัฒนาเครื่องลงคะแนนเสียงเลือกตั้งที่เรียบง่ายโดยใช้ไมโครคอนโทรลเลอร์ ATmega32A แม้ว่าเราจะสามารถใช้คอนโทรลเลอร์เพื่อรับเครื่องลงคะแนนได้มากกว่า 32 คน แต่เพื่อให้ทุกอย่างง่ายขึ้นเราจะสร้างระบบการลงคะแนนสำหรับสี่คนเราจะมีสี่ปุ่มสำหรับสี่คนและเมื่อใดก็ตามที่กดปุ่ม การลงคะแนนจะเป็นไปสำหรับบุคคลที่เกี่ยวข้องและจำนวนการโหวตของแต่ละคนจะแสดงบนจอ LCD
ส่วนประกอบที่จำเป็น
ฮาร์ดแวร์:
ATMEGA32
แหล่งจ่ายไฟ (5v)
โปรแกรม AVR-ISP
JHD_162ALCD (16x2 LCD)
ตัวเก็บประจุ 100nF (ห้าชิ้น), ตัวเก็บประจุ 100uF (เชื่อมต่อกับแหล่งจ่ายไฟ)
ปุ่ม (ห้าชิ้น)
ตัวต้านทาน10KΩ (ห้าชิ้น)
ซอฟต์แวร์:
Atmel สตูดิโอ 6.1
progisp หรือแฟลชมายากล
แผนภาพวงจรและคำอธิบายการทำงาน
ดังแสดงในวงจรเครื่องลงคะแนนอิเล็กทรอนิกส์ ข้างต้นPORTA ของไมโครคอนโทรลเลอร์ ATMEGA32 เชื่อมต่อกับพอร์ตข้อมูลของ LCD 16x2 ที่นี่อย่าลืมปิดการใช้งานการสื่อสาร JTAG ใน PORTC ของ ATMEGA โดยการเปลี่ยนฟิวส์ไบต์หากต้องการใช้ PORTC เป็นพอร์ตการสื่อสารปกติ ในจอ LCD 16x2 จะมีหมุดทั้งหมด 16 พินหากมีไฟด้านหลังหากไม่มีไฟส่องหลังจะมี 14 พิน หนึ่งสามารถจ่ายไฟหรือปล่อยหมุดไฟด้านหลัง ตอนนี้ใน 14 พินมีพินข้อมูล 8 พิน (7-14 หรือ D0-D7), พินแหล่งจ่ายไฟ 2 พิน (1 & 2 หรือ VSS & VDD หรือ gnd & + 5v), พิน3 rdสำหรับควบคุมคอนทราสต์ (VEE- ควบคุมความหนาของตัวอักษร แสดง), 3 พินควบคุม (RS & RW & E)
ในวงจรคุณสามารถสังเกตได้ว่าฉันใช้พินควบคุมเพียงสองอันเนื่องจากทำให้เกิดความยืดหยุ่นในการทำความเข้าใจที่ดีขึ้น ไม่ได้ใช้บิตคอนทราสต์และ READ / WRITE บ่อยนักดังนั้นจึงสามารถย่อลงมาที่พื้นได้ ทำให้ LCD มีคอนทราสต์สูงสุดและโหมดอ่าน เราต้องควบคุมพิน ENABLE และ RS เพื่อส่งอักขระและข้อมูลตามนั้น
การเชื่อมต่อที่ทำกับ LCD มีดังต่อไปนี้:
PIN1 หรือ VSS - กราวด์
PIN2 หรือ VDD หรือ VCC - กำลังไฟ + 5v
PIN3 หรือ VEE - กราวด์ (ให้ความเปรียบต่างสูงสุดที่ดีที่สุดสำหรับมือใหม่)
PIN4 หรือ RS (Register Selection) - 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 ด้านล่าง