Graphic lc displays

Go To Last Post
16 posts / 0 new
Author
Message
#1
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Hello guys (and girls).

Have a small problem, i know how to control a lcd matrix module by simulating a HD44780 hitachi with a atmega.

Now i have a project using a 240x128 pixels graphic lc display (see picture).
But i do not now how to controll it. Any one have a idea.
Is there a certian chip like the hitachi that is normally used to control a graphic display that i can simulate with my mega.

Many thanks for the help.

Attachment(s): 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

oeps sorry for the double pic

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Get the datasheet for the lcd controller chip. Is it a Toshiba T6963?

Imagecraft compiler user

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I'm not sure megas are fast enough to directly control a display like that. You could do it with atmel's integrated FPGA/microcontroller.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Oh, I know you can control it with AVR chip as best as possible & need not use FPGA... .
I think working with LCD graphic is easier that work with other one.
u should define your character , manage it.

you can use these font for your work.

const unsigned char table32[] ={0b00000000,0b00000000,0b00000000,0b00000000,0b00000000};
const unsigned char table33[] ={0b00000000,0b00000000,0b10111110,0b00000000,0b00000000};
const unsigned char table34[] ={0b00000000,0b00001110,0b00000000,0b00001110,0b00000000};
const unsigned char table35[] ={0b00101000,0b10111110,0b00101000,0b11111110,0b11111110};
const unsigned char table36[] ={0b01001000,0b01010100,0b11111110,0b01010100,0b00100100};
const unsigned char table37[] ={0b01000110,0b00100110,0b00010000,0b11001000,0b11000100};
const unsigned char table38[] ={0b01101100,0b10010010,0b10101010,0b01000100,0b10100000};
const unsigned char table39[] ={0b00000000,0b00001010,0b00000110,0b00000000,0b00000000};
const unsigned char table41[] ={0b00000000,0b10000010,0b01000100,0b00111000,0b00000000};
const unsigned char table40[] ={0b00000000,0b00111000,0b01000100,0b10000010,0b00000000};
const unsigned char table42[] ={0b00101000,0b00010000,0b01111100,0b00010000,0b00101000};
const unsigned char table43[] ={0b00010000,0b00010000,0b01111100,0b00010000,0b00000000};
const unsigned char table44[] ={0b00000000,0b10100000,0b01100000,0b00000000,0b00000000};
const unsigned char table45[] ={0b00010000,0b00010000,0b00010000,0b00010000,0b00010000};
const unsigned char table46[] ={0b01000000,0b00000000,0b00000000,0b00000000,0b00000000};
const unsigned char table47[] ={0b01000000,0b00100000,0b00010000,0b00001000,0b00000100};
const unsigned char table48[] = {0b01111100,0b10100010,0b10010010,0b10001010,0b01111100};
const unsigned char table49[] = {0b00000000,0b10000010,0b11111110,0b10000000,0b00000000};
const unsigned char table50[] = {0b10000100,0b11000010,0b10100010,0b10010010,0b10001100};
const unsigned char table51[] = {0b01000010,0b10000010,0b10001010,0b10010110,0b01100010};
const unsigned char table52[] = {0b00110000,0b00101000,0b00100100,0b11111110,0b00100000};
const unsigned char table53[] = {0b01001110,0b10001010,0b10001010,0b10001010,0b01111010};
const unsigned char table54[] = {0b01111000,0b10010100,0b10010010,0b10010010,0b01100000};
const unsigned char table55[] = {0b00000010,0b11100010,0b00010010,0b00001010,0b00000110};
const unsigned char table56[] = {0b01101100,0b10010010,0b10010010,0b10010010,0b01101100};
const unsigned char table57[] = {0b00001100,0b10010010,0b10010010,0b01010010,0b00111100};
const unsigned char table58[] = {0b00100100,0b00000000,0b00000000};
const unsigned char table59[] = {0b00000000,0b10101100,0b01101100,0b00000000,0b00000000};
const unsigned char table60[] = {0b00010000,0b00101000,0b01000100,0b10000010,0b00000000};
const unsigned char table61[] = {0b00101000,0b00101000,0b00101000,0b00101000,0b00101000};
const unsigned char table62[] = {0b00000000,0b10000010,0b01000100,0b00101000,0b00010000};
const unsigned char table63[] = {0b00001100,0b00010010,0b10100010,0b00000010,0b00000100};
const unsigned char table64[] = {0b01100100,0b10010010,0b11110010,0b10000010,0b01111100};
const unsigned char table65[] = {0b11111100,0b00100010,0b00100010,0b00100010,0b11111100};
const unsigned char table66[] = {0b11111110,0b10010010,0b10010010,0b10010010,0b01101100};
const unsigned char table67[] = {0b01111100,0b10000010,0b10000010,0b10000010,0b01000100};
const unsigned char table68[] = {0b11111110,0b10000010,0b10000010,0b01000100,0b00111000};
const unsigned char table69[] = {0b11111110,0b10010010,0b10010010,0b10010010,0b10000010};
const unsigned char table70[] = {0b11111110,0b00010010,0b00010010,0b00010010,0b00000010};
const unsigned char table71[] = {0b01111100,0b10000010,0b10010010,0b10010010,0b01110100};
const unsigned char table72[] = {0b11111110,0b00010000,0b00010000,0b00010000,0b11111110};
const unsigned char table73[] = {0b00000000,0b10000010,0b11111110,0b10000010,0b00000000};
const unsigned char table74[] = {0b01000000,0b10000000,0b10000010,0b01111110,0b00000010};
const unsigned char table75[] = {0b11111110,0b00010000,0b00101000,0b01000100,0b10000010};
const unsigned char table76[] = {0b11111110,0b10000000,0b10000000,0b10000000,0b10000000};
const unsigned char table77[] = {0b11111110,0b00000100,0b00011000,0b00000100,0b11111110};
const unsigned char table78[] = {0b11111110,0b00001000,0b00010000,0b00100000,0b11111110};
const unsigned char table79[] = {0b01111100,0b10000010,0b10000010,0b10000010,0b01111100};
const unsigned char table80[] = {0b11111110,0b00010010,0b00010010,0b00010010,0b00001100};
const unsigned char table81[] = {0b01111100,0b10000010,0b10100010,0b01000010,0b10111100};
const unsigned char table82[] = {0b11111110,0b00010010,0b00110010,0b01010010,0b10001100};
const unsigned char table83[] = {0b10001100,0b10010010,0b10010010,0b10010010,0b01100010};
const unsigned char table84[] = {0b00000010,0b00000010,0b11111110,0b00000010,0b00000010};
const unsigned char table85[] = {0b01111110,0b10000000,0b10000000,0b10000000,0b01111110};
const unsigned char table86[] = {0b00111110,0b01000000,0b10000000,0b01000000,0b00111110};
const unsigned char table87[] = {0b01111110,0b10000000,0b01110000,0b10000000,0b01111110};
const unsigned char table88[] = {0b11000110,0b00101000,0b00010000,0b00101000,0b11000110};
const unsigned char table89[] = {0b00001110,0b00010000,0b11100000,0b00010000,0b00001110};
const unsigned char table90[] = {0b11000010,0b10100010,0b10010010,0b10001010,0b10000110};
const unsigned char table91[] = {0b11111110,0b10000010,0b10000010,0x00};
const unsigned char table92[] = {0b10000010,0b10000010,0b11111110};
const unsigned char tableALAMATTAAJOOB[] = {0x00,0b010111110,0x00};
const unsigned char table93[] = {0b00000000,0b10000010,0b10000010,0b11111110,0b00000000};
const unsigned char table94[] = {0b00001000,0b00000100,0b00000010,0b00000100,0b00001000};
const unsigned char table95[] = {0b10000000,0b10000000,0b10000000,0b10000000,0b10000000};
const unsigned char table96[] = {0b00000000,0b00000010,0b00000100,0b00001000,0b00000000};
const unsigned char table97[] = {0b01000000,0b10101000,0b10101000,0b10101000,0b11110000};
const unsigned char table98[] = {0b11111110,0b10010000,0b10001000,0b10001000,0b11110000};
const unsigned char table99[] = {0b01110000,0b10001000,0b10001000,0b10001000,0b01000000};
const unsigned char table100[] ={0b01110000,0b10001000,0b10001000,0b10010000,0b11111110};
const unsigned char table101[] = {0b01110000,0b10101000,0b10101000,0b10101000,0b00110000};
const unsigned char table102[] = {0b00010000,0b11111100,0b00010010,0b00010010,0b00000100};
const unsigned char table103[] = {0b00011000,0b10100100,0b10100100,0b10100100,0b01111100};
const unsigned char table104[] = {0b11111110,0b00010000,0b00001000,0b00001000,0b11110000};
const unsigned char table105[] = {0b00000000,0b10001000,0b11111010,0b10000000,0b00000000};

const unsigned char table106[] = {0b01000000,0b10000000,0b10010000,0b01111010,0b00000000};
const unsigned char table107[] = {0b11111110,0b00100000,0b01010000,0b10001000,0b00000000};
const unsigned char table108[] = {0b00000000,0b10000010,0b11111110,0b10000000,0b00000000};
const unsigned char table109[] = {0b11111000,0b00001000,0b11110000,0b00001000,0b11110000};
const unsigned char table110[] = {0b11111000,0b00001000,0b00001000,0b00001000,0b11110000};
const unsigned char table111[] = {0b01110000,0b10001000,0b10001000,0b10001000,0b01110000};
const unsigned char table112[] = {0b11111000,0b00101000,0b00101000,0b00101000,0b00010000};
const unsigned char table113[] = {0b00010000,0b00101000,0b00101000,0b00110000,0b11111000};
const unsigned char table114[] = {0b11111000,0b00010000,0b00001000,0b00001000,0b00010000};
const unsigned char table115[] = {0b10010000,0b10101000,0b10101000,0b10101000,0b01000000};
const unsigned char table116[] = {0b00001000,0b01111110,0b10001000,0b10000000,0b01000000};
const unsigned char table117[] = {0b01111000,0b10000000,0b10000000,0b01000000,0b11111000};
const unsigned char table118[] = {0b00111000,0b01000000,0b10000000,0b01000000,0b00111000};
const unsigned char table119[] = {0b01111000,0b10000000,0b01100000,0b10000000,0b01111000};
const unsigned char table120[] = {0b10001000,0b01010000,0b00100000,0b01010000,0b10001000};
const unsigned char table121[] = {0b00011000,0b10100000,0b10100000,0b10100000,0b01111000};
const unsigned char table122[] = {0b10001000,0b11001000,0b10101000,0b10011000,0b10001000};
const unsigned char table123[] = {0b00000000,0b00010000,0b01101100,0b10000001,0b00000000};
const unsigned char table124[] = {0b00000000,0b00000000,0b11111110,0b00000000,0b00000000};
const unsigned char table125[] = {0b00000000,0b10000010,0b01101100,0b00010000,0b00000000};
const unsigned char table126[] = {0b00010000,0b00010000,0b01010100,0b00111000,0b00010000};
const unsigned char table127[] = {0b00010000,0b00111000,0b01010100,0b00010000,0b00010000};

M.J.M.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

But the question is, is there an standard lcd controller like a t6963 or a ks0108 driving the lcd? If so, you must stuff the magic numbers into the controller to get it to behave as required.

Imagecraft compiler user

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

the Toshiba T6963 is promesing. I think that a atmega must be fast enough.
The display is used too display weather information and streaming mp3 stuff.
So it does not need to be super fast. Thanks for the info guys.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

A simple look at the data sheet provided at the vendor's pages revealed that it's indeed driven by a T6963.

...and to clear up a misconception: even a static display of data on a LCD display need quite some complex signal waveforms on dozens of lines, this is what outer_space meant when he mentioned the necessary speed of the controller.

Einstein was right: "Two things are unlimited: the universe and the human stupidity. But i'm not quite sure about the former..."

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Iin the datasheet i got from conrad they mention nothing about a T6963.
So i would like a link to the datasheet you found. Maybe it has intersting information.
Complex waveforms???. why that i have a 8 bit wide bus, i think i only need to send commands like when you sending commands to a lcd matrix module, an i saw some demo software that simulate Toshiba T6963. Nothing about complex waveforms.

what do you mean with complex waveforms?????

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Directly next to the picture of that display you saw at conrad.de, there are two links to english documents, something with "V1" and "V2" in them. The document with "V1" in the name clearly states that the display contains a T6963.

.re the "complex waveforms". I'm still thinking about a way to put it even more clear.

If all you have is just the plain LCD, that is, the piece of glass and dozens of connectors, you need those complex waveforms to generate the right black pixels at just the right place on the glass.

If you got an LCD display with an integrated controller (like the T6963), the above task of generating just the right signals is being performed by the built-in controller. In this case, all you have to provide is the ascii/graphic data via a standard protocol/electrical connection (=bus) to the integrated controller.

I hope this is clear now. You/your AVR send the data to be displayed. The builtin T6963 accepts that data, calculates the pixels to activate, and generates the "complex waveforms" to make that piece of glass show just what you wanted at the beginning.

Einstein was right: "Two things are unlimited: the universe and the human stupidity. But i'm not quite sure about the former..."

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Your correct about the link i only look to the V2 datasheet.
I also understand your idea of complexwaveforms.

Thanks for the info

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Quote:

what do you mean with complex waveforms?????

Look in the LCD part of the Mega169 datasheet, the diagrams for the waveforms and timing at various bias and duty cycle settings.

Now multiply that waveform, for one LCD segment, and multiply it by the number of pixels on your display.

Lee

You can put lipstick on a pig, but it is still a pig.

I've never met a pig I didn't like, as long as you have some salt and pepper.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Lee, as DO1THL discover the lcd is driven by a T6963 chip.
So no need to do complex waveform stuff.

Still pink

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

There are several translations of the T6963 datasheet from Japlish to English... the T6963 is mature to the point of being arthritic, and dealing with a crusty oldtimer is sure to have its problems. Get back to us in a few days with your read and write timiing questions in the area of the controller ready bits that need to be checked before every write....

Imagecraft compiler user

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Example code for module using T6963C controller can be found
http://www.metsys.fi/ana/image/m...

(or http://www.metsys.fi/ana/ -> 128*64 graphic display module and AVR Mega16)

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

thanks for the link will look into it.

Still pink