การแสดงผลเป็นส่วนที่สำคัญมากของ Embedded System Application เนื่องจากช่วยให้ผู้ใช้ทราบสถานะของระบบและยังแสดงผลลัพธ์หรือข้อความเตือนที่ระบบสร้างขึ้น มีจอแสดงผลหลายประเภทที่ใช้ในอุปกรณ์อิเล็กทรอนิกส์เช่นจอแสดงผล 7 ส่วน, จอ LCD, จอสัมผัส TFT, จอ LED เป็นต้น
เราได้เชื่อมต่อ LCD 16x2 กับ ARM7-LPC2148 แล้วในบทช่วยสอนก่อนหน้านี้ วันนี้ในการกวดวิชานี้เราจะเชื่อมต่อจอแสดงผล 7 ส่วนกับ ARM7 ก่อนที่จะลงรายละเอียดเราจะดูวิธีควบคุมโมดูล 7 ส่วนเพื่อแสดงอักขระจำนวนเท่าใดก็ได้
การแสดงผล 7 ส่วน
การแสดงผล 7 ส่วน เป็นหนึ่งในหน่วยแสดงผลที่ง่ายที่สุดในการแสดงตัวเลขและตัวอักษร โดยทั่วไปจะใช้เพื่อแสดงตัวเลขและมีแสงสว่างที่สว่างกว่าและโครงสร้างที่เรียบง่ายกว่าการแสดงผลแบบดอทเมทริกซ์ และเนื่องจากการส่องสว่างที่สว่างกว่าทำให้สามารถดูเอาต์พุตได้จากระยะไกลกว่า LCD ดังที่แสดงในภาพด้านบนของจอแสดงผล 7 ส่วนประกอบด้วย LED 8 ดวงแต่ละ LED ใช้เพื่อส่องสว่างส่วนหนึ่งของหน่วยและ 8thLED ใช้เพื่อให้แสงสว่าง DOT ในจอแสดงผล 7 ส่วน 8thLED ใช้เมื่อใช้โมดูล 7 เซ็กเมนต์สองโมดูลขึ้นไปตัวอย่างเช่นเพื่อแสดง (0.1) โมดูลเดียวใช้เพื่อแสดงตัวเลขหรืออักขระเดียว ในการแสดงตัวเลขหรืออักขระมากกว่าหนึ่งตัวจะใช้ 7 ส่วนหลาย ๆ ส่วน
หมุดของการแสดงผล 7 ส่วน
มี 10 พินซึ่ง 8 พินใช้เพื่ออ้างถึง a, b, c, d, e, f, g และ h / dp พินกลางทั้งสองเป็นขั้วบวก / แคโทดทั่วไปของ LED ทั้งหมด ขั้วบวก / แคโทดทั่วไปเหล่านี้ถูกลัดวงจรภายในดังนั้นเราจึงต้องเชื่อมต่อขา COM เพียงขาเดียว
ขึ้นอยู่กับการเชื่อมต่อเราจำแนก 7-Segment ออกเป็นสองประเภท:
แคโทดทั่วไป
ในนี้ขั้วลบทั้งหมด (แคโทด) ของ LED ทั้ง 8 ดวงจะเชื่อมต่อเข้าด้วยกัน (ดูแผนภาพด้านล่าง) โดยตั้งชื่อว่า COM และขั้วบวกทั้งหมดจะเหลือเพียงอย่างเดียวหรือเชื่อมต่อกับหมุดไมโครคอนโทรลเลอร์ หากเราใช้ไมโครคอนโทรลเลอร์เราจะตั้งค่าลอจิก HIGH เพื่อให้แสงสว่างเฉพาะและตั้งค่า LOW เพื่อปิด LED
แอโนดทั่วไป
ในนี้ขั้วบวกทั้งหมด (Anodes) ของ LED ทั้ง 8 ดวงจะเชื่อมต่อเข้าด้วยกันโดยมีชื่อว่า COM และเทอร์มอลเชิงลบทั้งหมดจะถูกทิ้งไว้ตามลำพังหรือเชื่อมต่อกับพินไมโครคอนโทรลเลอร์ ถ้าเราใช้ไมโครคอนโทรลเลอร์เราจะตั้งค่าลอจิก LOW เพื่อส่องสว่างเฉพาะและตั้งค่าลอจิกสูงเพื่อปิด LED
ดังนั้นขึ้นอยู่กับค่าพินคุณสามารถเปิดหรือปิดส่วนใดส่วนหนึ่งหรือบรรทัดของ 7 ส่วนเพื่อแสดงตัวเลขหรือตัวอักษรที่ต้องการได้ ตัวอย่างเช่นในการแสดง 0 หลักเราต้องตั้งค่าพินABCDEF เป็น HIGHและG เป็น LOWเท่านั้น เนื่องจากไฟ LED ของ ABCDEF เปิดอยู่และ G ปิดอยู่จึงเป็นตัวเลข0 หลักในโมดูล 7 ส่วน (สำหรับแคโทดทั่วไปสำหรับขั้วบวกทั่วไปจะอยู่ตรงข้ามกัน)
ด้านล่างแสดงตารางค่า HEX และหลักที่สอดคล้องตามหมุด LPC2148 สำหรับการกำหนดค่าแคโทดทั่วไป
ตัวเลข |
ค่า HEX สำหรับ LPC2148 |
ก |
ข |
ค |
ง |
จ |
ฉ |
ช |
0 |
0xF3 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
0x12 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
2 |
0x163 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
3 |
0x133 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
4 |
0x192 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
5 |
0x1B1 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
6 |
0x1F1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
7 |
0x13 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
8 |
0x1F3 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
9 |
0x1B3 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
สำคัญ: ในตารางด้านบนฉันได้กำหนดค่า HEX ตามพินที่ฉันใช้ใน LPC2148 ตรวจสอบแผนภาพวงจรด้านล่าง คุณสามารถใช้พินอะไรก็ได้ที่คุณต้องการ แต่เปลี่ยนค่าฐานสิบหกตามนั้น
หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการแสดงผล 7 ส่วนให้ไปที่ลิงก์ ตรวจสอบการเชื่อมต่อการแสดงผล 7 ส่วนกับไมโครคอนโทรลเลอร์อื่น ๆ ด้วย:
- การแสดงผล 7 ส่วนเชื่อมต่อกับ Raspberry Pi
- 7 Segment Display Interfacing กับ PIC Microcontroller
- การเชื่อมต่อการแสดงผล 7 ส่วนกับ Arduino
- การเชื่อมต่อการแสดงผล 7 ส่วนกับไมโครคอนโทรลเลอร์ 8051
- 0-99 ตัวนับโดยใช้ไมโครคอนโทรลเลอร์ AVR
วัสดุที่จำเป็น
ฮาร์ดแวร์
- ARM7-LPC2148
- โมดูลการแสดงผลเจ็ดส่วน (ตัวเลขเดียว)
- เขียงหั่นขนม
- การเชื่อมต่อสายไฟ
ซอฟต์แวร์
- Keil uVision 5
- แฟลชเมจิก
แผนภูมิวงจรรวม
สำหรับการเชื่อมต่อ 7 ส่วนกับ LPC2148 ไม่จำเป็นต้องมีส่วนประกอบภายนอกดังแสดงในแผนภาพวงจรด้านล่าง:
ตารางด้านล่างแสดงการเชื่อมต่อวงจรระหว่างโมดูล 7-Segment และ LPC2148
หมุดโมดูลเจ็ดส่วน |
LPC2148 พิน |
ก |
P0.0 |
ข |
P0.1 |
ค |
P0.4 |
ง |
P0.5 |
จ |
P0.6 |
ฉ |
P0.7 |
ช |
P0.8 |
เรื่องธรรมดา |
GND |
การเขียนโปรแกรม ARM7 LPC2148
เราได้เรียนรู้วิธีการเขียนโปรแกรม ARM7-LPC2148 โดยใช้ Keil ในบทช่วยสอนก่อนหน้านี้ เราใช้ Keil uVision 5 เดียวกันที่นี่เพื่อเขียนโค้ดและสร้างไฟล์ฐานสิบหกจากนั้นอัปโหลดไฟล์ hex ไปยัง LPC2148 โดยใช้เครื่องมือแฟลชเมจิก เราใช้สาย USB เพื่อจ่ายไฟและอัปโหลดรหัสไปยัง LPC2148
โค้ดที่สมบูรณ์พร้อมคำอธิบายวิดีโอจะได้รับในตอนท้ายของบทช่วยสอนนี้ เรากำลังอธิบายส่วนสำคัญบางส่วนของโค้ดที่นี่
ก่อนอื่นเราต้องรวมไฟล์ส่วนหัวสำหรับไมโครคอนโทรลเลอร์ LPC214x ซีรีส์
# รวม
ถัดไปตั้งหมุดเป็นเอาต์พุต
IO0DIR = IO0DIR-0xffffffff
สิ่งนี้ตั้งค่าพิน P0.0 เป็น P0.31 เป็นเอาต์พุต แต่เราจะใช้พิน (P0.0, P0.1, P0.4, P0.5, P0.6, P0.7 และ P0.8) เท่านั้น.
จากนั้นตั้งค่าพินบางตัวที่ LOGIC HIGH หรือ LOW ตามหลักตัวเลขที่จะแสดง ในที่นี้เราจะแสดงค่าจาก (0 ถึง 9) เราจะใช้อาร์เรย์ที่ประกอบด้วยค่า HEX สำหรับค่า 0 ถึง 9
int ที่ไม่ได้ลงนาม a = {0xf3,0x12,0x163,0x133,0x192,0x1b1,0x1f1,0x13,0x1f3,0x1b3};
ค่าจะแสดงอย่างต่อเนื่องเมื่อใส่รหัสใน ขณะที่ วนซ้ำ
ในขณะที่ (1) { สำหรับ (i = 0; i <= 9; i ++) { IO0SET = IO0SET-a; // ตั้งค่าพินที่สอดคล้องกัน ความล่าช้า สูง(9000); // เรียกใช้ฟังก์ชันหน่วงเวลาIO0CLR = IO0CLR-a; // ตั้งค่าพินที่เกี่ยวข้อง LOW } }
นี่ IOSET และ IOCLR จะใช้ในชุดขาสูงและต่ำตามลำดับในฐานะที่เราได้ใช้PORT0หมุดเพื่อให้เรามี IO0SET & IO0CLR
สำหรับการ วนซ้ำใช้เพื่อเพิ่ม i ในการวนซ้ำแต่ละครั้งและทุกครั้งที่ ฉัน เพิ่มขึ้น 7 เซ็กเมนต์จะเพิ่มตัวเลขที่แสดงอยู่ด้วย
ฟังก์ชัน หน่วงเวลา ใช้เพื่อสร้างเวลาหน่วงระหว่าง SET และ CLR
โมฆะล่าช้า (int k) // ฟังก์ชันสำหรับการหน่วงเวลา { int i, j; สำหรับ (i = 0; i
รหัสที่สมบูรณ์และคำอธิบายวิดีโอที่ใช้งานได้รับด้านล่าง ตรวจสอบโครงการที่เกี่ยวข้องกับการแสดงผล 7 ส่วนทั้งหมดได้ที่นี่