SC75823 13-Segment LCD Display

 Author:   Posted on:   Updated on:  2017-10-29T13:25:06Z
SC75823 is an LCD controller IC that is able to drive up to 156 segments. It is a 5V device that gets display data via serial bus. I found it in an auto CD player's front panel with 8 x 13 segment character LCD. I couldn't find an Arduino compatible library for it so I wrote one.

The controller only supports writing data to it. There is no key input support like other front panel ICs that can control a display and read pressed keys. The panel I'm using had each key connected in series with a different resistor and the main processor read pressed key by analog read value. Since some keys didn't work anymore, I cut the PCB and removed extra parts, keeping only the LCD panel, its backlight and the controller.

The communication protocol is probably Sanyo CCB (computer control bus), somewhat similar to SPI (it uses clock, data and chip enable signals). The controller has a pin INH that when LOW turns off the display. The library supports turning display off via this pin if connected or using software command.
Arduino SC75823 13-Segment LCD Display
The backlight is either red or blue (in the photo both LEDs are on making it look purple). There's nothing to discuss about pin mappings to panel connector, because the chances you'll have the exact front panel like me are very low. If you found a similar display with the same controller, use the datasheet and a continuity tester to identify relevant pins.

Here's an example sketch that makes use of the library:
#include <sc75823.h>

#define sc_clk    9
#define sc_data   7
#define sc_ce     8

SC75823 lcd1(sc_clk, sc_data, sc_ce);

void setup() {
  // put your setup code here, to run once:

  lcd1.init();
}

void loop() {
  // put your main code here, to run repeatedly:

  int i = 0;
  while (i < 16) {
    lcd1.clearBuffer();
    
    char *c = "SC75823 TEST 1234567890";
    lcd1.putString(c + i);
    lcd1.putSmallDigit(i % 16);
    
    lcd1.setSignal(i % 5 - 1);
    
    lcd1.setIndicator(SC75823_MP3);
    
    byte mask = 0x00;
    bitSet(mask, i % 6);
    lcd1.setSmallDisc(1, mask);
    lcd1.setBigDisc(1, mask);
    lcd1.setInnerDisc(1, mask);

    lcd1.writeBuffer();

    delay(1000);
    i++;
  };
  delay(1000);
}
To actually display anything on LCD, don't forget to call writeBuffer() after setting characters or indicators. The SC75823 object can be created with 3 parameters (Clock, Data and CE pins) or 4 parameters (the forth being INH pin number, if used).

Currently, the library implements only A-Z and 0-9 characters. Refer to the below illustration to find out how to create other characters (add elements to sc_font[] maintaining ASCII code correlation).

Arduino SC75823 functions and segments
SC75823 functions and segments
The code and datasheet can be downloaded from GitHub.

No comments :

Post a Comment

Please read the comments policy before posting.