NOKIA 6610 LCD

Ciao Ragazzi, sto provando a programmare un lcd nokia 6610 e sto incontrando qualche problemino.Ho scritto il seguente codice e apparte
la retroilluminazione il display non da segni di vita.Gli esempi che ho trovato online evidenziano un ingresso in pi che è il DC(data command) che serve per dire se una linea è di comando o di dati.
Nel mio caso ho un pin in meno quindi ho pensato che il primo bit fosse
quello relativo alla linea di comando o data ma sembra che mi stia sbagliando.Vi posto il codice che ho scritto fin ora cosi potete farvi un’idea maglio.P.s ogni suggerimento o correzzione è piu che gradita.

#define LCD_CMD 0
#define LCD_DATA 1
/*************************************
/* DEFINES - LCD CONTROLLER COMMANDS *
**************************************/

#define DISON 0xaf
#define DISOFF 0xae
#define DISNOR 0xa6
#define DISINV 0xa7
#define COMSCN 0xbb
#define DISCTL 0xca
#define SLPIN 0x95
#define SLPOUT 0x94
#define PASET 0x75
#define CASET 0x15
#define DATCTL 0xbc
#define RGBSET8 0xce
#define RAMWR 0x5c
#define RAMRD 0x5d
#define PTLIN 0xa8
#define PTLOUT 0xa9
#define RMWIN 0xe0
#define RMWOUT 0xee
#define ASCSET 0xaa
#define SCSTART 0xab
#define OSCON 0xd1
#define OSCOFF 0xd2
#define PWRCTR 0x20
#define VOLCTR 0x81
#define VOLUP 0xd6
#define VOLDOWN 0xd7
#define TMPGRD 0x82
#define EPCTIN 0xcd
#define EPCOUT 0xcc
#define EPMWR 0xfc
#define EPMRD 0xfd
#define EPSRRD1 0x7c
#define EPSRRD2 0x7d
#define NOP 0x25

int LCD_CLK = 2;
int LCD_MS = 3;
int LCD_CS = 4;
int LCD_RESET = 5;
int LCD_BL = 6;

void lcd_init(void);
void lcd_SendCmd(byte data,int cd);
void lcd_Contrast(byte contrast);

void setup(){
pinMode(LCD_CLK,OUTPUT);
pinMode(LCD_MS,OUTPUT);
pinMode(LCD_CS,OUTPUT);
pinMode(LCD_RESET,OUTPUT);
pinMode(LCD_BL,OUTPUT);
lcd_init();
}

void loop(){
byte i;
/*for(i=0;i++;i<127)
{lcd_Contrast(i);
delay(100);}
*/
lcd_Contrast(1);
delay(1000);
lcd_Contrast(120);
delay(1000);
}
void lcd_init(void){
digitalWrite(LCD_CS,HIGH);
digitalWrite(LCD_RESET,LOW);
delay(500);
digitalWrite(LCD_RESET,HIGH);
delay(100);
digitalWrite(LCD_BL,HIGH);
lcd_SendCmd(0x21,LCD_CMD);
lcd_SendCmd(0xB3,LCD_CMD);
lcd_SendCmd(0x04,LCD_CMD);
lcd_SendCmd(0x13,LCD_CMD);
lcd_SendCmd(0x20,LCD_CMD);
lcd_SendCmd(0x0C,LCD_CMD);
}
void lcd_SendCmd(byte data,int cd){
byte i=8;
byte mask;
digitalWrite(LCD_CLK,LOW);
delayMicroseconds(400);
if(cd==LCD_DATA)
{digitalWrite(LCD_MS,HIGH);}
else
{digitalWrite(LCD_MS,LOW);}
digitalWrite(LCD_CLK,HIGH);
delayMicroseconds(400);
while(i>0){
mask=0x01<<i–;
digitalWrite(LCD_CLK,LOW);
delayMicroseconds(400);
if(data & mask)
{digitalWrite(LCD_MS,HIGH);}
else
{digitalWrite(LCD_MS,LOW);}
digitalWrite(LCD_CLK,HIGH);
delayMicroseconds(400);
}
}
void lcd_Contrast(byte contrast){
lcd_SendCmd(0x21,LCD_CMD);
lcd_SendCmd(0x80|contrast,LCD_CMD);
lcd_SendCmd(0x20,LCD_CMD);
}

HAi dato un occhiata qui:

http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1237036119/0

Parlano appunto del tuo display ed alcuni problemi di funzionamento.

Ciao ho letto il most che mi hai mandato e effettivamente questo signore ha avuto il mio stesso problema quindi provero a mettere un ulteriore condensatore sull'alimentazione e vediamo cosa succede. Poi io per convertire a tensione da livello logico 5V a 3V ho usato un partitore resistivo, mentre lui ha usato un integrato.Io nn credo che sia quello il problema perchè teoricamente un partitore resistivo per basse velocita dovrebbe andare bene.Consigli o suggerimenti?