Testing Old Unknown SSD Display Using Arduino

In the heap of old junk I came across the remains of some old audio/video equipment and I had a desire to test the display which had the marking "BC-M06233G", "PQ060B", "HW-1" and "94HB", but unfortunately my search for datasheets on the Internet yielded nothing.


I found on the board a 5-volt power bus and making sure there is no short circuit on it (due to the fact that the board has mechanical damage) so I powered the circuit from a 5-volt power supply to see at least something on this indicator and evaluate its general condition.


I had to manually draw a driver circuit from which it became clear that the indicator LEDs are connected in a circuit with a common anode and to light all segments of each digit, it is enough to connect all the cathodes of the segments (A, B, C, D, E, F, G, DP) to the ground.


The display driver consists of 5 transistor switches for each group of LEDs, through which dynamic indication is implemented, therefore, in order not to overload the driver resistors with high current, I decided to emulate this process using arduino and check the entire bunch.

// Dynamic indication emulation

// A,B,C,D,E,F,G,DP and other LEDs connected to the GND via 27 ohm resistors (ON)

   int ledGroup0Pin   = 2;   // Pin D2 => 2 dividing in the center and 4 corner LEDs
   int ledGroup1Pin   = 3;   // Pin D3 => 1st digit and decimal point
   int ledGroup2Pin   = 4;   // Pin D4 => 2nd digit and decimal point
   int ledGroup3Pin   = 5;   // Pin D5 => 3rd digit and decimal point
   int ledGroup4Pin   = 6;   // Pin D6 => 4th digit and decimal point

   int ledGroupDelay = 4;   // Setting the quality of the glow (groups switching speed)

void setup() {

   pinMode(ledGroup0Pin, OUTPUT); digitalWrite (ledGroup0Pin, HIGH);  // LEDs Group 0 OFF
   pinMode(ledGroup1Pin, OUTPUT); digitalWrite (ledGroup1Pin, HIGH);  // LEDs Group 1 OFF
   pinMode(ledGroup2Pin, OUTPUT); digitalWrite (ledGroup2Pin, HIGH);  // LEDs Group 2 OFF
   pinMode(ledGroup3Pin, OUTPUT); digitalWrite (ledGroup3Pin, HIGH);  // LEDs Group 3 OFF
   pinMode(ledGroup4Pin, OUTPUT); digitalWrite (ledGroup4Pin, HIGH);  // LEDs Group 4 OFF


void loop() {  // LEDs Group ON (LOW) => Delay => LEDs Group OFF (HIGH)

   digitalWrite (ledGroup0Pin, LOW); delay (ledGroupDelay); digitalWrite (ledGroup0Pin, HIGH);
   digitalWrite (ledGroup1Pin, LOW); delay (ledGroupDelay); digitalWrite (ledGroup1Pin, HIGH);
   digitalWrite (ledGroup2Pin, LOW); delay (ledGroupDelay); digitalWrite (ledGroup2Pin, HIGH);
   digitalWrite (ledGroup3Pin, LOW); delay (ledGroupDelay); digitalWrite (ledGroup3Pin, HIGH);
   digitalWrite (ledGroup4Pin, LOW); delay (ledGroupDelay); digitalWrite (ledGroup4Pin, HIGH);

}  // Arduino IDE 1.8.4

The main goal of the program is to switch groups of LEDs with a certain delay in about the same way as the native processor did whose data bus is currently disconnected. Using this approach, I was able to test the functionality of both - the display driver and the display.


Now it’s become clear that the display is faulty while the driver is working fine. This could be done without arduino, individually lighting each group of LEDs individually, connecting the base resistors of each transistor to the ground - but in dynamic mode more interesting.


It remains to disassemble the indicator and see what happened inside. The photo shows that some LEDs do not light due to the fact that they are damaged and the main difficulty is that they are not soldered in the form of discrete elements and therefore it can not be repaired.