หน้าจอแสดงผล TM1637 7SEGMENT DISPLAY 2.3″ 6DIGIT



หน้าจอแสดงผล TM1637 7SEGMENT DISPLAY 2.3″ 6DIGIT

หน้าจองแสดงผล 7 Segment ขนาด 2.3 นิ้ว 6 หลัก ควบคุมการทำงานด้วย IC TM1637

สามารถนำไปดัดแปลงเป็น นับจำนวนคนเข้าออก นับชิ้นงาน สกอร์บอร์ด นับตัวเลข นับเวลา และอื่นๆ

สั่งสินค้าคลิก

การต่อใช้งาน

เชื่อมต่อไฟเลี้ยงวงจร 12 Vdc ตามรูปภาพ

และเชื่อมต่อสายสัญญาณต่างๆ เข้ากับบอร์ดไมโครคอนโทรลเลอร์ตามรูป ถ้าหากใช้ไมโครคอนโทรลเลอร์ชนิด 3.3V ก็เชื่อมต่อ 3.3V เข้าที่ Input 5V

-ไฟเลี่ยง 3.3V หรือ 5V และ 12V

-เชื่อมต่อสัญญาณ ผ่าน DIO และ CLK

โค้ดโปรแกรมการควบคุม

Library TM1637 ที่นิยมใช้งาน เขียนมาเพื่อแสดง 7 Segment 4 หลัก การจะใช้งานหลักที่ 5 และ 6 ได้จำเป็นต้องเขียนโค้ดเพิ่มด้วยต้นเอง โดยสามารถดูโค้ดตามล่างเพื่อเป็นตัวอย่างได้

#define CLK 5 // ขา CLK
#define DIO 4 // ขา DIO

byte Seg[17] { // การเปิดปิด LED ใน 7 Segment ในตำแหน่งต่างๆ โดยเรียงตำแหน่ง Bit ดังนี้ DP G F E D C B A
  // เขียน 1 เพื่อให้ติด 0 เพื่อให้ดับ
  0b00111111, // 0
  0b00000110, // 1
  0b01011011, // 2
  0b01001111, // 3
  0b01100110, // 4
  0b01101101, // 5
  0b01111101, // 6
  0b00000111, // 7
  0b01111111, // 8
  0b01101111, // 9
  0b11111111, // All LED
  0b01000000, // -
  0b01110001, // F
  0b01110011, // P
  0b00001000, // _
  0b00000000, // OFF
};

void setup() {
  Setup_7Seg(); // ฟังก์ชั่นสำหรับเริ่มต้นการใช้งาน

}

void loop() {
  Segment_Bit(1,2,3,4,5,6); // ฟังก์ชั่น แสดงผลตัวเลขบนหน้าจอ 7 Segment โดยเรียงหลักตาม , ที่ขั้น
  delay(500);
}

void Segment_Bit(byte d1, byte d2, byte d3, byte d4, byte d5, byte d6) { // เขียนข้อมูลระดับ Bit เข้าไปในแต่ละหลักโดยอ้างอิง Bit ตามตัวแปรอาเรย์ Seg[17] ที่ด้านบน
  // d1 - d6 แทนข้อมูลที่ต้องการแสดงในแต่ละหลัก
  Write7Seg(d1, 0x0a, 0x00, 0);
  Write7Seg(d2, 0x0a, 0x01, 0);
  Write7Seg(d3, 0x0a, 0x02, 0);
  Write7Seg(d4, 0x0a, 0x05, 0);
  Write7Seg(d5, 0x0a, 0x04, 0);
  Write7Seg(d6, 0x0a, 0x03, 0);
}

void Setup_7Seg() { // ฟังก์ชั่นสำหรับเริ่มต้นการใช้งาน
  pinMode(CLK, OUTPUT);
  pinMode(DIO, OUTPUT);
  delay(250);
  pinMode(CLK, INPUT);
  pinMode(DIO, INPUT);
  //pinMode(1, OUTPUT);
  //digitalWrite(1, 0);
  digitalWrite(CLK, 0);
  digitalWrite(DIO, 0);
}

void delayBit() { // delay ระหว่างการส่ง Bit
  delayMicroseconds(10);
}

void Write7Seg(int data, byte Bri, byte Pos, byte DP) { // เขียนข้อมูลระดับ Bit ตามตัวแปร Seg[17]
  // data: ข้อมูลตามตัวแปร Seg[17]
  // Bri: ความสว่าง 0x08 - 0x0F โดย 0x08 จะสว่างน้อยสุงและ 0x0F จะสว่างมากสุด
  // Pos หลักที่ต้องการเขียน // 0x00 - 0x05 0x00 - 0x02 = หลักที่ 1 2 และ 3 0x03 - 0x05 = หลักที่ 6 5 4
  // DP ตัวแปรสำหรับเปิด/ปิดจุดในแต่ละหลัก 0 = ดับ 1 = ติด
  Start();
  Send_Bit(0x40 | 0x04);
  Stop();

  Start();
  Send_Bit(0xC0 | Pos);
  Send_Bit(Seg[data] | DP);
  Stop();

  Start();
  Send_Bit(0x80 | Bri);
  Stop();
}

void Start() { // เรื่มการติดต่อ
  pinMode(DIO, OUTPUT);
  delayBit();
}

void Send_Bit(byte dataI) { // การส่ง Bit
  byte data = dataI;

  for (int i = 0; i < 8; i++) {
    pinMode(CLK, OUTPUT);
    delayBit();

    if (data & 0x01) {
      pinMode(DIO, INPUT);
    }
    else {
      pinMode(DIO, OUTPUT);
    }
    delayBit();

    pinMode(CLK, INPUT);
    delayBit();
    data = data >> 1;
  }

  pinMode(CLK, OUTPUT);
  pinMode(DIO, INPUT);
  delayBit();

  pinMode(CLK, INPUT);
  delayBit();
  uint8_t ack = digitalRead(DIO);
  if (ack == 0)
    pinMode(DIO, OUTPUT);


  delayBit();
  pinMode(CLK, OUTPUT);
  delayBit();
}

void Stop() { // หยุดการติดต่อ
  pinMode(DIO, OUTPUT);
  delayBit();
  pinMode(CLK, INPUT);
  delayBit();
  pinMode(DIO, INPUT);
  delayBit();
}

 

 

สั่งสินค้าคลิก

ป้ายกำกับ:, ,