Continue to Site

Welcome to our site!

Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

  • Welcome to our site! Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

Voltage follower for LCD with ST7036 controller

Status
Not open for further replies.

rolls

New Member
I am currently writing a driver for this LCD **broken link removed** and it uses the ST7036 driver http://www.sitronix.com.tw/sitronix/SASpecDoc.nsf/FileDownload/ST7036936139/$FILE/ST7036-V17a.pdf

Now the datasheet that they provide for the actual LCD is useless, I cannot figure out how to set the contrast. 'drive supply voltage' I'm assuming this means pull V0-V4 high, I've done this and tried enable/disabling the internal voltage follower, changing contrast from 0-15, I've tried this with the V0-V4 lines tied high/low and even with an external voltage follower.

Does anyone have any idea how I should wire this up and then what commands I should send the LCD so that it isn't entirely black or off?

Also I'm using a 3.6V supply, I2C interface on a PIC 24.

Also if I pull out the V2 and V3 wires and plug them in quickly it shows the text I've sent to the display for about half a second, then it dissapears or goes black again.
 
Last edited:
Reading the ST7036 datasheets, I see that the contrast function is controlled by pin EXT (see page 13/70) as is the LCD bias. Then starting at page 47/70 I see different LCD supply configurations. Which one are you using? How is your EXT pin connected? How are OPF1 and OPF2 connected?
 
Last edited:
I've attached a slightly more detailed data sheet that they just emailed me, from the looks of it OPF1, OPF2 and EXT are attached to VSS.
 

Attachments

  • HTG1603A Manual.pdf
    1.2 MB · Views: 344
Ok I've got a flashing cursor and can control the contrast via a trimpot but I can't see any text. I can however see the text for about half a second if I randomly disconnect and short the V1-V4 pins.

Here is the list of commands I've sent the display via I2C:

Power on:

//Sequence to trigger power on initialisation
VSS = 1;
delay(5); //power on for 0.1<trcc<10ms
VSS = 0;
delay(10); //power back on aftertoff>1ms
VSS = 1;
delay(85); //delay 40ms for power to stabilise

i2c_enable();
i2c_start();
i2c_sbyte(0x78); //(Slave address << 1 & RS bit)
i2c_sbyte(0x00); //(Control byte)
i2c_sbyte(0x0F); //(Power on)
i2c_stop();
i2c_disable();



Display 'abc' on line 1:
//Line 1 DDRAM address 00 - OF
//Line 2 DDRAM address 10 - 1F
//Line 3 DDRAM address 20 - 2F
/* Control Byte format: CO,RS,000000) Where CO = 0 (Last Control byte to be send)
CO = 1 (More control bytes to follow after each Data byte)*/
int result;
i2c_enable();
i2c_start();
i2c_sbyte(0x78); //Slave address of display 1 (3C << 1) & 0(R/W) (Slave address-7bits-(xxxxxxx,R/W)
i2c_sbyte(0x80); //Control byte = Interleave Control byte, data byte etc. RS = 0
i2c_sbyte(0x80); //Set DDRAM address to 0 for first character
//wait 27us
i2c_sbyte(0xC0); //Control byte to enable writing to DDRAM, more control bytes to follow RS = 1 CO = 1
i2c_sbyte(0x61); //write 'a' (0110 0001) to address 0

i2c_sbyte(0x80); //Control byte = Interleave Control byte, data byte etc. RS = 0
i2c_sbyte(0x81); //Set DDRAM address to 1 for first character
//wait 27us
i2c_sbyte(0xC0); //Control byte to enable writing to DDRAM, more control bytes to follow RS = 1 CO = 1
i2c_sbyte(0x62); //write 'b' (0110 0010) to address 1

i2c_sbyte(0x80); //Control byte = Interleave Control byte, data byte etc. RS = 0
i2c_sbyte(0x82); //Set DDRAM address to 1 for first character
//wait 27us
i2c_sbyte(0xC0); //Control byte to enable writing to DDRAM, more control bytes to follow RS = 1 CO = 1
i2c_sbyte(0x63); //write 'c' (0110 0010) to address 2
i2c_stop();
i2c_disable();
 
Last edited:
Status
Not open for further replies.

Latest threads

Back
Top