REKLAMA

ILI9325.C

[ATMega32][C] LCD 2,8" TFT ILI9235. 8 bitowa transmisja danych poprzez 74HC

Przepraszam za późną odpowiedź ale przez ostatnie dni musiałem zająć się innymi sprawami. A więc tak. Wyświetlacz jest sprawny w 100% (wysłanie 16 bit sprawdzony na ARM z przykładowego kodu) także podanie 5v nie spowodowało uszkodzenia LCD. Od tego trzeba zacząć gdyż już zaczynałem wątpić w to czy pomimo napisania dobrego kodu wyświetlacz zadziała. Na schematach podobnych wyświetlaczy PIN_11 zarezerwowany jest dla bitu IM0 sterującego wyborem trybu 8/16bit. Na schemacie mojego wyświetlacza (kilka postów wyżej) widać, że PIN_11 jest oznaczony jako NC. Jednakże tak jak w schematach podobnych pcb do PIN_11 mimo, że oznaczonego jako NC doprowadzono masę lub + do wyboru rezystorami R4, R6. Na fizycznym pcb w miejscach R4 i R6 jest przerwa co by potwierdzało, że PIN_11 jest nieużywany jednakże po co w takim razie te rezystory? Ustawiono na sztywno 16 bit? Na to wynika. Bez sensu moim zdaniem no ale cóż. Skoro doszliśmy do tego, że 16 bit jest ustawiony na sztywno i muszę wysyłać dane wg wykresu czasowego dla 16 bit i WR ustawiać w stan niski przed podaniem danych na magistralę to dlaczego w kolejnej bibliotece (w załączniku) WR ustawiany jest w stan niski przed wystawieniem danej na szynie? CS również jest podnoszony po wysłaniu indexu... Co prawda jest to sterowanie 8bit ale z czasówki 8bit wynika to samo co czasówki 16bit. http://obrazki.elektroda.pl/8369531000_1322404642.gif A kod wygląda tak: void TSLCDOutDat(unsigned short dat) //write data to LCD { Clrb(LCD_LE_PRTC,LCD_LE_PIN); //clear LE LCD_DB_DPRT = dat >> 8; Setb(LCD_LE_PRTS,LCD_LE_PIN); //set LE Delay1us(1); Clrb(LCD_LE_PRTC,LCD_LE_PIN); //clear LE Clrb(LCD_CS_PRTC,LCD_CS_PIN); // clear CS Setb(LCD_RS_PRTS,LCD_RS_PIN); // set RS Setb(LCD_RD_PRTS,LCD_RD_PIN); // set RD LCD_DB_DPRT = dat; Clrb(LCD_WR_PRTC,LCD_WR_PIN); // clear WR Setb(LCD_WR_PRTS,LCD_WR_PIN); // set WR Setb(LCD_CS_PRTS,LCD_CS_PIN); // set CS } void ili9320_WriteIndex(unsigned char index) { Clrb(LCD_LE_PRTC,LCD_LE_PIN); //clear LE LCD_DB_DPRT = index >> 8; Setb(LCD_LE_PRTS,LCD_LE_PIN); //set LE Delay1us(1); Clrb(LCD_LE_PRTC,LCD_LE_PIN); Clrb(LCD_CS_PRTC,LCD_CS_PIN); // clear CS Setb(LCD_RS_PRTS,LCD_RS_PIN); // set RS Setb(LCD_RD_PRTS,LCD_RD_PIN); // set RD LCD_DB_DPRT = index; Clrb(LCD_WR_PRTC,LCD_WR_PIN); // clear WR Setb(LCD_WR_PRTS,LCD_WR_PIN); // set WR }


Pobierz plik - link do postu

#include " english_16x8.h "
#include " tu.h "
#include & lt; ILI9325.h & gt;
#include & lt; delay.C & gt;

void LCD_WR_DATA16(unsigned int data)//д»ý´æÆ÷Êý¾Ý
{
LCD_RD_H();
LCD_RS_H();
LCD_CS_L();
LCD_WR_L();
DATA_LCD_PORT=data & gt; & gt; 8;
LCD_WR_H();
LCD_WR_L();
DATA_LCD_PORT=data & 0XFF;
LCD_WR_H();
LCD_CS_H();

}
void LCD_WR_REG16(unsigned int index)//д»ý´æÆ÷ÃüÁî
{
LCD_RD_H();
LCD_RS_L();
LCD_CS_L();
LCD_WR_L();
DATA_LCD_PORT=index & gt; & gt; 8;
LCD_WR_H();
LCD_WR_L();
DATA_LCD_PORT=index & 0XFF;
LCD_WR_H();
LCD_CS_H();
}

void LCD_WR_REG(unsigned int index,unsigned int data)
{
LCD_WR_REG16(index);
LCD_WR_DATA16(data);
}
/*

void LCD_Init(void)
{

LCD_PORT_INI();
LCD_RST_L();//Ó²¼þ¸´Î»
delay_ms(400);
LCD_RST_H();
delay_ms(400);
LCD_WR_REG(0x00FF,0x0001);
LCD_WR_REG(0x00F3,0x0008);
LCD_WR_REG(0x0001,0x0100);
LCD_WR_REG(0x0002,0x0700);
LCD_WR_REG(0x0003,0x1018);
LCD_WR_REG(0x0020,0x0000);
LCD_WR_REG(0x0021,0x013f);
//LCD_WR_REG(0x0003,0x1030); //0x1030
LCD_WR_REG(0x0008,0x0302);
LCD_WR_REG(0x0008,0x0207);
LCD_WR_REG(0x0009,0x0000);
LCD_WR_REG(0x000A,0x0000);
LCD_WR_REG(0x0010,0x0000); //0x0790
LCD_WR_REG(0x0011,0x0005);
LCD_WR_REG(0x0012,0x0000);
LCD_WR_REG(0x0013,0x0000);
delay_ms(1000);
LCD_WR_REG(0x0010,0x12B0);
delay_ms(1000);
LCD_WR_REG(0x0011,0x0007);
delay_ms(1000);
LCD_WR_REG(0x0012,0x009B);
delay_ms(1000);
LCD_WR_REG(0x0013,0x1f00);
delay_ms(1000);
LCD_WR_REG(0x0029,0x001d);

//################# void Gamma_Set(void) ####################//

LCD_WR_REG(0x0030,0x0000);
LCD_WR_REG(0x0031,0x0707);
LCD_WR_REG(0x0032,0x0505);
LCD_WR_REG(0x0035,0x0107);
LCD_WR_REG(0x0036,0x0008);
LCD_WR_REG(0x0037,0x0000);
LCD_WR_REG(0x0038,0x0202);
LCD_WR_REG(0x0039,0x0106);
LCD_WR_REG(0x003C,0x0202);
LCD_WR_REG(0x003D,0x0408);

delay_ms(1000);

LCD_WR_REG(0x0050,0x0000);
LCD_WR_REG(0x0051,0x00EF);
LCD_WR_REG(0x0052,0x0000);
LCD_WR_REG(0x0053,0x013F);
LCD_WR_REG(0x0060,0xa700);
LCD_WR_REG(0x0061,0x0001);

LCD_WR_REG(0x0090,0x0033);
LCD_WR_REG(0x002B,0x000B);
LCD_WR_REG(0x0007,0x0173);
LCD_Clear(0);
delay_ms(3000);
LCD_BL_H();
}
*/
/*
void LCD_Init(void)
{
LCD_PORT_INI();
LCD_RST_L();//Ó²¼þ¸´Î»
delay_ms(400);
LCD_RST_H();
delay_ms(400);
//initializing funciton 1
LCD_WR_REG(0x01, 0x0000); // set SS and SM bit
LCD_WR_REG(0x02, 0x0700); // set 1 line inversion
// LCD_WR_REG(0x03, 0x10B0); // set GRAM write direction and BGR=1.
#if ID_AM==000
LCD_WR_REG(0x0003,0x1000);//ÆÁÄ»Ðýת¿ØÖÆ TFM=0,TRI=0,SWAP=1,16 bits system interface swap RGB to BRG£¬´Ë´¦ORGºÍHWM Ϊ0
#elif ID_AM==001
LCD_WR_REG(0x0003,0x1008);
#elif ID_AM==010
LCD_WR_REG(0x0003,0x1010);
#elif ID_AM==011
LCD_WR_REG(0x0003,0x1018);
#elif ID_AM==100
LCD_WR_REG(0x0003,0x1020);
#elif ID_AM==101
LCD_WR_REG(0x0003,0x1028);
#elif ID_AM==110
LCD_WR_REG(0x0003,0x1030);
#elif ID_AM==111
LCD_WR_REG(0x0003,0x1038);
#endif
LCD_WR_REG(0x04, 0x0000); // Resize register
LCD_WR_REG(0x08, 0x0207); // set the back porch and front porch
LCD_WR_REG(0x09, 0x0000); // set non-display area refresh cycle ISC[3:0]
LCD_WR_REG(0x0A, 0x0000); // FMARK function
LCD_WR_REG(0x0C, 0x0000); // RGB interface setting
LCD_WR_REG(0x0D, 0x0000); // Frame marker Position
LCD_WR_REG(0x0F, 0x0000); // RGB interface polarity
//Power On sequence //
LCD_WR_REG(0x10, 0x0000); // SAP, BT[3:0], AP, DSTB, SLP, STB
LCD_WR_REG(0x11, 0x0007); // DC1[2:0], DC0[2:0], VC[2:0]
LCD_WR_REG(0x12, 0x0000); // VREG1OUT voltage
LCD_WR_REG(0x13, 0x0000); // VDV[4:0] for VCOM amplitude
delay_ms(3000); // Dis-charge capacitor power voltage

LCD_WR_REG(0x10, 0x1590); // SAP, BT[3:0], AP, DSTB, SLP, STB
LCD_WR_REG(0x11, 0x0227); // DC1[2:0], DC0[2:0], VC[2:0]
delay_ms(200); // Delay 50ms

LCD_WR_REG(0x12, 0x009b); // Internal reference voltage= Vci;
delay_ms(200); // Delay 50ms
LCD_WR_REG(0x13, 0x1f00); // Set VDV[4:0] for VCOM amplitude
LCD_WR_REG(0x29, 0x001f); // Set VCM[5:0] for VCOMH
LCD_WR_REG(0x2B, 0x000e); // Set Frame Rate
delay_ms(200); // Delay 50ms

#if ID_AM==000
LCD_WR_REG(0x0020,0x00ef);//GRAMˮƽÆðʼλÖÃ
LCD_WR_REG(0x0021,0x013f);
#elif ID_AM==001
LCD_WR_REG(0x0020,0x00ef);
LCD_WR_REG(0x0021,0x013f);
#elif ID_AM==010
LCD_WR_REG(0x0020,0x0000);
LCD_WR_REG(0x0021,0x013f);
#elif ID_AM==011
LCD_WR_REG(0x0020,0x0000);
LCD_WR_REG(0x0021,0x013f);
#elif ID_AM==100
LCD_WR_REG(0x0020,0x00ef);
LCD_WR_REG(0x0021,0x0000);
#elif ID_AM==101
LCD_WR_REG(0x0020,0x00ef);
LCD_WR_REG(0x0021,0x0000);
#elif ID_AM==110
LCD_WR_REG(0x0020,0x0000);
LCD_WR_REG(0x0021,0x0000);
#elif ID_AM==111
LCD_WR_REG(0x0020,0x0000);
LCD_WR_REG(0x0021,0x0000);
#endif

// ----------- Adjust the Gamma Curve ----------//
LCD_WR_REG(0x30, 0x0201);
LCD_WR_REG(0x31, 0x0707);
LCD_WR_REG(0x32, 0x0407);
LCD_WR_REG(0x35, 0x0101);
LCD_WR_REG(0x36, 0x0407);
LCD_WR_REG(0x37, 0x0003);
LCD_WR_REG(0x38, 0x0000);
LCD_WR_REG(0x39, 0x0605);
LCD_WR_REG(0x3C, 0x0101);
LCD_WR_REG(0x3D, 0x0606);


//------------------ Set GRAM area ---------------//
LCD_WR_REG(0x50, 0x0000); // Horizontal GRAM Start Address
LCD_WR_REG(0x51, 0x00EF); // Horizontal GRAM End Address
LCD_WR_REG(0x52, 0x0000); // Vertical GRAM Start Address
LCD_WR_REG(0x53, 0x013F); // Vertical GRAM Start Address
LCD_WR_REG(0x60, 0x2700); // Gate Scan Line A700
LCD_WR_REG(0x61, 0x0001); // NDL,VLE, REV
LCD_WR_REG(0x6A, 0x0000); // set scrolling line
//-------------- Partial Display Control ---------//
LCD_WR_REG(0x80, 0x0000);
LCD_WR_REG(0x81, 0x0000);
LCD_WR_REG(0x82, 0x0000);
LCD_WR_REG(0x83, 0x0000);
LCD_WR_REG(0x84, 0x0000);
LCD_WR_REG(0x85, 0x0000);
//-------------- Panel Control -------------------//
LCD_WR_REG(0x90, 0x0010);
LCD_WR_REG(0x92, 0x0600);
LCD_WR_REG(0x93, 0x0003);
LCD_WR_REG(0x95, 0x0110);
LCD_WR_REG(0x97, 0x0000);
LCD_WR_REG(0x98, 0x0000);
LCD_WR_REG(0x07, 0x0173); // 262K color and display ON 0133
LCD_Clear(0);
delay_ms(200); // Delay 5ms
LCD_BL_H();

}
*/

void LCD_Init(void)
{
LCD_PORT_INI();
LCD_RST_L();//Ó²¼þ¸´Î»
delay_ms(400);
LCD_RST_H();
delay_ms(400);
//initializing funciton 1
LCD_WR_REG(0x01, 0x0000); // set SS and SM bit
LCD_WR_REG(0x02, 0x0700); // set 1 line inversion
// LCD_WR_REG(0x03, 0x10B0); // set GRAM write direction and BGR=1.
#if ID_AM==000
LCD_WR_REG(0x0003,0x1000);//ÆÁÄ»Ðýת¿ØÖÆ TFM=0,TRI=0,SWAP=1,16 bits system interface swap RGB to BRG£¬´Ë´¦ORGºÍHWM Ϊ0
#elif ID_AM==001
LCD_WR_REG(0x0003,0x1008);
#elif ID_AM==010
LCD_WR_REG(0x0003,0x1010);
#elif ID_AM==011
LCD_WR_REG(0x0003,0x1018);
#elif ID_AM==100
LCD_WR_REG(0x0003,0x1020);
#elif ID_AM==101
LCD_WR_REG(0x0003,0x1028);
#elif ID_AM==110
LCD_WR_REG(0x0003,0x1030);
#elif ID_AM==111
LCD_WR_REG(0x0003,0x1038);
#endif
LCD_WR_REG(0x04, 0x0000); // Resize register
LCD_WR_REG(0x08, 0x0207); // set the back porch and front porch
LCD_WR_REG(0x09, 0x0000); // set non-display area refresh cycle ISC[3:0]
LCD_WR_REG(0x0A, 0x0000); // FMARK function
LCD_WR_REG(0x0C, 0x0000); // RGB interface setting
LCD_WR_REG(0x0D, 0x0000); // Frame marker Position
LCD_WR_REG(0x0F, 0x0000); // RGB interface polarity
//Power On sequence //
LCD_WR_REG(0x10, 0x0080); // SAP, BT[3:0], AP, DSTB, SLP, STB
LCD_WR_REG(0x11, 0x0007); // DC1[2:0], DC0[2:0], VC[2:0]
LCD_WR_REG(0x12, 0x0000); // VREG1OUT voltage
LCD_WR_REG(0x13, 0x0000); // VDV[4:0] for VCOM amplitude
LCD_WR_REG(0x07, 0x0001); //

delay_ms(3000); // Dis-charge capacitor power voltage

LCD_WR_REG(0x10, 0x1590); // SAP, BT[3:0], AP, DSTB, SLP, STB
LCD_WR_REG(0x11, 0x0227); // DC1[2:0], DC0[2:0], VC[2:0]
delay_ms(200); // Delay 50ms

LCD_WR_REG(0x12, 0x001f); // Internal reference voltage= Vci;
delay_ms(200); // Delay 50ms
LCD_WR_REG(0x13, 0x1000); // Set VDV[4:0] for VCOM amplitude
LCD_WR_REG(0x29, 0x0015); // Set VCM[5:0] for VCOMH
LCD_WR_REG(0x2B, 0x000c); // Set Frame Rate
delay_ms(200); // Delay 50ms

#if ID_AM==000
LCD_WR_REG(0x0020,0x00ef);//GRAMˮƽÆðʼλÖÃ
LCD_WR_REG(0x0021,0x013f);
#elif ID_AM==001
LCD_WR_REG(0x0020,0x00ef);
LCD_WR_REG(0x0021,0x013f);
#elif ID_AM==010
LCD_WR_REG(0x0020,0x0000);
LCD_WR_REG(0x0021,0x013f);
#elif ID_AM==011
LCD_WR_REG(0x0020,0x0000);
LCD_WR_REG(0x0021,0x013f);
#elif ID_AM==100
LCD_WR_REG(0x0020,0x00ef);
LCD_WR_REG(0x0021,0x0000);
#elif ID_AM==101
LCD_WR_REG(0x0020,0x00ef);
LCD_WR_REG(0x0021,0x0000);
#elif ID_AM==110
LCD_WR_REG(0x0020,0x0000);
LCD_WR_REG(0x0021,0x0000);
#elif ID_AM==111
LCD_WR_REG(0x0020,0x0000);
LCD_WR_REG(0x0021,0x0000);
#endif
// ----------- Adjust the Gamma Curve ----------//
LCD_WR_REG(0x0030,0x0000);
LCD_WR_REG(0x0031,0x0707);
LCD_WR_REG(0x0032,0x0505);
LCD_WR_REG(0x0035,0x0107);
LCD_WR_REG(0x0036,0x0008);
LCD_WR_REG(0x0037,0x0000);
LCD_WR_REG(0x0038,0x0202);
LCD_WR_REG(0x0039,0x0106);
LCD_WR_REG(0x003C,0x0202);
LCD_WR_REG(0x003D,0x0408);
/*
// ----------- Adjust the Gamma Curve ----------//

LCD_WR_REG(0x0030, 0x0000);
LCD_WR_REG(0x0031, 0x0204);
LCD_WR_REG(0x0032, 0x0200);
LCD_WR_REG(0x0035, 0x0007);
LCD_WR_REG(0x0036, 0x1404);
LCD_WR_REG(0x0037, 0x0705);
LCD_WR_REG(0x0038, 0x0305);
LCD_WR_REG(0x0039, 0x0707);
LCD_WR_REG(0x003C, 0x0701);
LCD_WR_REG(0x003D, 0x000E);
*/

//------------------ Set GRAM area ---------------//
LCD_WR_REG(0x0050, 0x0000); // Horizontal GRAM Start Address
LCD_WR_REG(0x0051, 0x00EF); // Horizontal GRAM End Address
LCD_WR_REG(0x0052, 0x0000); // Vertical GRAM Start Address
LCD_WR_REG(0x0053, 0x013F); // Vertical GRAM Start Address
LCD_WR_REG(0x0060, 0x2700); // Gate Scan Line
LCD_WR_REG(0x0061, 0x0001); // NDL,VLE, REV
LCD_WR_REG(0x006A, 0x0000); // set scrolling line
//-------------- Partial Display Control ---------//
LCD_WR_REG(0x80, 0x0000);
LCD_WR_REG(0x81, 0x0000);
LCD_WR_REG(0x82, 0x0000);
LCD_WR_REG(0x83, 0x0000);
LCD_WR_REG(0x84, 0x0000);
LCD_WR_REG(0x85, 0x0000);
//-------------- Panel Control -------------------//
LCD_WR_REG(0x90, 0x0010);
LCD_WR_REG(0x92, 0x0600);
LCD_WR_REG(0x93, 0x0003);
LCD_WR_REG(0x95, 0x0110);
LCD_WR_REG(0x97, 0x0000);
LCD_WR_REG(0x98, 0x0000);
LCD_WR_REG(0x07, 0x0173); // 262K color and display ON 0133
LCD_Clear(0);
delay_ms(200); // Delay 5ms
LCD_BL_H();

}


/**********************************************
º¯ÊýÃû£ºLcdÈ«ÆÁ²Á³ýº¯Êý
¹¦ÄÜ£º½«LcdÕûÆÁ²ÁΪָ¶¨ÑÕÉ«
Èë¿Ú²ÎÊý£ºcolor Ö¸¶¨LcdÈ«ÆÁÑÕÉ« RGB(5-6-5)
·µ»ØÖµ£ºÎÞ
***********************************************/
void LCD_Clear(unsigned int Color)
{
unsigned long index = 0;

LCD_WR_REG(0x0020,0x0000);//GRAMˮƽÆðʼλÖÃ
LCD_WR_REG(0x0021,00000);

LCD_WR_REG(0x0050,0x00);//ˮƽ GRAMÆðʼλÖÃ
LCD_WR_REG(0x0051,239);//ˮƽGRAMÖÕֹλÖÃ
LCD_WR_REG(0x0052,0x00);//´¹Ö±GRAMÆðʼλÖÃ
LCD_WR_REG(0x0053,319);//´¹Ö±GRAMÖÕֹλÖÃ
LCD_WR_REG16(0x0022);

LCD_RD_H();
LCD_RS_H();
LCD_CS_L();
for(index = 0; index & lt; 76800; index++)
{
// LCD_WR_DATA16(Color);

LCD_WR_L();
DATA_LCD_PORT=Color & gt; & gt; 8;
LCD_WR_H();
LCD_WR_L();
DATA_LCD_PORT=Color & 0XFF;
LCD_WR_H();


}
LCD_CS_H();
}

void LCD_write_english(unsigned char data,unsigned int color,unsigned int xcolor)//д×Ö·û
{

unsigned char avl,i,n;
LCD_WR_REG16(0x0022);
for (i=0;i & lt; 16;i++)
{
avl=pgm_read_byte( & english[data-32][i]);
for (n=0;n & lt; 8;n++)
{
if(avl & 0x80) LCD_WR_DATA16(color);
else LCD_WR_DATA16(xcolor);

avl & lt; & lt; =1;
}
}
}
void LCD_write_english_string(unsigned int x,unsigned int y,unsigned char *s,unsigned int color,unsigned int xcolor)//Ó¢ÎÄ×Ö·û´®ÏÔʾ
{
unsigned int k=0;
while (*s)
{
Lcd_SetBox(y,x+k,15,8);
LCD_write_english( *s,color,xcolor);
k=k+8;
s++;

}

}

void LCD_write_SUM(unsigned int x,unsigned int y,unsigned char SUM,unsigned int color,unsigned int xcolor)//дÊý×Ö
{

unsigned char avl,i,n;
Lcd_SetBox(y,x,15,8);
LCD_WR_REG16(0x0022);
for (i=0;i & lt; 16;i++)
{
avl=pgm_read_byte( & english[SUM+16][i]);
for (n=0;n & lt; 8;n++)
{
if(avl & 0x80) LCD_WR_DATA16(color);
else LCD_WR_DATA16(xcolor);

avl & lt; & lt; =1;
}
}
}
/**********************************************
º¯ÊýÃû£ºLcd¿éÑ¡º¯Êý
¹¦ÄÜ£ºÑ¡¶¨LcdÉÏÖ¸¶¨µÄ¾ØÐÎÇøÓò

×¢Ò⣺xStartºÍ yStartËæ×ÅÆÁÄ»µÄÐýת¶ø¸Ä±ä£¬Î»ÖÃÊǾØÐοòµÄËĸö½Ç

Èë¿Ú²ÎÊý£ºxStart x·½ÏòµÄÆðʼµã
ySrart y·½ÏòµÄÖÕÖ¹µã
xLong Ҫѡ¶¨¾ØÐεÄx·½Ïò³¤¶È
yLong Ҫѡ¶¨¾ØÐεÄy·½Ïò³¤¶È
·µ»ØÖµ£ºÎÞ
***********************************************/
void Lcd_SetBox(unsigned int xStart,unsigned int yStart,unsigned int xLong,unsigned int yLong)
{

#if ID_AM==000
LCD_SetCursor(xStart+xLong-1,312-yStart+yLong-1);

#elif ID_AM==001
LCD_SetCursor(xStart+xLong-1,312-yStart+yLong-1);

#elif ID_AM==010
LCD_SetCursor(xStart,312-yStart+yLong-1);

#elif ID_AM==011
LCD_SetCursor(xStart,312-yStart+yLong-1);

#elif ID_AM==100
LCD_SetCursor(xStart+xLong-1,312-yStart);

#elif ID_AM==101
LCD_SetCursor(xStart+xLong-1,312-yStart);

#elif ID_AM==110
LCD_SetCursor(xStart,312-yStart);

#elif ID_AM==111
LCD_SetCursor(xStart,312-yStart);

#endif

LCD_WR_REG(0x0050,xStart);//ˮƽ GRAMÆðʼλÖÃ
LCD_WR_REG(0x0051,xStart+xLong-1);//ˮƽGRAMÖÕֹλÖÃ
LCD_WR_REG(0x0052,312-yStart);//´¹Ö±GRAMÆðʼλÖÃ
LCD_WR_REG(0x0053,312-yStart+yLong-1);//´¹Ö±GRAMÖÕֹλÖÃ
}


/*************************************************
º¯ÊýÃû£ºLcd¹â±êÆðµã¶¨Î»º¯Êý
¹¦ÄÜ£ºÖ¸¶¨320240Òº¾§ÉϵÄÒ»µã×÷ΪдÊý¾ÝµÄÆðʼµã
Èë¿Ú²ÎÊý£ºx ×ø±ê 0~239
y ×ø±ê 0~319
·µ»ØÖµ£ºÎÞ
*************************************************/
void LCD_SetCursor(unsigned int Xpos, unsigned int Ypos)
{
// CLR_RS;
LCD_WR_REG(0x20, Xpos);
LCD_WR_REG(0x21, Ypos);
}


void Test_tu(void)
{
unsigned int i;
// unsigned char val;
LCD_WR_REG(0x0020,20);//Lcd¹â±êGRAMˮƽÆðʼλÖÃ
LCD_WR_REG(0x0021,105); //Lcd¹â±ê´¹Ö±GRAMÆðʼλÖÃ

LCD_WR_REG(0x0050,20);//ˮƽ GRAMÆðʼλÖÃ
LCD_WR_REG(0x0051,207);//ˮƽGRAMÖÕֹλÖÃ
LCD_WR_REG(0x0052,105);//´¹Ö±GRAMÆðʼλÖÃ
LCD_WR_REG(0x0053,207);//´¹Ö±GRAMÖÕֹλÖÃ
LCD_WR_REG16(0x0022);

LCD_RD_H();
LCD_RS_H();
LCD_CS_L();
for (i=0;i & lt; 21218;)
{

LCD_WR_L();
DATA_LCD_PORT=pgm_read_byte( & gImage[i++]);
LCD_WR_H();

LCD_WR_L();
DATA_LCD_PORT=pgm_read_byte( & gImage[i++]);
LCD_WR_H();

}
LCD_CS_H();
}





void Test(void)
{
unsigned long n,i;
LCD_WR_REG(0x0020,0x0000);//GRAMˮƽÆðʼλÖÃ
LCD_WR_REG(0x0021,0x0000);
for(i=0;i & lt; 7;i++)

{


LCD_WR_REG(0x0050,0x00);//ˮƽ GRAMÆðʼλÖÃ
LCD_WR_REG(0x0051,239);//ˮƽGRAMÖÕֹλÖÃ
LCD_WR_REG(0x0052,0x00);//´¹Ö±GRAMÆðʼλÖÃ
LCD_WR_REG(0x0053,319);//´¹Ö±GRAMÖÕֹλÖÃ

LCD_WR_REG16(0x0022);
for(n=0;n & lt; 76800;n++)
{


if(i==0)LCD_WR_DATA16(BLUE);
if(i==1)LCD_WR_DATA16(RED);
if(i==2)LCD_WR_DATA16(GREEN);
if(i==3)LCD_WR_DATA16(CYAN);
if(i==4)LCD_WR_DATA16(MAGENTA);
if(i==5)LCD_WR_DATA16(YELLOW);

if(i==6)LCD_WR_DATA16(BLACK);
}
delay_ms(100);
}
}