ในบทช่วยสอนนี้เราจะเชื่อมต่อปุ่มกด 4x4 (16 คีย์) กับไมโครคอนโทรลเลอร์ ATMEGA32A เราทราบดีว่าปุ่มกดเป็นอุปกรณ์อินพุตที่สำคัญที่สุดอย่างหนึ่งที่ใช้ในโครงการอิเล็กทรอนิกส์ ปุ่มกดเป็นวิธีที่ง่ายที่สุดวิธีหนึ่งในการให้คำสั่งหรือคำสั่งกับระบบอิเล็กทรอนิกส์
ส่วนประกอบที่จำเป็น
ฮาร์ดแวร์: ATMEGA32, แหล่งจ่ายไฟ (5v), AVR-ISP PROGRAMMER, JHD_162ALCD (16 * 2LCD), ตัวเก็บประจุ 100uF, ตัวเก็บประจุ 100nF, ตัวต้านทาน10KΩ (8 ชิ้น)
ซอฟต์แวร์: Atmel studio 6.1 หรือ Atmel studio 6.2, progisp หรือ flash magic
แผนภาพวงจรและคำอธิบายการทำงาน
ในวงจร PORTB ของ ATMEGA32 เชื่อมต่อกับพอร์ตข้อมูล LCD ที่นี่อย่าลืมปิดการใช้งานการสื่อสาร JTAG ใน PORTC ot ATMEGA โดยการเปลี่ยนฟิวส์ไบต์หากต้องการใช้ PORTC เป็นพอร์ตการสื่อสารปกติ ในจอ LCD 16x2 จะมี 16 พินทั้งหมดหากมีไฟด้านหลังหากไม่มีไฟด้านหลังจะมี 14 พิน หนึ่งสามารถจ่ายไฟหรือปล่อยหมุดไฟด้านหลัง ตอนนี้ใน 14 ขามี 8 ข้อมูลหมุด (7-14 หรือ D0-D7) 2 หมุดแหล่งจ่ายไฟ (1 & 2 หรือ VSS & VDD หรือ GND & + 5V) 3 ถพินสำหรับการควบคุมความคมชัด (วีควบคุมวิธีการหนาตัวละครที่ควรจะเป็น แสดง) และ 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 ถึง PB0 ของ uC
PIN8 หรือ D1 ถึง PB1 ของ uC
PIN9 หรือ D2 ถึง PB2 ของ uC
PIN10 หรือ D3 ถึง PB3 ของ uC
PIN11 หรือ D4 ถึง PB4 ของ uC
PIN12 หรือ D5 ถึง PB5 ของ uC
PIN13 หรือ D6 ถึง PB6 ของ uC
PIN14 หรือ D7 ถึง PB7 ของ uC
ในวงจรคุณจะเห็นว่าเราใช้การสื่อสาร 8 บิต (D0-D7) แต่นี่ไม่ใช่ภาคบังคับเราสามารถใช้การสื่อสาร 4 บิต (D4-D7) ได้ แต่ด้วยโปรแกรมการสื่อสาร 4 บิตจะซับซ้อนเล็กน้อย ดังนั้นจากการสังเกตเพียงตารางด้านบนเรากำลังเชื่อมต่อ 10 พินของ LCD เข้ากับคอนโทรลเลอร์ซึ่ง 8 พินเป็นพินข้อมูลและ 2 พินสำหรับควบคุม
ตอนนี้เรามาพูดถึงปุ่มกดกันดีกว่าปุ่มกดคืออะไรนอกจากปุ่มมัลติเพล็กซ์ ปุ่มต่างๆเชื่อมต่อกันในรูปแบบมัลติเพล็กซ์เพื่อลดการใช้พินของระบบควบคุม
พิจารณาว่าเรามีปุ่มกด 4x4 ในปุ่มกดนี้เรามี 16 ปุ่มในกรณีปกติเราต้องใช้หมุดควบคุม 16 ตัวเพื่อเชื่อมต่อ 16 ปุ่ม แต่สิ่งนี้ไม่ดีในมุมมองของระบบควบคุม การใช้พินนี้สามารถลดลงได้โดยการเชื่อมต่อปุ่มในรูปแบบมัลติเพล็กซ์
ตัวอย่างเช่นพิจารณาว่าเรามีปุ่ม 16 ปุ่มและเราต้องการต่อเข้ากับคอนโทรลเลอร์เพื่อสร้างปุ่มกดปุ่มเหล่านี้จะถูกจัดเรียงดังแสดงในรูป:
ปุ่มเหล่านี้เชื่อมต่อกันด้วยคอลัมน์ทั่วไปดังแสดงในรูป:
ดังแสดงในรูปปลายที่ไม่ได้ทำเครื่องหมายไว้ของทุกปุ่มสี่ปุ่มจะถูกลากเพื่อรับเพื่อสร้างคอลัมน์และสำหรับ 16 ปุ่มเรามีสี่คอลัมน์
หากเราลืมการเชื่อมต่อคอลัมน์ด้านบนและเชื่อมต่อปลายที่ทำเครื่องหมายทั่วไปของทุกปุ่มสี่ปุ่มเข้าด้วยกันเพื่อสร้างแถว:
ดังแสดงในรูปสำหรับ 16 คีย์เราจะมีสี่แถวดังแสดงในรูป
ตอนนี้เมื่อทั้งคู่มองเห็นด้วยกันเราจะได้วงจรด้านล่าง
ที่นี่เราได้เชื่อมต่อ 16 คีย์ในรูปแบบมัลติเพล็กซ์เพื่อลดการใช้พินของคอนโทรลเลอร์ เมื่อเทียบกับกรณีแรกของ 16 คีย์ที่เชื่อมต่อเราต้องใช้ 16 พินบนคอนโทรลเลอร์ แต่ตอนนี้หลังจากมัลติเพล็กซ์เราต้องการคอนโทรลเลอร์เพียง 8 พินเพื่อเชื่อมต่อ 16 คีย์
โดยปกตินี่คือสิ่งที่แสดงภายในปุ่มกด:
ดังแสดงในรูปด้านบนมี 16 ปุ่มในปุ่มกดด้านบนและแต่ละปุ่มเหล่านี้แสดงถึงปุ่มในการกำหนดค่าปุ่มมัลติเพล็กซ์ และยังมีการเชื่อมต่อ 8 พินดังที่แสดงในรูปด้านบนซึ่งแสดงถึงการเชื่อมต่อแบบมัลติเพล็กซ์
ตอนนี้สำหรับการทำงาน:
ปุ่มกดที่นี่มีสี่คอลัมน์และสี่แถวสำหรับการระบุปุ่มที่กดเราจะใช้วิธีการอ้างอิงไขว้ ก่อนอื่นเราจะเชื่อมต่อคอลัมน์ทั้งหมดหรือทุกแถวกับ vcc ดังนั้นหากแถวเชื่อมต่อกับ vcc ทั่วไปเราจะนำคอลัมน์เป็นอินพุตไปยังคอนโทรลเลอร์
ตอนนี้ถ้ากดปุ่มหนึ่งดังแสดงในรูป:
หลังจากนั้นกระแสจะไหลผ่านวงจรดังแสดงในรูปด้านล่าง:
ดังนั้นเราจึงมี C1 สูงสำหรับการกดปุ่ม ในขณะนี้เรากำลังจะเปลี่ยนพาวเวอร์และพอร์ตอินพุตนั่นคือเราจะเพิ่มพลังให้กับคอลัมน์และรับแถวเป็นอินพุต
จากนั้นจะมีการไหลของพลังงานดังแสดงในรูปด้านล่าง:
ดังนั้นสำหรับแถวเรามี R1 สูง
ณ ตอนนี้เรามี C1 สูงในกรณีแรกและ R1 สูงในกรณีที่สองดังนั้นเราจึงมีตำแหน่งเมทริกซ์ของปุ่มจึงเป็นหมายเลข "หนึ่ง"
หากกดปุ่มที่สองเราจะมี C1 เป็นคอลัมน์ แต่ตรรกะระดับสูงที่เราได้รับในคอลัมน์ทั่วไปจะเป็น 'R2' ดังนั้นเราจะมี C1 และ R2 ดังนั้นเราจะมีตำแหน่งเมทริกซ์ของปุ่มที่สอง
นี่คือวิธีที่เราจะเขียนโปรแกรมเราจะเชื่อมต่อปุ่มกดแปดพินกับคอนโทรลเลอร์แปดพิน และสำหรับการเริ่มต้นเราจะจ่ายไฟสี่พินของคอนโทรลเลอร์สำหรับการเปิดแผงปุ่มกดสี่แถวในเวลานี้อีกสี่พินจะถูกใช้เป็นอินพุต เมื่อกดปุ่มขาคอลัมน์ที่เกี่ยวข้องดึงขึ้นและดึงขาควบคุมขึ้นสิ่งนี้จะรับรู้ว่าเปลี่ยนอินพุตเป็นพลังงานและพลังงานในการป้อนข้อมูลดังนั้นเราจะมีแถวเป็นอินพุต
จากนี้เราได้รับปุ่มกดโดยผู้ใช้ ที่อยู่เมทริกซ์นี้ถูกนำไปยังหมายเลขที่เกี่ยวข้องและหมายเลขนี้จะแสดงบน LCD
การทำงานของปุ่มกดที่เชื่อมต่อกับไมโครคอนโทรลเลอร์ avr อธิบายทีละขั้นตอนในรหัส C ที่ระบุด้านล่าง คุณยังสามารถตรวจสอบ: ปุ่มกดเชื่อมต่อกับไมโครคอนโทรลเลอร์ 8051