This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

problem in interfacing pcd8544(nokia 3110) glcd with msp430

Other Parts Discussed in Thread: MSP430G2553

i have written this code in CCS for displaying 'A' but it's not working ...... glcd is displaying nothing....

/*
* main.c
* RS PIN0
* SCE PIN1
* DC PIN2
* MOSI PIN3
* SCK PIN4
* VDD = 5V
* GRND = 0V
* VOUT - NOT CONNECTED
* output to glcd is directly from launchapd i.e 3.3v
*/
#include<msp430g2553.h>
#define SETRS P1OUT |= 0X01//PIN P1.0
#define CLEARRS P1OUT &= 0X01
#define SETSCE P1OUT |=0X02//PIN P1.1 CS
#define CLEARSCE P1OUT &= ~0X02
#define SETDC P1OUT |= 0X04//PIN P1.2 MISO
#define CLEARDC P1OUT &= ~0X04
#define SETMOSI P1OUT |= 0X08 //PIN P1.3 MOSI
#define CLEARMOSI P1OUT &= ~0X08
#define SETSCK P1OUT |= 0X10 //PIN P1.4 CLOCK
#define CLEARSCK P1OUT &= ~0X10
void lcd_init(unsigned char x) ;
void lcd_writecommand(unsigned char cmd);
void sendspi(unsigned char scmd);
void lcd_gotoxy(unsigned x,unsigned y);
void lcd_writedata(unsigned char data);
void lcd_write_char(unsigned char ch);
void lcd_clear(void);
static const unsigned char letter[]=
{ 0x00, 0x00, 0x00, 0x00, 0x00, // sp
0x00, 0x00, 0x2f, 0x00, 0x00, // !
0x00, 0x07, 0x00, 0x07, 0x00, // "
0x14, 0x7f, 0x14, 0x7f, 0x14, // #
0x24, 0x2a, 0x7f, 0x2a, 0x12, // $
0xc4, 0xc8, 0x10, 0x26, 0x46, // %
0x36, 0x49, 0x55, 0x22, 0x50, // &
0x00, 0x05, 0x03, 0x00, 0x00, // '
0x00, 0x1c, 0x22, 0x41, 0x00, // (
0x00, 0x41, 0x22, 0x1c, 0x00, // )
0x14, 0x08, 0x3E, 0x08, 0x14, // *
0x08, 0x08, 0x3E, 0x08, 0x08, // +
0x00, 0x00, 0x50, 0x30, 0x00, // ,
0x10, 0x10, 0x10, 0x10, 0x10, // -
0x00, 0x60, 0x60, 0x00, 0x00, // .
0x20, 0x10, 0x08, 0x04, 0x02, // /
0x3E, 0x51, 0x49, 0x45, 0x3E, // 0
0x00, 0x42, 0x7F, 0x40, 0x00, // 1
0x42, 0x61, 0x51, 0x49, 0x46, // 2
0x21, 0x41, 0x45, 0x4B, 0x31, // 3
0x18, 0x14, 0x12, 0x7F, 0x10, // 4
0x27, 0x45, 0x45, 0x45, 0x39, // 5
0x3C, 0x4A, 0x49, 0x49, 0x30, // 6
0x01, 0x71, 0x09, 0x05, 0x03, // 7
0x36, 0x49, 0x49, 0x49, 0x36, // 8
0x06, 0x49, 0x49, 0x29, 0x1E, // 9
0x00, 0x36, 0x36, 0x00, 0x00, // :
0x00, 0x56, 0x36, 0x00, 0x00, // ;
0x08, 0x14, 0x22, 0x41, 0x00, // <
0x14, 0x14, 0x14, 0x14, 0x14, // =
0x00, 0x41, 0x22, 0x14, 0x08, // >
0x02, 0x01, 0x51, 0x09, 0x06, // ?
0x32, 0x49, 0x59, 0x51, 0x3E, // @
0x7E, 0x11, 0x11, 0x11, 0x7E, // A
0x7F, 0x49, 0x49, 0x49, 0x36, // B
0x3E, 0x41, 0x41, 0x41, 0x22, // C
0x7F, 0x41, 0x41, 0x22, 0x1C, // D
0x7F, 0x49, 0x49, 0x49, 0x41, // E
0x7F, 0x09, 0x09, 0x09, 0x01, // F
0x3E, 0x41, 0x49, 0x49, 0x7A, // G
0x7F, 0x08, 0x08, 0x08, 0x7F, // H
0x00, 0x41, 0x7F, 0x41, 0x00, // I
0x20, 0x40, 0x41, 0x3F, 0x01, // J
0x7F, 0x08, 0x14, 0x22, 0x41, // K
0x7F, 0x40, 0x40, 0x40, 0x40, // L
0x7F, 0x02, 0x0C, 0x02, 0x7F, // M
0x7F, 0x04, 0x08, 0x10, 0x7F, // N
0x3E, 0x41, 0x41, 0x41, 0x3E, // O
0x7F, 0x09, 0x09, 0x09, 0x06, // P
0x3E, 0x41, 0x51, 0x21, 0x5E, // Q
0x7F, 0x09, 0x19, 0x29, 0x46, // R
0x46, 0x49, 0x49, 0x49, 0x31, // S
0x01, 0x01, 0x7F, 0x01, 0x01, // T
0x3F, 0x40, 0x40, 0x40, 0x3F, // U
0x1F, 0x20, 0x40, 0x20, 0x1F, // V
0x3F, 0x40, 0x38, 0x40, 0x3F, // W
0x63, 0x14, 0x08, 0x14, 0x63, // X
0x07, 0x08, 0x70, 0x08, 0x07, // Y
0x61, 0x51, 0x49, 0x45, 0x43, // Z
0x00, 0x7F, 0x41, 0x41, 0x00, // [
0x55, 0x2A, 0x55, 0x2A, 0x55, // 55
0x00, 0x41, 0x41, 0x7F, 0x00, // ]
0x04, 0x02, 0x01, 0x02, 0x04, // ^
0x40, 0x40, 0x40, 0x40, 0x40, // _
0x00, 0x01, 0x02, 0x04, 0x00, // '
0x20, 0x54, 0x54, 0x54, 0x78, // a
0x7F, 0x48, 0x44, 0x44, 0x38, // b
0x38, 0x44, 0x44, 0x44, 0x20, // c
0x38, 0x44, 0x44, 0x48, 0x7F, // d
0x38, 0x54, 0x54, 0x54, 0x18, // e
0x08, 0x7E, 0x09, 0x01, 0x02, // f
0x0C, 0x52, 0x52, 0x52, 0x3E, // g
0x7F, 0x08, 0x04, 0x04, 0x78, // h
0x00, 0x44, 0x7D, 0x40, 0x00, // i
0x20, 0x40, 0x44, 0x3D, 0x00, // j
0x7F, 0x10, 0x28, 0x44, 0x00, // k
0x00, 0x41, 0x7F, 0x40, 0x00, // l
0x7C, 0x04, 0x18, 0x04, 0x78, // m
0x7C, 0x08, 0x04, 0x04, 0x78, // n
0x38, 0x44, 0x44, 0x44, 0x38, // o
0x7C, 0x14, 0x14, 0x14, 0x08, // p
0x08, 0x14, 0x14, 0x18, 0x7C, // q
0x7C, 0x08, 0x04, 0x04, 0x08, // r
0x48, 0x54, 0x54, 0x54, 0x20, // s
0x04, 0x3F, 0x44, 0x40, 0x20, // t
0x3C, 0x40, 0x40, 0x20, 0x7C, // u
0x1C, 0x20, 0x40, 0x20, 0x1C, // v
0x3C, 0x40, 0x30, 0x40, 0x3C, // w
0x44, 0x28, 0x10, 0x28, 0x44, // x
0x0C, 0x50, 0x50, 0x50, 0x3C, // y
0x44, 0x64, 0x54, 0x4C, 0x44, // z
0x00, 0x06, 0x09, 0x09, 0x06 // º
};

void main(void) {
WDTCTL = WDTPW + WDTHOLD;
_delay_cycles(1000);
lcd_init(0x0d);
while(1)
{
lcd_gotoxy(15,3);
lcd_write_char('A');
_delay_cycles(1000);
}

}

void lcd_init(unsigned char x)
{
P1OUT = 0X00 ; //INITIALLY MAKE ALL 0
P1DIR = 0X1F ; //GIVE DIRECTION AS OUTPUT
SETSCE ;
SETRS;
SETDC;
_delay_cycles(1000);
CLEARSCE;
_delay_cycles(5000);
CLEARRS;
_delay_cycles(10000);
SETRS;
_delay_cycles(5000);
lcd_writecommand(0x21); //LCD Extended Commands.
lcd_writecommand(x); //Set LCD Vop (Contrast).0xC0
lcd_writecommand( 0x04 ); //Set Temp coefficent.
lcd_writecommand( 0x13 ); //LCD bias mode 1:48.
lcd_writecommand( 0x20 ); //LCD Standard Commands, Horizontal addressing mode.
lcd_writecommand( 0x0c ); //LCD in normal mode.
lcd_writecommand(0x80); //column
lcd_writecommand(0x40); //row
lcd_clear();
}

void lcd_clear(void)
{
int i,j;
for(i=0; i<8; i++)
for(j=0; j<90; j++)
lcd_writedata( 0x00 );
lcd_gotoxy(0,0);
}


void lcd_writecommand(unsigned char cmd)
{
CLEARSCE;
CLEARDC;
sendspi(cmd);
SETSCE;
}

void sendspi(unsigned char scmd)
{
unsigned char i;
for (i=0;i<8;i++)
{
CLEARSCK; //WORKING ON -VE EDGE
if (scmd & 0x08)
{
SETMOSI;
}
else
{
CLEARMOSI;
scmd<<=1;
SETSCK;

}
}
}

void lcd_gotoxy(unsigned x,unsigned y)
{
lcd_writecommand(0x80 | x) ;
lcd_writecommand(0x40 | y) ;
}

void lcd_writedata(unsigned char data)
{
CLEARSCE;
SETDC;
sendspi(data);
SETSCE;
}

void lcd_write_char(unsigned char ch)
{
unsigned char j;
lcd_writedata(0x00);
for (j=0;j<5;j++)
{
lcd_writedata(letter[(ch-32)*5 + j]);
lcd_writedata(0x00);
}
}

**Attention** This is a public forum