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);
}
}