LCD HLM-6244: is it possible?

Hi all,
I want to use an LCD display (HLM-6244) taken from an old printer… it is a 240x64 graphical display and seems to be cool :smiley:
The display DWG is
In attach there is a picture of it!

I’ve tried to search for its datasheet with no luck… =(

Display has 10 pins and is not backlighted:
1: D
2: FLM
3: N.C.
4: LP
5: SCP
6: GND
7: VDD
8: VSS
9: VEE
10: V0

I’ve also found that is an STN CLD but I cannot find any example to drive it from an Arduino UNO…
Can someone help me please??

Many thanks in advance!!

Hi all,
I’ve found a SPIN/PASM application (that I don’t know):
This is the only one code that I’ve found but unfortunately I’m not able to understand or translate for Arduino. Has someone the knowledge to do it?!
For everyone that are interested there are also another people that have posted some schema that can be useful to understand something about this display here:

This display uses following shift registers: to drove rows and to drive columns.

I’ve tried a lot of different combinations, also using shiftOut function…

int DATA_PIN = 2; // Rows?
int FLM_PIN  = 3; // Cols?
int LP_PIN   = 4; // LP
int SCP_PIN  = 5; // Clock

void setup() 
  pinMode(DATA_PIN, OUTPUT); 
  pinMode(FLM_PIN, OUTPUT); 
  pinMode(LP_PIN, OUTPUT);
  pinMode(SCP_PIN, OUTPUT);

void loop() 

void disp()
  for (int col = 0; col < 240; col++) 
    digitalWrite(SCP_PIN, HIGH); // Clock up

    if (col%5==0) 
      digitalWrite(DATA_PIN, HIGH);
      digitalWrite(FLM_PIN, HIGH);
      digitalWrite(DATA_PIN, LOW);
      digitalWrite(FLM_PIN, LOW);
    digitalWrite(SCP_PIN, LOW); // Clock down
    if (col==0) digitalWrite(LP_PIN, LOW);

  digitalWrite(LP_PIN, HIGH);

This code produces a grid on display but it flicker and blinks… Anyway it looks like a grid (see attached image).

Please can someone help me?


Here is some guidance on translating that SPIN/PASM source to C++ for Arduino. Some of it's guesswork but probably correct.

  • Anything starting with ' is a comment so replace ' by //
  • Any code block beginning with PUB or PRI is a function declaration, so translate it to a C function
  • "outa[pin] := value" translates to "digitalWrite(pin, value);"
  • Otherwise, "v := e" translates to "v = e;"
  • It appears to use indentation to show where blocks end e.g. within if-statements, so you will have to add { and } at the start and end of those blocks
  • 'repeat' will need to be translated to a for-loop
  • $## where the # are hex digits translates to 0x##
  • "case e1 e2: st1 e3: st2 ... OTHER: sto" translates to "switch (e1) { e2: st1; break; e2: st2; break, ... break; default: sto; break; }"
  • and of course you need to terminate all statements with ; unless they already end with }

Hope this helps.

Hi dc42! First of all, many thanks!
I have translated something but I’ve two questions

  • I have some doubts about font translation… (file font_atari_demo)
  • There is a section that is in assembler… How can I translate it!!!
  • There are some syntax that I don’t know, for example “PUB main | c, z”… what are c and z?! How can I translate it? Also Arduino compiler told me that sub should return value… what value? c? z? both?!

I attach my half-translated version and I hope that you’ll help me :slight_smile:

Many thanks again!!
D (9.57 KB)

  1. Re the font table, try this:
const PROGMEM uint8_t *GetPtrToFontTable() {
	return fonttab;

const PROGMEM uint8_t fonttab[] = PROGMEM {

        B00000000,     // ........    $00
        B00000000,     // ........
        B00000000,     // ........
        B00011000,     // ...##...

I’ve put it in progmem to avoid using up too much RAM. You’ll need to use the usual progmem functions to access the font data.

  1. “repeat x from 0 to 32 step 2” should be translated to “for (int x = 0; x <= 32, x += 2) {” which isn’t quite what you did.

  2. In “PUB main2 | c” it looks to me that c is a parameter.

I haven’t time to translate the assembler right now, it looks like an optimized function to update the display. It might be simpler to write new code starting from the datasheet.

Hi, thanks for the suggestions.. Unfortunately I haven't enough competencies to translate entire library so I have to leave it for the moment... I've tried in the meantime to use shiftOut function without any success =( I can see only confused lines on this LCD.... Perhaps I've to buy or find another display, also with a controller inside!

Thanks again! D