LCD T6963c display

bump... no awnser :(

Sorry for the late reply … busy days :stuck_out_tongue:

Here we go :

#include <GDt6963c.h>

void setup()
{
      GLCD_Initalize(); // Initalize LCD
      GLCD_ClearText(); // Clear text area
      GLCD_ClearCG(); // Clear character generator area
      GLCD_ClearGraphic(); // Clear graphic area
      GLCD_TextGoTo(0,0);// set text coordinates
      GLCD_WriteString("Hello world !!! "); // write text
} 

void loop() {
      delay(1000);
      GLCD_TextGoTo(3,3);// set text coordinates
      GLCD_WriteString("AaAaAaA"); // write text

      delay(1000);
      GLCD_TextGoTo(3,3);// set text coordinates
      GLCD_WriteString("BbBbBbBb"); // write text
}

I love you :stuck_out_tongue:

not a good choice of words after stalking you for 2 days but WTH :stuck_out_tongue:

I have found out that i have two of this display :stuck_out_tongue: i found one in my basement during cleaning up :smiley:

My mega should arive tomorrow :stuck_out_tongue:

i got a warm fuzzy feeling (like chrismas And after ***) *ahum

Haha ;) ... No problem about the stalking, it's my pleasure to help you.

I don' know exactly how the ports are mapped on the mega, you'll probably have to change some stuff in the .h file, depending on the ports you want to use.

Here is the info i've used for the arduino duemilanove : http://www.arduino.cc/en/Reference/PortManipulation, and here is the info I have about the mega : http://arduino.cc/en/uploads/Main/arduino-mega-schematic.pdf

As you'll use a mega, you can simplify the code as you don't need to split the data into 2 port and you can use one full port. It's not necessary, but it's cleaner ? Tell me if you need some help to do that ...

++

I will ask you :smiley:
I’m still waiting for the mega.

Thanks btw, for all the info i will sum it up some day in my first post
with all the pictures and stuf like that
and than off course Credits to you!

I extended your update of the http://en.radzio.dxp.pl/t6963/ code to create a more versatile library. 1. Class T6963 (int horizontal pixels, int vertical pixels, int font width) 2. Font width for LCD is hardware controlled (ground it, or +5 VDC it), but the pin is still initialized. 3. For some reason my LCD doesn't need the Reset line hooked up. There is a hardware solution to the reset signal that eliminates one pin usage but it screws my disp up. 4. Use at your own risk, I know barely enough to submit this post, much less be trusted with libraries. 5. http://rbrsidedn1.googlecode.com/files/T6963_Lib-091026a.zip

Cool, nice work. It's much cleaner that way.

Thanks again ...

I’m strugling to get my display working with my mega. Power on on the display will show a large white rectangle. Poweirng on the arduino, the rectangle disappears and I can see a short flash of one line when the reset occurs. But then nothing.

I going to check if I get the right pins (allready converted for the mega)
on with a few leds.
Next thing will be to add some debug code → serial output to see what’s going on.

Nice i still have to try everything I just got the parts for mij power suply today <-----> still no mega :S have mailt the store so… i hope i will get a response!

:slight_smile: gonna try it today on my “normal” arduino

I'm strugling to get my display working with my mega. Power on on the display will show a large white rectangle. Poweirng on the arduino, the rectangle disappears and I can see a short flash of one line when the reset occurs. But then nothing.

Sounds like your LCD voltage is out of wack (big white rectangle), and your reset pin is being pulled low (it is an inverted input)

You are right the reset is being pulled low.
I used Gil’s code and tried to remove all the code for the second port (I had tried it before with that, but no luck either)

The beginning of my header file:

// data port
#define GLCD_DATA_PORT       PORTC
#define GLCD_DATA_PIN            PINC
#define GLCD_DATA_DDR            DDRC
//#define GLCD_DATA_SHIFT            <<0
//#define GLCD_DATA_RSHIFT            >>0
#define GLCD_DATA_MASK            0xFF


// control port
#define GLCD_CTRL_PORT            PORTA
#define GLCD_CTRL_PIN            PINA
#define GLCD_CTRL_DDR            DDRA
// control signals
#define GLCD_WR                        22
#define GLCD_RD                        23
#define GLCD_CE                        24
#define GLCD_CD                        25
#define GLCD_RESET                  26
#define GLCD_FS                        27
// display properties
#define GLCD_NUMBER_OF_LINES                        64
#define GLCD_PIXELS_PER_LINE                        128
#define GLCD_FONT_WIDTH                                  8

Of course I also changed the c file.

just modified the 22-27 to 0 - 5

Have done a lot off debugging and found something. My display is a 128x64 and I think the memory offsets must be set different.

definitely have to change the resolution settings. Also you need to look at the CGRAM location setting (look for command B00100010, set Offset Register). I boned that up in the library and didn't leave a method for changing it. My LCD has a 32Kb Eprom attached so I put the CG at 30-32kb, if you have a smaller one I assume it can't find the CG memory.

In the initial code I couldn't get the section for 8 vs 6 bit font to work correctly either and ended up hard wiring it.

yes, my last problem is the cgram section which goes wrong (at least I think it's the last problem ;) ). I don't have a font pin so also I don't know which font I need to use. Have to search on my computer to see if I still have the data sheets laying around.

The

My LCD has a 32Kb Eprom attached

was my eureka moment ::). I can just look at the ic's and google them, then I don't need to quess any more.

I added a memory callout to the class file, cleaned up some other stuff and stated being subversive. Added cursor handlers as well. http://code.google.com/p/rbrsidedn1/

Just looked at your code for the memory I have to devide by 2 and than substract 1. That's why there was 15 hard coded. My lcd has 64KB (lot's of memory for a small display) so i should need 31.

yea that works, the newer version has the memory as a parameter in the class call.

Did you guys manage to connect the t6963c to an Arduino Mega? Im having problems connecting it, i caqnt get the whole port thing right. need help please. Thanks

First of all: thanks for writing the T6963 library! (I'm using this library: http://code.google.com/p/arduino-t6963c/)

I am trying to connect my GLCD to my Arduino Uno. It's a Picvue PVG121202 128x128 pixels GLCD with the T6963C chip which I bought 7 years ago (Datasheet). My wiring seems to be correct: When I reset the Arduino it displays a black line, then some garbage and when the Arduino has started its program the display goes blank (this all takes about a second). I did not connect the reset pin as it seems to work without connecting it. But I cannot display anything. No text, no individual pixels. On the display's PCB there is a Winbond W2465S-70LL. According to its datasheet this must be an 8 KB RAM chip.

I have tried debugging and came up with this code:

#include "T6963.h"
T6963 LCD(128, 128, 8, 8);

void setup(){
  Serial.begin(9600);
  Serial.print("TH: ");
  Serial.println(LCD.getTH());
  Serial.print("GH: ");
  Serial.println(LCD.getGH());
  Serial.print("TextRows: ");
  Serial.println((int)LCD.getTextRows());
  Serial.print("TextCols: ");
  Serial.println((int)LCD.getTextCols());
  
  LCD.Initialize();
  
  Serial.println("Initialized");
  
  LCD.TextGoTo(0, 0);
  LCD.writeString("Hello World!");  
  
  Serial.print("Check status: ");
  Serial.println((int)LCD.checkStatus());
  
  pinMode(13, OUTPUT); // Blink LED13 to check if program is running
}

void loop(){
  digitalWrite(13, HIGH);

  Serial.print("Check status before: ");
  Serial.println((int)LCD.checkStatus());
  
  LCD.clearGraphic();
  LCD.writePixel(20, 20, 1);
  LCD.writePixel(21, 20, 1);
  
  LCD.setPixel(5, 10);
  LCD.setPixel(6, 10);
  LCD.setPixel(7, 10);
  
  Serial.print("Check status after: ");
  Serial.println((int)LCD.checkStatus());
  
  delay(1000);
  digitalWrite(13, LOW);
  delay(1000);
}

Here is the output:

TH: 0
GH: 256
TextRows: 16
TextCols: 16
Initialized
Check status: 43
Check status before: 43
Check status after: 175
Check status before: 175
Check status after: 175
Check status before: 175
Check status after: 175
Check status before: 175
Check status after: 47
Check status before: 175
Check status after: 47
Check status before: 47
Check status after: 47
Check status before: 47
Check status after: 47
Check status before: 47
Check status after: 175
Check status before: 47
Check status after: 175
Check status before: 175
Check status after: 175
Check status before: 175
Check status after: 175
Check status before: 175
Check status after: 47
Check status before: 47
Check status after: 47
Check status before: 47
Check status after: 47
Check status before: 47
Check status after: 175
Check status before: 47
Check status after: 175
...

The status code seems to be correct, last 2 bits are always 1. But the display stays blank. I know that the contrast voltage is correct because I can see the garbage when the display is initialized.

Any suggestions?

So the controls pins connect to the analog pins and digital pins are 2 through 9? I picked up a few t6963 displays from work and im playing with them myself.

Is there a way to print graphics and individual pixels to the screen as well? I plan to try and make a type of scrolling line graph with this if I can get it going. It worked with the other GLCD Library for the other chip (cant think of it atm)

Good work guys, and thanks!