Привет! Пробую инициализировать графический ЖКИ (t6963c), микроконтроллер silabs c8051F120, делаю все как указано в примере
| Код |
#include "c8051F120.h"
#define DATA P4
sbit WR=P2^0;
sbit RD=P2^1;
sbit CE=P2^2;
sbit CD=P2^3;
sbit RST=P2^4;
sbit FS=P2^5;
sbit RV=P2^6;
char GetStatusLCD(void); void LcdInit (void); void Send8LCD(unsigned char cmd, unsigned char bt); void LcdInit(void); void delay(unsigned int i); int a;
void main (void)
{ WDTCN = 0xDE; WDTCN = 0xAD; SFRPAGE = CONFIG_PAGE;
P2MDOUT = 0xFF; P4MDOUT = 0xFF; XBR2 = 0x40;
LcdInit();
while (1) {}; }
char GetStatusLCD(void) {
char i; P4MDOUT = 0x00; i=0; CD=1; WR=1; CE=0; RD=0;
for (a=0;a<2;a++);//Задержка
i=DATA;
WR=1; RD=1; CE=1; CD=1;
for (a=0;a<2;a++);//Задержка return i; P4MDOUT = 0xFF; }
void delay(unsigned int i) { while ( i--!=0); }
void Send8LCD(unsigned char cmd, unsigned char bt) { char i;
if (cmd) CD=1; else CD=0;
for (i=0;i<2;i++);
CE=0; WR=0; DATA=bt;
for (i=0;i<2;i++);
CE=1; WR=1; CD=1; }
void LcdInit() { delay(1000); RST=0; delay(100); RST=1;
Send8LCD(1,0x80); while ((GetStatusLCD()&0x03)!=0x03); Send8LCD(0,0x00);//graphic home while ((GetStatusLCD()&0x03)!=0x03); Send8LCD(0,0x00); while ((GetStatusLCD()&0x03)!=0x03); Send8LCD(1,0x42); while ((GetStatusLCD()&0x03)!=0x03); Send8LCD(0,0x28);//graphic ar while ((GetStatusLCD()&0x03)!=0x03); Send8LCD(0,0x00); while ((GetStatusLCD()&0x03)!=0x03); Send8LCD(1,0x43); while ((GetStatusLCD()&0x03)!=0x03); Send8LCD(0,0x00);//text home while ((GetStatusLCD()&0x03)!=0x03); Send8LCD(0,0x17); while ((GetStatusLCD()&0x03)!=0x03); Send8LCD(1,0x40); while ((GetStatusLCD()&0x03)!=0x03); Send8LCD(0,0x28);//text ar while ((GetStatusLCD()&0x03)!=0x03); Send8LCD(0,0x00); while ((GetStatusLCD()&0x03)!=0x03); Send8LCD(1,0x41); while ((GetStatusLCD()&0x03)!=0x03); Send8LCD(0,0x17); while ((GetStatusLCD()&0x03)!=0x03); Send8LCD(0,0x00); while ((GetStatusLCD()&0x03)!=0x03); Send8LCD(1,0x24);
while ((GetStatusLCD()&0x03)!=0x03); Send8LCD(0,0x24); while ((GetStatusLCD()&0x03)!=0x03); Send8LCD(1,0xc0); while ((GetStatusLCD()&0x03)!=0x03); Send8LCD(0,0x25); while ((GetStatusLCD()&0x03)!=0x03); Send8LCD(1,0xc0); while ((GetStatusLCD()&0x03)!=0x03); Send8LCD(0,0x2e); while ((GetStatusLCD()&0x03)!=0x03); Send8LCD(1,0xc0); while ((GetStatusLCD()&0x03)!=0x03); Send8LCD(1,0x9c);
}
|
почему -то не опрашиваются флаги готовности (GetStatusLCD()) , программа зависает уже на первом. Посоветуйте, в чем может быть проблема?? |