การแสดงเจ็ดส่วนเป็นหน่วยแสดงผลที่สำคัญในอุปกรณ์อิเล็กทรอนิกส์และใช้กันอย่างแพร่หลายในการแสดงตัวเลขตั้งแต่ 0 ถึง 9 นอกจากนี้ยังสามารถแสดงตัวอักษรบางตัวเช่น A, B, C, H, F, E เป็นต้นในบทช่วยสอนนี้เราจะเรียนรู้วิธีการเชื่อมต่อจอแสดงผล 7 ส่วนด้วยไมโครคอนโทรลเลอร์ เราใช้ไมโครคอนโทรลเลอร์ AT89S52 จากซีรีส์ 8051
ก่อนที่จะเชื่อมต่อเราควรจะเรียนรู้เกี่ยวกับการแสดงผล 7 ส่วน เป็นหน่วยที่ง่ายที่สุดในการแสดงตัวเลขและอักขระ มันก็ประกอบด้วย 8 ไฟ LED แต่ละ LED ที่ใช้ในการส่องสว่างส่วนหนึ่งของหน่วยและ 8 TH LED ใช้ในการเปล่ง DOT ในการแสดงผล 7 ส่วน เราสามารถอ้างถึงแต่ละส่วนเป็น LINE ได้เนื่องจากเราจะเห็นว่ามี 7 บรรทัดในหน่วยซึ่งใช้เพื่อแสดงตัวเลข / อักขระ เราสามารถอ้างถึงแต่ละบรรทัด / ส่วน "a, b, c, d, e, f, g" และสำหรับอักขระจุดเราจะใช้ "h" มี 10 พินซึ่ง 8 พินใช้เพื่ออ้างถึง a, b, c, d, e, f, g และ h / dp พินกลางทั้งสองเป็นขั้วบวก / แคโทดทั่วไปของ LED ทั้งหมด ขั้วบวก / แคโทดทั่วไปเหล่านี้ถูกลัดวงจรภายในดังนั้นเราจึงต้องเชื่อมต่อขา COM เพียงขาเดียว
การแสดง 7 เซ็กเมนต์มีสองประเภท: Common Anode และ Common Cathode:
Common Anode:ในนี้ขั้วลบทั้งหมด (แคโทด) ของ LED ทั้ง 8 ดวงจะเชื่อมต่อเข้าด้วยกัน (ดูแผนภาพด้านล่าง) โดยตั้งชื่อว่า COM และขั้วบวกทั้งหมดจะถูกทิ้งไว้เฉยๆ
แคโทดทั่วไป:ในนี้ขั้วบวกทั้งหมด (Anodes) ของ LED ทั้ง 8 ดวงจะเชื่อมต่อเข้าด้วยกันโดยมีชื่อว่า COM และเทอร์มอลเชิงลบทั้งหมดจะถูกทิ้งไว้ตามลำพัง
แผนภาพวงจรและการขยายการทำงาน
ที่นี่เรากำลังใช้แอโนดทั่วไปประเภท 7 เซ็กเมนต์เพราะเราจำเป็นต้องเชื่อมต่อ LED กลับด้าน อย่างที่เราทราบกันดีว่าไมโครคอนโทรลเลอร์ให้พลังงานไม่เพียงพอที่จะทำให้ LED เรืองแสงได้ดังนั้นเราจึงจำเป็นต้องเชื่อมต่อขั้วลบของ LED กับขาไมโครคอนโทรลเลอร์และขั้วบวกของ LED กับแหล่งจ่ายไฟ คุณสามารถเข้าใจแนวคิดลอจิกเชิงลบนี้ได้ในบทความ“ การเชื่อมต่อ LED กับไมโครคอนโทรลเลอร์ 8051” คุณควรอ่านบทความนี้เพื่อทำความเข้าใจเกี่ยวกับการเชื่อมต่อพื้นฐานของไมโครคอนโทรลเลอร์เช่นคริสตัลและวงจรรีเซ็ต
ดังที่แสดงไว้ด้านบนแผนภาพวงจรสำหรับการเชื่อมต่อจอแสดงผล 7 ส่วนกับไมโครคอนโทรลเลอร์ 8051เราได้เชื่อมต่อ a, b, c, d, e, f, g, h กับพิน 2.0 ถึง 2.7 หมายความว่าเรากำลังเชื่อมต่อ 7 ส่วนกับพอร์ต 2 ของไมโครคอนโทรลเลอร์ ตอนนี้สมมติว่าเราต้องการแสดง 0 จากนั้นเราต้องเรืองแสง LED ทั้งหมดยกเว้น LED ที่อยู่ในเส้น“ g” (ดูแผนภาพด้านบน) ดังนั้นหมุด 2.0 ถึง 2.6 ควรเป็น 0 (ควรเป็น 0 เพื่อเปิด LED เป็น ต่อลอจิกเชิงลบ) และพิน 2.7 และ 2.8 ควรอยู่ที่ 1 (ควรเป็น 1 เพื่อปิด LED ตามตรรกะเชิงลบ) ดังนั้นไฟ LED ที่เชื่อมต่อกับพิน 2.0 ถึง 2.6 (a, b, c, d, e, f) จะติดและไฟ LED ที่เชื่อมต่อกับ 2.7 และ 2.8 (g และ h) จะดับซึ่งจะสร้าง "0" ใน 7 เซ็กเมนต์ ดังนั้นเราจึงต้องการรูปแบบบิต 11000000 (พิน 8 เป็นบิตสูงสุดดังนั้นเริ่มจาก P2.7 ถึง P2.0) และรหัส HEX สำหรับไบนารี 11000000 คือ“ C0” ในทำนองเดียวกันเราสามารถคำนวณสำหรับตัวเลขทั้งหมด ที่นี่เราควรทราบว่าเรากำลังปิด "dot / h" อยู่เสมอดังนั้นเราต้องให้ LOGIC“ 1” ทุกครั้ง ตารางด้านล่างสำหรับตัวเลขทั้งหมดขณะใช้ Common Anode 7 segment
ตัวเลขที่จะแสดง |
hgfedcba |
รหัส Hex |
0 |
11000000 |
C0 |
1 |
11111001 |
F9 |
2 |
10100100 |
A4 |
3 |
10110000 |
B0 |
4 |
10011001 |
99 |
5 |
10010010 |
92 |
6 |
10000010 |
82 |
7 |
11111000 |
F8 |
8 |
10,000,000 |
80 |
9 |
10010000 |
90 |
คำอธิบายรหัส
เราได้สร้างฟังก์ชัน ms_delay เพื่อให้การหน่วงเวลาเป็นมิลลิวินาทีโดยปกติแล้วการหน่วงเวลานี้จะมีให้ในโปรแกรมไมโครคอนโทรลเลอร์ใด ๆ เพื่อให้ไมโครคอนโทรลเลอร์สามารถดำเนินการภายในได้
จากนั้นเราได้สร้างอาร์เรย์ของรหัสฐานสิบหกสำหรับ 0 ถึง 9 (ดูตารางด้านบน) และในที่สุดเราก็ส่งรหัสฐานสิบหกไปยังพอร์ต 2 ซึ่งเชื่อมต่อกับส่วนแอโนด 7 ทั่วไป ด้วยวิธีนี้ตัวเลขจะแสดงบนจอแสดงผล 7 ส่วน
ตอนนี้เรามีไมโครคอนโทรลเลอร์เพียง 4 พอร์ตแล้วถ้าต้องการแสดงข้อมูลมากกว่า 4 ส่วน 7 ส่วนล่ะ ?? ในการแก้ปัญหานี้เทคนิคMultiplexingเข้ามาในภาพ เราจำเป็นต้องมัลติเพล็กซ์หน่วย 7 เซ็กเมนต์หลาย ๆ หน่วย อ่านการเชื่อมต่อการแสดงผล 7 ส่วนด้วยไมโครคอนโทรลเลอร์ AVR