Khác

Module học lập trình giao tiếp led, bàn phím TM1638

Mã sản phẩm: K1_168
GIỚI THIỆU SẢN PHẨM:+  Mạch điều khiển hiển thị Led & Key TM1638 được sử dụng để tạo bảng điều khiển, hiển thị trên led đơn, led 7 đoạn và phím bấm thông qua giao tiếp nối tiếp sử dụng IC TM1638.+  Mạch điều khiển hiển thị Led & Key...
45,000₫
Hàng còn: 9
Số lượng
 
1
 
Thêm vào giỏ Mua ngay

Dịch vụ & Khuyến mãi

Giao miễn phí chuyển phát nhanh trong nội thành TPHCM đối với đơn hàng trên 1 triệu đồng

Giảm 5k cho đơn hàng trên 300k đồng

Giảm 10k cho đơn hàng trên 500k đồng

Giảm 15k hoặc freeship chuyển phát nhanh cho đơn hàng trên 1tr đồng

Giảm 25.000đ hoặc freeship cho đơn hàng trên 2tr đồng.

Chi tiết sản phẩm

GIỚI THIỆU SẢN PHẨM:

+  Mạch điều khiển hiển thị Led & Key TM1638 được sử dụng để tạo bảng điều khiển, hiển thị trên led đơn, led 7 đoạn và phím bấm thông qua giao tiếp nối tiếp sử dụng IC TM1638.

+  Mạch điều khiển hiển thị Led & Key TM1638 có thể điều khiển, hiển thị đồng thời 8 led 7 đoạn, 8 led đơn và 8 phím bấm mà chỉ sử dụng duy nhất 3 chân giao tiếp từ Arduino hoặc Vi điều khiển bất kỳ, mạch có cách sử dụng đơn giản, đi kèm hướng dẫn sử dụng và code mẫu sẵn có, mạch có chất lượng linh kiện và gia công tốt, độ bền cao.

Thông số kỹ thuật:

  • Mạch điều khiển hiển thị Led & Key TM1638

  • IC driver chính: TM1638

  • Điện áp sử dụng: 5VDC

  • Điều khiển 8 Led đơn, 8 Led 7 đoạn, 8 button.

  • Giao tiếp: Serial 3 chân STB, CLK, DIO.

  • Kích thước: 7.7 cm x 5 cm x 1.1 cm

SƠ ĐỒ KẾT NỐI TM1638 VỚI ARDUINO

 

CODE TEST TM1638 VỚI ARDUINO

const int strobe = 7; // STB to D7
const int clock = 9; // CLK to D9
const int data = 8;   // DIO to D8

void sendCommand(uint8_t value)
{
  digitalWrite(strobe, LOW);
  shiftOut(data, clock, LSBFIRST, value);
  digitalWrite(strobe, HIGH);
}

void reset()
{
  sendCommand(0x40); // Set auto increment mode
  digitalWrite(strobe, LOW);
  shiftOut(data, clock, LSBFIRST, 0xc0);   // Set starting address to 0
  for (uint8_t i = 0; i < 16; i++)
  {
    shiftOut(data, clock, LSBFIRST, 0x00);
  }
  digitalWrite(strobe, HIGH);
}

void setup()
{
  pinMode(strobe, OUTPUT);
  pinMode(clock, OUTPUT);
  pinMode(data, OUTPUT);
  sendCommand(0x8f);  // Set maximum display brightness
  reset();
}

#define COUNTING_MODE 0
#define SCROLL_MODE 1
#define BUTTON_MODE 2

void loop()
{
  static uint8_t mode = COUNTING_MODE;
  switch (mode)
  {
    case COUNTING_MODE:
      mode += counting();
      delay(500);
      break;
    case SCROLL_MODE:
      mode += scroll();
      break;
    case BUTTON_MODE:
      buttons();
      break;
  }
  delay(200);
}

bool counting()
{
  /*0*/ /*1*/ /*2*/ /*3*/ /*4*/ /*5*/ /*6*/ /*7*/ /*8*/ /*9*/
  uint8_t digits[] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f };
  static uint8_t digit = 0;
  sendCommand(0x40);
  digitalWrite(strobe, LOW);
  shiftOut(data, clock, LSBFIRST, 0xc0);
  for (uint8_t position = 0; position < 8; position++)
  {
    shiftOut(data, clock, LSBFIRST, digits[digit]);
    shiftOut(data, clock, LSBFIRST, 0x00);
  }
  digitalWrite(strobe, HIGH);
  digit = ++digit % 10;
  return digit == 0;
}

bool scroll()
{
  uint8_t scrollText[] =
  {
    /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    /*H*/ /*E*/ /*L*/ /*L*/ /*O*/ /*.*/ /*.*/ /*.*/
    0x76, 0x79, 0x38, 0x38, 0x3f, 0x80, 0x80, 0x80,
    /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    /*H*/ /*E*/ /*L*/ /*L*/ /*O*/ /*.*/ /*.*/ /*.*/
    0x76, 0x79, 0x38, 0x38, 0x3f, 0x80, 0x80, 0x80,
  };
  static uint8_t index = 0;
  uint8_t scrollLength = sizeof(scrollText);
  sendCommand(0x40);
  digitalWrite(strobe, LOW);
  shiftOut(data, clock, LSBFIRST, 0xc0);

  for (int i = 0; i < 8; i++)
  {
    uint8_t c = scrollText[(index + i) % scrollLength];
    shiftOut(data, clock, LSBFIRST, c);
    shiftOut(data, clock, LSBFIRST, c != 0 ? 1 : 0);
  }

  digitalWrite(strobe, HIGH);
  index = ++index % (scrollLength << 1);
  return index == 0;
}

void buttons()
{
  uint8_t promptText[] =
  {
    /*P*/ /*r*/ /*E*/ /*S*/ /*S*/ /* */ /* */ /* */
    0x73, 0x50, 0x79, 0x6d, 0x6d, 0x00, 0x00, 0x00,
    /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    /*b*/ /*u*/ /*t*/ /*t*/ /*o*/ /*n*/ /*S*/ /* */
    0x7c, 0x1c, 0x78, 0x78, 0x5c, 0x54, 0x6d, 0x00,
    /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  };
  static uint8_t block = 0;
  uint8_t textStartPos = (block / 4) << 3;

  for (uint8_t position = 0; position < 8; position++)
  {
    sendCommand(0x44);
    digitalWrite(strobe, LOW);
    shiftOut(data, clock, LSBFIRST, 0xC0 + (position << 1));
    shiftOut(data, clock, LSBFIRST, promptText[textStartPos + position]);
    digitalWrite(strobe, HIGH);
  }

  block = (block + 1) % 16;
  uint8_t buttons = readButtons();

  for (uint8_t position = 0; position < 8; position++)
  {
    uint8_t mask = 0x1 << position;
    setLed(buttons & mask ? 1 : 0, position);
  }
}

uint8_t readButtons(void)
{
  uint8_t buttons = 0;
  digitalWrite(strobe, LOW);
  shiftOut(data, clock, LSBFIRST, 0x42);
  pinMode(data, INPUT);

  for (uint8_t i = 0; i < 4; i++)
  {
    uint8_t v = shiftIn(data, clock, LSBFIRST) << i;
    buttons |= v;
  }

  pinMode(data, OUTPUT);
  digitalWrite(strobe, HIGH);
  return buttons;
}

void setLed(uint8_t value, uint8_t position)
{
  pinMode(data, OUTPUT);
  sendCommand(0x44);
  digitalWrite(strobe, LOW);
  shiftOut(data, clock, LSBFIRST, 0xC1 + (position << 1));
  shiftOut(data, clock, LSBFIRST, value);
  digitalWrite(strobe, HIGH);
}

 

 

Bình luận

Không có sản phẩm nào trong giỏ hàng của bạn

Không có sản phẩm nào trong giỏ hàng của bạn

LINH KIỆN ĐIỆN TỬ ĐỨC HUY (29A BÙI XUÂN PHÁI)
Hotline 0942954739
LINH KIỆN ĐIỆN TỬ ĐỨC HUY (29A BÙI XUÂN PHÁI)