วันพุธที่ 21 มีนาคม พ.ศ. 2561

ใบงานที่ 2 7 segment

ผู้จัดทำ

                                                  นาย  คมสันต์  รั่วลี 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.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 การเชื่อมต่อ PIC กับหลอดแสดงผล LED 7-Segment จำนวน 2 ตัว

     จากรูปที่ 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 ตัว


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








รูปที่ 6.1 การเชื่อมต่อ PIC กับหลอดแสดงผล 7-Segment จำนวน 2 ตัว

แบบมัลติเพล็กซ์


อ้างอิงจาก : http://engineeringkowlege.blogspot.com/2013/03/led-7-segment-micro-controller-pic-pic.html


รูปวงจร


ดาวโหลด : คลิก!
---------------------------------------------------------------------------------






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

แสดงความคิดเห็น