LetsDriveLCD [-4]: LUM-115HML300

Actually this screen has been lying on my desk for a long time, I got it in Hong Kong. Actually it is exactly the screen used in the Hong Kong Metro. I got two of them, one has some LEDs knocked off, the other is intact. The screen is self-scanned, means that it can be controlled by slower MCUs without introducing lot of flickering.

Here are some information about the screen.

Basic Information

  • Model: LUM-115HML300
  • Type: LED Graphics Dot-Matrix
  • Resolution: 48 x 24
  • Color: Red+Green, no grey scale
  • Controller: ROHM proprietary
  • 尺寸:192mm x 96mm

Driving Information

Pinout:

CN1:

  1. RamSelect(AB)
  2. A4
  3. A3
  4. A2
  5. A1
  6. A0
  7. GND
  8. Green
  9. Clock
  10. WriteEnable
  11. Red
  12. AddressEnable
  13. DispEnable

CN3:

  1. GND
  2. VLED
  3. VLED
  4. GNDLED
  5. GNDLED
  6. VDD

Code example:

void LED_WriteScreen()
{
  int i, j;
  for (i = 0; i < 24; i ++) {
    if ((i & 0x01) != 0) {LED_A0_HIGH();} else {LED_A0_LOW();}
    if ((i & 0x02) != 0) {LED_A1_HIGH();} else {LED_A1_LOW();}
    if ((i & 0x04) != 0) {LED_A2_HIGH();} else {LED_A2_LOW();}
    if ((i & 0x08) != 0) {LED_A3_HIGH();} else {LED_A3_LOW();}
    if ((i & 0x10) != 0) {LED_A4_HIGH();} else {LED_A4_LOW();}
    for (j = 0; j < 48; j++) {
      LED_CLK_LOW();
      if (dispBuffer_G[i*6 + j/8] & (0x01 << (j % 8))) LED_GR_HIGH(); else LED_GR_LOW();
      if (dispBuffer_R[i*6 + j/8] & (0x01 << (j % 8))) LED_RD_HIGH(); else LED_RD_LOW();
      LED_CLK_HIGH();
    }
    LED_CLK_LOW();
    Delay();
    LED_AE_HIGH();
    Delay();
    LED_WE_HIGH();
    Delay();
    LED_WE_LOW();
    Delay();
    LED_AE_LOW();
    Delay();
  }
}

Leave a Reply