Neotech NT7086 display and arduino?

I found a couple of these older looking dot matrix LCDs in some electronic logbooks that didnt work. it was a 14 pin connector, so i figured why not try it out. i found the pinout of each pin using the chips that were on board, but i don`t know where to go from here, or if i should even bother.

the display was made by or for hantronix, and they have a touch layer that could be used as well. each display has 7 of the NT7086PQ chips on it, a 74HC74D, a 74HC40103D, and an LM324. it was originally connected via a flat flex cable, but it had a convenient place for headers to plug it into a breadboard.

the 74HC40103D is an 8-bit synchronous binary down counter: http://www.nxp.com/documents/data_sheet/74HC40103.pdf
the 74HC74D is a Dual D-type flip-flop: http://www.mouser.com/ds/2/302/74HC_HCT74-225071.pdf
the Neotech chips are LCD display drivers: http://www.crystalfontz.com/controllers/NT7086.pdf

upon inspecting the physical properties of the display I can see there are the rubber/carbon edge contacts on two sides and a ribbon on one end. The pinout i figured out is:

14 is GND
13 is base on SOT23 transistor     (connected to 12 on parent board)
12 collector on a SOT23 transistor
11 gets pulled low at some point (pulled low on parent board)
10 is power
9 is cl2          (unactive high?) (on one set of neotech chips, assuming the edge contact drivers)
8 Clock input (74HC40103D)
7 does nothing
6 is d4 on one chip?
5 is display off  (active low)
4 is d4
3 is d3
2 is d2
1 is d1

So i would appreciate any input people have. I would ideally like to drive this using an arduino/atmega, and although i have not read the neotech datasheet to much depth it would appear to work similar to the popular parallel displays, but maybe with different syntaxes.

so is this a possible thing, or is it a fruitless endeavor?
thanks in advance.

Picture of Neotech NT7086 display and arduino?
sort by: active | newest | oldest

Better try and find Hantronix notes than attempt to rebuild the interface from scratch.

zack247 (author)  steveastrouk3 years ago

ok, so i had thought i looked for the datasheets before and failed, but apparently not.

it is a parallel display, but im not totally sure how to write to it using an arduino. I know if i touch pin 8 (data latch) with my finger the display scrolls until i remove my finger, but other than that, all i can see is either black or lines. im guessing the lcd library for the arduino may not be compatible with this display, but thats okay. if i have to, i can write a library.

but im not sure what it is i need to do to get things displaying on this. maybe you have some ideas? the datasheets are here:

http://www.jameco.com/Jameco/Products/ProdDS/21554...

the above datasheet lists all sorts of characteristics and the sort, the one below only lists things like the pinout.

http://www.hantronix.com/files/data/12784861343224...

Its a video display. There is a timing diagram in the Jameco datasheet that shows what you have to do to display data, and its not for the faint hearted, or possibly for the limited fire power the Arduino can supply.

Steve

zack247 (author)  steveastrouk3 years ago

darn. If I don't recycle it, what is something I could do with this LCD? Or what do you suggest I try and use to interface with it?

I'd start by seeing if I can draw something on it, using the timing diagram to get the signals correct. You assert the "frame" line, then clock 4 bit nibbles to the display by presenting data on D0-D3, and pulsing the CP line. Every 320 data writes, you pulse load. Every 80 loads, you start again with the Frame line.

See what the Arduino can do, but I'd prefer an ARM like the Pi or Mbed personally

zack247 (author)  steveastrouk3 years ago

For the data on d0-3, how would I go about presenting it? Would the liquid crystal library have hints for me?

Probably not. The LCD library is IIRC, just for alpha-numeric LCDs, on this thing you'l have to work out how to write individual characters from each pixel in them

zack247 (author)  steveastrouk3 years ago

sorry for digging up old dirt, but i am completely lost here. ive been busy, so i havent gotten to muck around with this a lot, but i am having a really hard time understanding what order to do things in and how long to do it. all i have gathered is that the units appear to be in nanoseconds.

i dont mean to be a bother, but, please help?

Minimum periods are nanoseconds. Bit banging in the sequence I mentioned should get you something.

zack247 (author)  steveastrouk3 years ago

i have returned to messing with this LCD and I have gotten some results. I can get vertical lines on the display depending on high or low inputs on d0-d3, but whenever I try to do horizontal lines, I get nothing. I have to keep the Frame line pulled high until the next cycle, or nothing appears on the display, but that is not how the datasheet says i should be doing it.

but the part that is baffling me is that when i do a function dependent on the supposed line on the screen (say, between lines 20 and 30 fill in all of the pixels horizontally), instead of drawing my image on the lines, it flashes the entire display to whatever pattern I had chosen for frames 20-30, or at least that is how it would seem. I originally tried using the i variable to do this, and the "line" variable was just a sad attempt at making it work. setting the "i" variable's upper limit in the for loop to 80 as you suggested before didnt change the results. im not asking you to pick apart my code or to do my work for me, but maybe you can see something obvious that I am completely missing?

the code for displaying vertical lines on the screen at a 1 pixel pitch looks like this, and it works:

void loop(){
digitalWrite(frame, HIGH);
for(int i=0; i!=240; i++){
digitalWrite(load, HIGH);
digitalWrite(load, LOW);
for(int j=0; j!=80; j++){
digitalWrite(d3, 1);
digitalWrite(d2, 0);
digitalWrite(d1, 1);
digitalWrite(d0, 0);

digitalWrite(cp, HIGH);
digitalWrite(cp, LOW);

}
}
digitalWrite(frame, LOW);
}

my attempted horizontal line code looks like this, and its not drawing it on horizontal lines, but rather it flashes the screen like each "line" is a full screen frame:

void loop(){
digitalWrite(frame, HIGH);
for(int i=0; i!=240; i++){
digitalWrite(load, HIGH);
digitalWrite(load, LOW);
for(int j=0; j!=80; j++){
if(line>30 && line<60){
digitalWrite(d3, 1);
digitalWrite(d2, 0);
digitalWrite(d1, 1);
digitalWrite(d0, 0);
}
else{
digitalWrite(d3, 0);
digitalWrite(d2, 0);
digitalWrite(d1, 0);
digitalWrite(d0, 0);
}
digitalWrite(cp, HIGH);
digitalWrite(cp, LOW);

}
line=line++;
if(line==240){
line=0;
}
}
digitalWrite(frame, LOW);
}

i have to be missing something obvious here.
thank you in advance for looking over this, if you do!

I have LCD display (RG320240A-FHW-V) with 7 controllers NT7086 and 14 pins connections as well as your display. I tried your codes for displaying vertical and horizontal lines on the screen. I have the same result as you. Before that I tried some own code. First without succes and then only vertical lines with similar principle as you. I would like to ask if you solved the problem? Thanks

zack247 (author)  stanislav.ludva2 years ago

im afraid I have had no luck with making it work. I'm not sure if the arduino isn't fast enough, or if I'm missing something completely.

FleckK zack2471 year ago

Hey, dunno if you or someone else still needs this, but, there is one guy who wrote code for atmega328 and similar (actually, clone for NT7086) LCD drivers:
http://kimboricha.blogspot.kr/2016/01/ocular-og168...
The problem is that you can't have much bigger resolution as atmega328 has 2KB RAM, means, around 160x99 is max you can get. I have code for stm32f103 (arm-gcc/makefile) if anyone is interested. Drives my 160x160 LCD OK!