ผู้จัดทำ
                                                  นาย  คมสันต์  รั่วลี 1 สทค 1 6031280004
                                                  นาย  ชัยวัฒน์  มาลาเอี่ยม  1 สทค 1 6031280010
อุปกรณ์ที่ใช้
1.  7  segment
2.  ตัวต้านทาน 220R 1 ตัว
3.  สายไฟ 9 เส้น
4.  บอร์ด Arduino
5.  สาย USB
6.  โฟโต้บอร์ด
Code
void setup() {
  // initialize serial communication:
  Serial.begin(9600);
  // initialize the LED pins:
  for (int thisPin = 2; thisPin < 9; thisPin++) {
    pinMode(thisPin, OUTPUT);
  }
}
void loop() {
  // read the sensor:
  if (Serial.available() > 0) {
    int inByte = Serial.read();
    // do something different depending on the character received.
    // The switch statement expects single number values for each case; in this
    // example, though, you're using single quotes to tell the controller to get
    // the ASCII value for the character. For example 'a' = 97, 'b' = 98,
    // and so forth:
    switch (inByte) {
      case '0':
        digitalWrite(2, LOW);
        digitalWrite(3, LOW);
        digitalWrite(4, LOW);
        digitalWrite(5, LOW);
        digitalWrite(6, LOW);
        digitalWrite(7, LOW);
        digitalWrite(8, HIGH);
        break;
      case '1':
        digitalWrite(2, HIGH);
        digitalWrite(3, LOW);
        digitalWrite(4, LOW);
        digitalWrite(5, HIGH);
        digitalWrite(6, HIGH);
        digitalWrite(7, HIGH);
        digitalWrite(8, HIGH);
        break;
      case '2':
        digitalWrite(2, LOW);
        digitalWrite(3, LOW);
        digitalWrite(4, HIGH);
        digitalWrite(5, LOW);
        digitalWrite(6, LOW);
        digitalWrite(7, HIGH);
        digitalWrite(8, LOW);
        break;
      case '3':
       digitalWrite(2, LOW);
        digitalWrite(3, LOW);
        digitalWrite(4, LOW);
        digitalWrite(5, LOW);
        digitalWrite(6, HIGH);
        digitalWrite(7, HIGH);
        digitalWrite(8, LOW);
        break;
      case '4':
        digitalWrite(2, HIGH);
        digitalWrite(3, LOW);
        digitalWrite(4, LOW);
        digitalWrite(5, HIGH);
        digitalWrite(6, HIGH);
        digitalWrite(7, LOW);
        digitalWrite(8, LOW);
        break;
        case '5':
        digitalWrite(2, LOW);
        digitalWrite(3, HIGH);
        digitalWrite(4, LOW);
        digitalWrite(5, LOW);
        digitalWrite(6, HIGH);
        digitalWrite(7, LOW);
        digitalWrite(8, LOW);
        break;
        case '6':
        digitalWrite(2, LOW);
        digitalWrite(3, HIGH);
        digitalWrite(4, LOW);
        digitalWrite(5, LOW);
        digitalWrite(6, LOW);
        digitalWrite(7, LOW);
        digitalWrite(8, LOW);
        break;
        case '7':
        digitalWrite(2, LOW);
        digitalWrite(3, LOW);
        digitalWrite(4, LOW);
        digitalWrite(5, HIGH);
        digitalWrite(6, HIGH);
        digitalWrite(7, HIGH);
        digitalWrite(8, HIGH);
        break;
        case '8':
        digitalWrite(2, LOW);
        digitalWrite(3, LOW);
        digitalWrite(4, LOW);
        digitalWrite(5, LOW);
        digitalWrite(6, LOW);
        digitalWrite(7, LOW);
        digitalWrite(8, LOW);
        break;
        case '9':
        digitalWrite(2, LOW);
        digitalWrite(3, LOW);
        digitalWrite(4, LOW);
        digitalWrite(5, LOW);
        digitalWrite(6, HIGH);
        digitalWrite(7, LOW);
        digitalWrite(8, LOW);
        break;
      default:
        // turn all the LEDs off:
        for (int thisPin = 2; thisPin < 7; thisPin++) {
          digitalWrite(thisPin, LOW);
        }
    }
  }
}
ดาวโหลด Code : คลิก!
--------------------------------------------------------------------------------------------------------------------------
ทฤษฎี 7 segment
การควบคุมหลอดแสดงผล LED 7-Segment ด้วย Micro controller PIC โดยใช้โปรแกรม PIC CCS Compiler
     หลอดแสดงผล LED 7-Segment เป็นอุปกรณ์อิเล็กทรอนิกส์ที่ใช้ในการแสดงผลเช่นเดียวกับหลอดแสดงผล LED ทั่วไป แต่ต่างตรงที่หลอดแสดงผล LED 7 ส่วน เป็นการนำเอาหลอดแสดงผล LED จำนวน 7 ตัวมาต่อกันเป็นรูปตัวเลข เพื่อนำมาแสดงผลเป็นตัวเลข 0 ถึง 9 โดยในบทความนี้จะพูดถึงการเขียนโปรแกรมควบคุมการทำงานของหลอดแสดงผล LED 7 ส่วน และ การประยุกต์ใช้งานไม่โครคอนโทรลเลอร์ PIC ควบคุมการทำงานของหลอดแสดงผล LED 7 ส่วน
1. โครงสร้างและการทำงานของหลอดแสดงผล LED 7 ส่วน
หลอดแสดงผล LED 7 ส่วน เป็นการนำเอาหลอด แสดงผล LED จำนวน 7 ตัวมาต่อกันเป็นรูปตัวเลขโดยมีชื่อเรียกแต่ละส่วน คือ a,b,c,d,e,f,g และ dp แสดงดังรูปที่ 1.1
 
1. โครงสร้างและการทำงานของหลอดแสดงผล LED 7 ส่วน
หลอดแสดงผล LED 7 ส่วน เป็นการนำเอาหลอด แสดงผล LED จำนวน 7 ตัวมาต่อกันเป็นรูปตัวเลขโดยมีชื่อเรียกแต่ละส่วน คือ a,b,c,d,e,f,g และ dp แสดงดังรูปที่ 1.1
รูปที่ 1.1 โครงสร้างและขาของหลอดแสดงผล LED 7-Segment
     หลอดแสดงผล LED 7-Segment สามารถแบ่งตามลักษณะการต่อหลอดแสดงผล LED ทั้ง 7 หลอดได้ 2 ชนิด ดังนี้
     1. ชนิดต่อแบบแอโนดร่วม หรือ คอมมอนแอโนด (Common Anode)
     2. ชนิดต่อแบบแคโทดร่วม หรือ คอมมอนแคโทด (Common Cathode)
โดยโครงสร้างการต่อหลอดแสดงผล LED 7-Segment ทั้ง 2 ชนิด ดังรูปที่ 1.2
รูปที่ 1.2 โครงสร้างการต่อหลอดแสดงผล LED 7-Segment
     รูปที่ 1.2(ก) เป็นการต่อหลอดแสดงผล LED 7-Segment แบบแอโนดร่วม โดยต้องป้อนไฟบวกที่ขาร่วมที่หรือขาคอมมอน (Common) และถ้าต้องการให้หลอดแสดงผล LED 7-Segment แสดงผลหรือให้สว่าง ต้องป้อนไฟลบหรือส่งลอจิก "0" มาที่ขาแคโทด 
     ส่วนรูปที่ 1.2(ข) เป็นการต่อหลอดแสดงผล LED 7-Segment แบบแคโทดร่วม โดยต้องป้อนไฟลบหรือกราวด์ที่ขาร่วมหรือขาคอมมอน และถ้าต้องการให้หลอดแสดงผล LED 7-Segment แสดงผลหรือสว่างต้องป้อนไฟบวกหรือส่งลอจิก "1" มาที่ขาแอโนด
2. การเชื่อต่อ PIC กับหลอดแสดงผล LED 7-Segment
     สำหรับการต่อ PIC ร่วมกับหลอดแสดงผล LED 7-Segment ควรต่อไอซีบัฟเฟอร์ร่วมด้วย เพื่อขยายกระแสให้หลอดแสดงผล LED 7-Segment สว่างเท่ากันทุกหลอด และป้องกันการลัดวงจรของหลอดแสดงผล LED 7-Segment ซึ่งมีผลทำให้ Micro controller PIC เสียหายได้
รูปที่ 2.1 การเชื่อมต่อ PIC กับหลอดแสดงผล LED 7-Segment
     รูปที่ 2.1 เป็นการต่อหลอดแสดงผล LED 7-Segment เข้ากับพอร์ต B ของ PIC เบอร์ 16F877 ซึ่งระหว่างหลอดแสดงผล LED 7-Segment กับพอร์ต B นั้นก็จะมีไอซีบัฟเฟอร์ต่อร่วมอยู่ด้วย ซึ่งไอซีบัฟเฟอร์เบอร์ 74LS245 นอกจากจะทำหน้าที่ขยายกระแสเพื่อให้หลอดแสดงผล LED 7-Segment สว่างเท่ากันทั้ง 7 ตัวแล้ว ยังทำหน้าที่ป้องกันความเสียหายให้กับ PIC ในกรณีที่เกิดการลัดวงจรในส่วนหลอดแสดงผล LED 7-Segment ด้วย
     การต่อ PIC ร่วมกับหลอดแสดงผล LED 7-Segment เพื่อให้แสดงผลออกมาเป็นตัวเลขต่างๆ จะต้องมีการส่งข้อมูลออกพอร์ตของ PIC ที่ต่อร่วมอยู่กับหลอดแสดงผล LED 7-Segment และข้อมูลที่จะส่งออกพอร์ตนั้นก็ขึ้นอยู่กับชนิดของหลอดแสดงผล LED 7-Segment ซึ่งข้อมูลที่จะส่งออกพอร์ตของหลอดแสดงผล LED 7-Segment แบบต่อแอโนดร่วมและต่อแคโทดร่วม แสดงดังตาราง ที่ 2.1 และ 2.2

ตารางที่ 2.1 แสดงข้อมูลที่ส่งออกพอร์ตของหลอดแสดงผล LED 7-Segment 
แบบต่อแอโนดร่วม (Common Anode)
ตารางที่ 2.2 แสดงข้อมูลที่ส่งออกพอร์ตของหลอดแสดงผล LED 7-Segment 
แบบต่อแคโทดร่วม (Common Cathode)
3. การส่งข้อมูลออกหลอดแสดงผล LED 7-Segment
     การส่งข้อมูลออกพอร์ต เพื่อส่งออกหลอดแสดงผล LED 7-Segment จะเหมือนกับการส่งข้อมูลออกหลอดแสดงผล LED ทั่วไป แต่การแสดงผลออกหลอดแสดงผล LED 7-Segment จะเป็นลักษณะของตัวเลข ดังนั้นข้อมูลที่ส่งออกพอร์ตจึงเป็นเลขฐานสิบหกของตัว
     รูปแบบ     output_พอร์ต(ข้อมูลเลขฐานสิบหกของตัวเลขที่ต้องการแสดง);
     ตัวอย่าง    output_B(0x3F);
     หมายถึง  ส่งค่าข้อมูล 0x3F หรือส่ง 00111111B ออกที่พอร์ต B เพื่อให้หลอดแสดงผล LED 7-Segment แสดงผลเป็นตัวเลข 0
4. การส่งข้อมูลออกที่หลอดแสดงผล LED 7-Segment จำนวน 2 ตัว
ในการเชื่อมต่อไมโครคอนโทรลเลอร์ PIC กับหลอดแสดงผล LED 7-Segment จำนวน 2 ตัวเพื่อแสดงผลตัวเลขจำนวน 2 หลักคือ หลักหน่วยและหลักสิบ สามารถทำได้โดยการนำหลอดแสดงผล LED 7-Segment ต่อออกจากพอร์ต PIC ได้โดยตรง เนื่องจาก PIC เบอร์ 16F877 มีพอร์ตอินพุตและเอาต์พุต สำหรับต่อใช้งานหลายพอร์ตจึงสามารถใช้ 1 พอร์ตต่อหลอดแสดงผล LED 7-Segment จำนวน 1 ตัวได้
   
     จากรูปที่ 4.1 เป็นการต่อหลอดแสดงผล LED 7-Segment จำนวน 2 ตัวเข้ากับ PIC ซึ่งหลอดแสดงผล LED 7-Segment ตัวที่ 1 ต่อออกจากพอร์ต B และหลอดแสดงผล LED 7-Segment ส่วนตัวที่ 2 ต่อออกจากพอร์ต D ของ PIC โดยมีไอซีเบอร์ 74LS245 ทำหน้าที่เป็นบัฟเฟอร์ การต่อลักษณะหนึ่งพอร์ตต่อหลอดแสดงผล LED 7-Segment ส่วนตัวนี้ ถ้าเป็น PIC เบอร์ 16F877 จะสามารถต่อหลอดแสดงผล LED 7-Segment ได้สูงสุด 4 ตัว
ในการเชื่อมต่อไมโครคอนโทรลเลอร์ PIC กับหลอดแสดงผล LED 7-Segment จำนวน 2 ตัวเพื่อแสดงผลตัวเลขจำนวน 2 หลักคือ หลักหน่วยและหลักสิบ สามารถทำได้โดยการนำหลอดแสดงผล LED 7-Segment ต่อออกจากพอร์ต PIC ได้โดยตรง เนื่องจาก PIC เบอร์ 16F877 มีพอร์ตอินพุตและเอาต์พุต สำหรับต่อใช้งานหลายพอร์ตจึงสามารถใช้ 1 พอร์ตต่อหลอดแสดงผล LED 7-Segment จำนวน 1 ตัวได้
รูปที่ 4.1 การเชื่อมต่อ PIC กับหลอดแสดงผล LED 7-Segment จำนวน 2 ตัว
5. การส่งข้อมูลออกหลอดแสดงผล LED 7-Segment โดยใช้ไอซีถอดรหัส
     การเชื่อมต่อไมโครคอนโทรลเลอร์ PIC กับหลอดแสดงผล LED 7-Segment จำนวน 2 ตัวโดยใช้ไอซีถอดรหัสเบอร์ 74LS48 สำหรับหลอดแสดงผล LED 7-Segment ชนิดแคโทดร่วม และไอซีถอดรหัส เบอร์ 74LS47 สำหรับหลอดแสดงผล LED 7-Segment ชนิดแอโนดร่วม จะทำให้ประหยัดพอร์ตของ PIC เพราะหลอดแสดงผล LED 7-Segment ส่วนที่ต่อเข้ากับไอซีถอดรหัสจะใช้พอร์ตเพียง 4 บิตเท่านั้น นั่นคือ ปกติพอร์ตของ PIC จะมีขนาด 8 บิต ก็จะสามารถต่อหลอดแสดงผล LED 7-Segment ได้ 2 ตัวนั่นเอง ดังแสดงในรูปที่ 5.1 
รูปที่ 5.1 การเชื่อมต่อ PIC กับหลอดแสดงผล LED 7-Segment จำนวน 2 ตัวโดยใช้ไอซีถอดรหัส
     จากรูปที่ 5.1 เป็นการต่อหลอดแสดงผล LED 7-Segment จำนวน 2 ตัว แสดงผลเป็นตัวเลข 2 หลัก คือ หลักหน่วยและหลักสิบ โดยหลักสิบจะต่ออยู่กับพอร์ต B4-B7 และหลักหน่วยต่ออยู่กับพอร์ตB0-B3 โดยหลอดแสดงผล LED 7-Segment ทั้งสองตัวต่อผ่านไอซีถอดรหัสเบอร์ 74LS48 เพราะหลอดแสดงผล LED 7-Segment ที่ใช้เป็นชนิดแคโทดร่วม ทำหน้าที่แปลงเลขฐานสองให้แสดงเป็นเลขฐานสิบที่หลอดแสดงผล LED 7-Segmentรูปที่ 5.1 การเชื่อมต่อ PIC กับหลอดแสดงผล LED 7-Segment จำนวน 2 ตัวโดยใช้ไอซีถอดรหัส
     จากรูปที่ 5.1 เป็นการต่อหลอดแสดงผล LED 7-Segment จำนวน 2 ตัว แสดงผลเป็นตัวเลข 2 หลัก คือ หลักหน่วยและหลักสิบ โดยหลักสิบจะต่ออยู่กับพอร์ต B4-B7 และหลักหน่วยต่ออยู่กับพอร์ตB0-B3 โดยหลอดแสดงผล LED 7-Segment ทั้งสองตัวต่อผ่านไอซีถอดรหัสเบอร์ 74LS48 เพราะหลอดแสดงผล LED 7-Segment ที่ใช้เป็นชนิดแคโทดร่วม ทำหน้าที่แปลงเลขฐานสองให้แสดงเป็นเลขฐานสิบที่หลอดแสดงผล LED 7-Segment
     การใช้ไอซีถอดรหัสเบอร์ 74LS48 ซึ่งเป็นไอซีที่ทำหน้าที่แปลงเลขฐานสองให้เป็นรหัสแสดงตัวเลขของหลอดแสดงผล LED 7-Segment ดังตารางที่ 5.1
ตารางที่ 5.1 แสดงการแปลงเลขฐานสองให้เป็นรหัสแสดงตัวเลขของหลอดแสดงผล LED 7-Segment
รูปวงจร
---------------------------------------------------------------------------------












 
ไม่มีความคิดเห็น:
แสดงความคิดเห็น