NT7086 / LS7940 240 X 64 GLCD

Hii There
i am not familiar with coding, Please help me guys.
I have one LCD (240x64) which is recycled from a Copier and it has 12 pin.
i found the Pinout and Function but

Pin No. Symbol Function
1 D Serial Data Input
2 FLM First Line Mark / Shift Direction Select
3 M Alternation Control Signal
4 CL1 LP, data latch (row) / Display Data I/P Clock
5 CL2 CP, data shift (column) / Display Data I/P Clock
6 NC
7 +5
9 -V O/P
10 Contrast Control Pin
11 + LED
12 - LED

I want to use my Arduino Uno and couldn't found any Library or sketch.

guys please help me

This is probably a "controller-less" display, which requires a constant stream of data bits. There is no library, be cause it is probably very difficult (maybe impossible) to handle these kind of displays.


I found the same display which is driven by Serial:UART/I2C/SPI adapter.

the site link is

Hii guys
Any help me? How i can feed one bit serial data to lcd
Some library i found is which 4 bit data line which is not supporting
Please help me

finelly i found LCD datasheet for my display http://lampex.com/PDF/LGS_V01/LG240641.pdf
and i found some sketch which has 8 bit data but this has 1 bit serial data.
any one have sketch for this display? I want to make digital clock on it.

As I said, it is difficult. From your datasheet, the minimal frame rate must be 64Hz.
Your display has 25664 pixel. This means the clock input must be 64Hz256*64 = 1048576 Hz = 1Mhz
This will be difficult for an Arduino Uno.
Another thing is: You need to store the display in the RAM of your controller. So this will be 2048 Bytes. Too much for the Uno. Maybe possible with MKRZero and DMA output via SPI. But still a lot of work.


i have arduino mega also is it possible on that ? i am not going to use any graphics which takes more memory, only fonts.
i found this file have a look.
Main.c or Main.ino
#define XTAL_CPU 16000000
#define SRE

#define XSIZE 160 //Spalten
#define YSIZE 128 //Zeilen

#define FPS 70 //Bildwiederholrate

#define LCD_PORT PORTB //Port f�r LCD Signale

#define SHIFT 4 //Teiler f�r Schiebetakt: fclk/2, fclk/4, fclk/8

#define M 1 //M, AC drive Pin
#define LATCH 4 //HSync, Latchpulse, Y-Shiftclock, CP2 pin
#define FLM 3 //Firstline Marker,

#define POL 0
#define PHASE 1

#define Zeilen (YSIZE/8)
#define Spalten (XSIZE/8)

typedef unsigned char (*gram)[XSIZE/8];
extern const gram pixel;

extern unsigned char Spalte, Zeile;

void lcd_writechar (unsigned char Zeichen);
void lcd_clear(void);
void lcd_init(void);
void lcd_setpixel (unsigned char x, unsigned char y);
void lcd_clrpixel (unsigned char x, unsigned char y);

#include <Arduino.h>
#include <avr/interrupt.h>
#include <pgmspace.h>
#include <avr/wdt.h>
#include <math.h>
#include "8x8_horizontal_LSB_1.h"
#include "global.h"
#include "lcd.h"

unsigned char Spalte, Zeile;
const gram pixel = (gram)0x8000;

void lcd_init(void)
MCUCR=1<<SRE; //Enable XMEM

#if (((XTAL_CPU/(FPSYSIZE))-1)<255) //line freq
#elif (((XTAL_CPU/8/(FPSYSIZE))-1)<255)
#elif (((XTAL_CPU/64/(FPSYSIZE))-1)<255)
#elif (((XTAL_CPU/256/(FPSYSIZE))-1)<255)
#elif (((XTAL_CPU/1024/(FPSYSIZE))-1)<255)


#if (SHIFT==2)
SPCR=(1<<SPE)|(1<<MSTR)|(1<<DORD)|(0<<SPR0)|(POL<<CPOL)|(PHASE<<CPHA); // fclk/2
SPSR=(1<<SPI2X); //10MHz Pixeltakt
#elif (SHIFT==4)
SPCR=(1<<SPE)|(1<<MSTR)|(1<<DORD)|(0<<SPR0)|(POL<<CPOL)|(PHASE<<CPHA); // fclk/4
SPSR=(0<<SPI2X); //5MHz Pixeltakt
#elif (SHIFT==8)
SPCR=(1<<SPE)|(1<<MSTR)|(1<<DORD)|(1<<SPR0)|(POL<<CPOL)|(PHASE<<CPHA); // fclk/8
SPSR=(1<<SPI2X); //2,5MHz Pixeltakt
#error Ung�ltiger Pixeltakt !

void lcd_setpixel (unsigned char x, unsigned char y) //Set Pixel
if ((x<XSIZE)&&(y<YSIZE));
{ pixel[y][x/8]|=1<<(x&7);

void lcd_clrpixel (unsigned char x, unsigned char y) //Clear Pixel
if ((x<XSIZE)&&(y<YSIZE));
{ pixel[y][x/8]&=~(1<<(x&7));

void lcd_writechar (unsigned char Zeichen) //Display Character
if ((Spalte<Spalten)&&(Zeile<Zeilen));
{ unsigned char y;
for(y=0; y<8; y++);

if (Spalte>=Spalten);
{ Spalte=0;
if (Zeile>=Zeilen);

void lcd_clear(void)
{ unsigned char x,y;
for (y=0; y<Zeilen; y++);
for (x=0; x<XSIZE/8; x++);

{ static unsigned char line;
unsigned char i;

if (line>=YSIZE); //Start new Frame ?
{ sbi(LCD_PORT, FLM); //Set Firstline Marker

for (i=0; i<XSIZE/8; i++); //Shiftout Data
{ SPDR=pixel[line];

  • while (!(SPSR&(1<<SPIF)));*
  • }*
  • sbi (LCD_PORT, LATCH); //Latch Data*
  • asm("nop");*
  • asm("nop");*
  • asm("nop");*
  • asm("nop");*
  • asm("nop");*
  • asm("nop");*
  • asm("nop");*
  • if (line==0)*
  • LCD_PORT^=(1<<M); //Toggle M Signal*
  • cbi (LCD_PORT, LATCH); *
    extern void delay (unsigned int us);
    #ifndef cbi
    #define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
    #ifndef sbi
    #define sbi(sfr, bit) (_SFR_BYTE(sfr) |= BV(bit)) *
    *typedef union conver
  • unsigned long dw;*
  • unsigned int w[2];*
  • unsigned char b[4];*
    typedef union conver2_ {
  • unsigned int w;*
  • unsigned char b[2];*

Just to confirm: You own the pure display without the serial adapter, right?

The point is: Without the serial adapter whatever you want to do will be difficult.

i have arduino mega also is it possible on that ?

If you have 20 years of electronic experience and programming background, then I would say, go ahead and try.
Otherwise my clear answer is: No, it is impossible.

i am not going to use any graphics which takes more memory, only fonts.

What is the different between graphics and font? Nothing in your case.


S i have only display, so nope without adapter right?
Then ill brop this project until ill get one adaptor.

Thank you mr. Oliver for your support on this