GLCD Library
Embed:
(wiki syntax)
Show/hide line numbers
GLCD.c
00001 /****************************************Copyright (c)************************************************** 00002 ** 00003 ** http://www.powermcu.com 00004 ** 00005 **--------------File Info------------------------------------------------------------------------------- 00006 ** File name: GLCD.c 00007 ** Descriptions: Has been tested SSD1289��ILI9320��R61505U��SSD1298��ST7781��SPFD5408B��ILI9325��ILI9328�� 00008 ** HX8346A��HX8347A 00009 **------------------------------------------------------------------------------------------------------ 00010 ** Created by: AVRman 00011 ** Created date: 2012-3-10 00012 ** Version: 1.3 00013 ** Descriptions: The original version 00014 ** 00015 **------------------------------------------------------------------------------------------------------ 00016 ** Modified by: 00017 ** Modified date: 00018 ** Version: 00019 ** Descriptions: 00020 ********************************************************************************************************/ 00021 00022 /* Includes ------------------------------------------------------------------*/ 00023 #include "GLCD.h" 00024 #include "HzLib.h" 00025 #include "AsciiLib.h" 00026 00027 /* Private variables ---------------------------------------------------------*/ 00028 static uint8_t LCD_Code; 00029 00030 /* Private define ------------------------------------------------------------*/ 00031 #define ILI9320 0 /* 0x9320 */ 00032 #define ILI9325 1 /* 0x9325 */ 00033 #define ILI9328 2 /* 0x9328 */ 00034 #define ILI9331 3 /* 0x9331 */ 00035 #define SSD1298 4 /* 0x8999 */ 00036 #define SSD1289 5 /* 0x8989 */ 00037 #define ST7781 6 /* 0x7783 */ 00038 #define LGDP4531 7 /* 0x4531 */ 00039 #define SPFD5408B 8 /* 0x5408 */ 00040 #define R61505U 9 /* 0x1505 0x0505 */ 00041 #define HX8346A 10 /* 0x0046 */ 00042 #define HX8347D 11 /* 0x0047 */ 00043 #define HX8347A 12 /* 0x0047 */ 00044 #define LGDP4535 13 /* 0x4535 */ 00045 #define SSD2119 14 /* 3.5 LCD 0x9919 */ 00046 00047 /******************************************************************************* 00048 * Function Name : Lcd_Configuration 00049 * Description : Configures LCD Control lines 00050 * Input : None 00051 * Output : None 00052 * Return : None 00053 * Attention : None 00054 *******************************************************************************/ 00055 static void LCD_Configuration(void) 00056 { 00057 /* Configure the LCD Control pins */ 00058 00059 /* EN = P0.19 , LE = P0.20 , DIR = P0.21 , CS = P0.22 , RS = P0.23 , RS = P0.23 */ 00060 /* RS = P0.23 , WR = P0.24 , RD = P0.25 , DB[0.7] = P2.0...P2.7 , DB[8.15]= P2.0...P2.7 */ 00061 LPC_GPIO0->FIODIR |= 0x03f80000; 00062 LPC_GPIO0->FIOSET = 0x03f80000; 00063 } 00064 00065 /******************************************************************************* 00066 * Function Name : LCD_Send 00067 * Description : LCDд���� 00068 * Input : - byte: byte to be sent 00069 * Output : None 00070 * Return : None 00071 * Attention : None 00072 *******************************************************************************/ 00073 void LCD_Send (uint16_t byte) 00074 { 00075 LPC_GPIO2->FIODIR |= 0xFF; /* P2.0...P2.7 Output */ 00076 LCD_DIR(1) /* Interface A->B */ 00077 LCD_EN(0) /* Enable 2A->2B */ 00078 LPC_GPIO2->FIOPIN = byte; /* Write D0..D7 */ 00079 LCD_LE(1) 00080 LCD_LE(0) /* latch D0..D7 */ 00081 LPC_GPIO2->FIOPIN = byte >> 8; /* Write D8..D15 */ 00082 } 00083 00084 /******************************************************************************* 00085 * Function Name : wait_delay 00086 * Description : Delay Time 00087 * Input : - nCount: Delay Time 00088 * Output : None 00089 * Return : None 00090 * Return : None 00091 * Attention : None 00092 *******************************************************************************/ 00093 static void wait_delay(int count) 00094 { 00095 while(count--); 00096 } 00097 00098 /******************************************************************************* 00099 * Function Name : LCD_Read 00100 * Description : LCD������ 00101 * Input : - byte: byte to be read 00102 * Output : None 00103 * Return : ���ض�ȡ�������� 00104 * Attention : None 00105 *******************************************************************************/ 00106 uint16_t LCD_Read (void) 00107 { 00108 uint16_t value; 00109 00110 LPC_GPIO2->FIODIR &= ~(0xFF); /* P2.0...P2.7 Input */ 00111 LCD_DIR(0); /* Interface B->A */ 00112 LCD_EN(0); /* Enable 2B->2A */ 00113 wait_delay(30); /* delay some times */ 00114 value = LPC_GPIO2->FIOPIN0; /* Read D8..D15 */ 00115 LCD_EN(1); /* Enable 1B->1A */ 00116 wait_delay(30); /* delay some times */ 00117 value = (value << 8) | LPC_GPIO2->FIOPIN0; /* Read D0..D7 */ 00118 LCD_DIR(1); 00119 return value; 00120 } 00121 00122 /******************************************************************************* 00123 * Function Name : LCD_WriteIndex 00124 * Description : LCDд�Ĵ�����ַ 00125 * Input : - index: �Ĵ�����ַ 00126 * Output : None 00127 * Return : None 00128 * Attention : None 00129 *******************************************************************************/ 00130 void LCD_WriteIndex(uint16_t index) 00131 { 00132 LCD_CS(0); 00133 LCD_RS(0); 00134 LCD_RD(1); 00135 LCD_Send( index ); 00136 wait_delay(22); 00137 LCD_WR(0); 00138 wait_delay(1); 00139 LCD_WR(1); 00140 LCD_CS(1); 00141 } 00142 00143 /******************************************************************************* 00144 * Function Name : LCD_WriteData 00145 * Description : LCDд�Ĵ������� 00146 * Input : - index: �Ĵ������� 00147 * Output : None 00148 * Return : None 00149 * Attention : None 00150 *******************************************************************************/ 00151 void LCD_WriteData(uint16_t data) 00152 { 00153 LCD_CS(0); 00154 LCD_RS(1); 00155 LCD_Send( data ); 00156 LCD_WR(0); 00157 wait_delay(1); 00158 LCD_WR(1); 00159 LCD_CS(1); 00160 } 00161 00162 /******************************************************************************* 00163 * Function Name : LCD_ReadData 00164 * Description : ��ȡ���������� 00165 * Input : None 00166 * Output : None 00167 * Return : ���ض�ȡ�������� 00168 * Attention : None 00169 *******************************************************************************/ 00170 uint16_t LCD_ReadData(void) 00171 { 00172 uint16_t value; 00173 00174 LCD_CS(0); 00175 LCD_RS(1); 00176 LCD_WR(1); 00177 LCD_RD(0); 00178 value = LCD_Read(); 00179 00180 LCD_RD(1); 00181 LCD_CS(1); 00182 00183 return value; 00184 } 00185 00186 /******************************************************************************* 00187 * Function Name : LCD_WriteReg 00188 * Description : Writes to the selected LCD register. 00189 * Input : - LCD_Reg: address of the selected register. 00190 * - LCD_RegValue: value to write to the selected register. 00191 * Output : None 00192 * Return : None 00193 * Attention : None 00194 *******************************************************************************/ 00195 void LCD_WriteReg(uint16_t LCD_Reg,uint16_t LCD_RegValue) 00196 { 00197 /* Write 16-bit Index, then Write Reg */ 00198 LCD_WriteIndex(LCD_Reg); 00199 /* Write 16-bit Reg */ 00200 LCD_WriteData(LCD_RegValue); 00201 } 00202 00203 /******************************************************************************* 00204 * Function Name : LCD_WriteReg 00205 * Description : Reads the selected LCD Register. 00206 * Input : None 00207 * Output : None 00208 * Return : LCD Register Value. 00209 * Attention : None 00210 *******************************************************************************/ 00211 uint16_t LCD_ReadReg(uint16_t LCD_Reg) 00212 { 00213 uint16_t LCD_RAM; 00214 00215 /* Write 16-bit Index (then Read Reg) */ 00216 LCD_WriteIndex(LCD_Reg); 00217 /* Read 16-bit Reg */ 00218 LCD_RAM = LCD_ReadData(); 00219 return LCD_RAM; 00220 } 00221 00222 /******************************************************************************* 00223 * Function Name : LCD_SetCursor 00224 * Description : Sets the cursor position. 00225 * Input : - Xpos: specifies the X position. 00226 * - Ypos: specifies the Y position. 00227 * Output : None 00228 * Return : None 00229 * Attention : None 00230 *******************************************************************************/ 00231 static void LCD_SetCursor(uint16_t Xpos,uint16_t Ypos) 00232 { 00233 #if ( DISP_ORIENTATION == 90 ) || ( DISP_ORIENTATION == 270 ) 00234 00235 uint16_t temp = Xpos; 00236 00237 Xpos = Ypos; 00238 Ypos = ( MAX_X - 1 ) - temp; 00239 00240 #elif ( DISP_ORIENTATION == 0 ) || ( DISP_ORIENTATION == 180 ) 00241 00242 #endif 00243 00244 switch( LCD_Code ) 00245 { 00246 default: /* 0x9320 0x9325 0x9328 0x9331 0x5408 0x1505 0x0505 0x7783 0x4531 0x4535 */ 00247 LCD_WriteReg(0x0020, Xpos ); 00248 LCD_WriteReg(0x0021, Ypos ); 00249 break; 00250 00251 case SSD1298: /* 0x8999 */ 00252 case SSD1289: /* 0x8989 */ 00253 LCD_WriteReg(0x004e, Xpos ); 00254 LCD_WriteReg(0x004f, Ypos ); 00255 break; 00256 00257 case HX8346A: /* 0x0046 */ 00258 case HX8347A: /* 0x0047 */ 00259 case HX8347D: /* 0x0047 */ 00260 LCD_WriteReg(0x02, Xpos>>8 ); 00261 LCD_WriteReg(0x03, Xpos ); 00262 00263 LCD_WriteReg(0x06, Ypos>>8 ); 00264 LCD_WriteReg(0x07, Ypos ); 00265 00266 break; 00267 case SSD2119: /* 3.5 LCD 0x9919 */ 00268 break; 00269 } 00270 } 00271 00272 /******************************************************************************* 00273 * Function Name : LCD_Delay 00274 * Description : Delay Time 00275 * Input : - nCount: Delay Time 00276 * Output : None 00277 * Return : None 00278 * Return : None 00279 * Attention : None 00280 *******************************************************************************/ 00281 static void delay_ms(uint16_t ms) 00282 { 00283 uint16_t i,j; 00284 for( i = 0; i < ms; i++ ) 00285 { 00286 for( j = 0; j < 1141; j++ ); 00287 } 00288 } 00289 00290 00291 /******************************************************************************* 00292 * Function Name : LCD_Initializtion 00293 * Description : Initialize TFT Controller. 00294 * Input : None 00295 * Output : None 00296 * Return : None 00297 * Attention : None 00298 *******************************************************************************/ 00299 void LCD_Initialization(void) 00300 { 00301 uint16_t DeviceCode; 00302 00303 LCD_Configuration(); 00304 delay_ms(100); 00305 DeviceCode = LCD_ReadReg(0x0000); /* ��ȡ��ID */ 00306 /* ��ͬ������IC ��ʼ����ͬ */ 00307 if( DeviceCode == 0x9325 || DeviceCode == 0x9328 ) 00308 { 00309 LCD_Code = ILI9325; 00310 LCD_WriteReg(0x00e7,0x0010); 00311 LCD_WriteReg(0x0000,0x0001); /* start internal osc */ 00312 LCD_WriteReg(0x0001,0x0100); 00313 LCD_WriteReg(0x0002,0x0700); /* power on sequence */ 00314 LCD_WriteReg(0x0003,(1<<12)|(1<<5)|(1<<4)|(0<<3) ); /* importance */ 00315 LCD_WriteReg(0x0004,0x0000); 00316 LCD_WriteReg(0x0008,0x0207); 00317 LCD_WriteReg(0x0009,0x0000); 00318 LCD_WriteReg(0x000a,0x0000); /* display setting */ 00319 LCD_WriteReg(0x000c,0x0001); /* display setting */ 00320 LCD_WriteReg(0x000d,0x0000); 00321 LCD_WriteReg(0x000f,0x0000); 00322 /* Power On sequence */ 00323 LCD_WriteReg(0x0010,0x0000); 00324 LCD_WriteReg(0x0011,0x0007); 00325 LCD_WriteReg(0x0012,0x0000); 00326 LCD_WriteReg(0x0013,0x0000); 00327 delay_ms(50); /* delay 50 ms */ 00328 LCD_WriteReg(0x0010,0x1590); 00329 LCD_WriteReg(0x0011,0x0227); 00330 delay_ms(50); /* delay 50 ms */ 00331 LCD_WriteReg(0x0012,0x009c); 00332 delay_ms(50); /* delay 50 ms */ 00333 LCD_WriteReg(0x0013,0x1900); 00334 LCD_WriteReg(0x0029,0x0023); 00335 LCD_WriteReg(0x002b,0x000e); 00336 delay_ms(50); /* delay 50 ms */ 00337 LCD_WriteReg(0x0020,0x0000); 00338 LCD_WriteReg(0x0021,0x0000); 00339 delay_ms(50); /* delay 50 ms */ 00340 LCD_WriteReg(0x0030,0x0007); 00341 LCD_WriteReg(0x0031,0x0707); 00342 LCD_WriteReg(0x0032,0x0006); 00343 LCD_WriteReg(0x0035,0x0704); 00344 LCD_WriteReg(0x0036,0x1f04); 00345 LCD_WriteReg(0x0037,0x0004); 00346 LCD_WriteReg(0x0038,0x0000); 00347 LCD_WriteReg(0x0039,0x0706); 00348 LCD_WriteReg(0x003c,0x0701); 00349 LCD_WriteReg(0x003d,0x000f); 00350 delay_ms(50); /* delay 50 ms */ 00351 LCD_WriteReg(0x0050,0x0000); 00352 LCD_WriteReg(0x0051,0x00ef); 00353 LCD_WriteReg(0x0052,0x0000); 00354 LCD_WriteReg(0x0053,0x013f); 00355 LCD_WriteReg(0x0060,0xa700); 00356 LCD_WriteReg(0x0061,0x0001); 00357 LCD_WriteReg(0x006a,0x0000); 00358 LCD_WriteReg(0x0080,0x0000); 00359 LCD_WriteReg(0x0081,0x0000); 00360 LCD_WriteReg(0x0082,0x0000); 00361 LCD_WriteReg(0x0083,0x0000); 00362 LCD_WriteReg(0x0084,0x0000); 00363 LCD_WriteReg(0x0085,0x0000); 00364 00365 LCD_WriteReg(0x0090,0x0010); 00366 LCD_WriteReg(0x0092,0x0000); 00367 LCD_WriteReg(0x0093,0x0003); 00368 LCD_WriteReg(0x0095,0x0110); 00369 LCD_WriteReg(0x0097,0x0000); 00370 LCD_WriteReg(0x0098,0x0000); 00371 /* display on sequence */ 00372 LCD_WriteReg(0x0007,0x0133); 00373 00374 LCD_WriteReg(0x0020,0x0000); /* ����ַ0 */ 00375 LCD_WriteReg(0x0021,0x0000); /* ����ַ0 */ 00376 } 00377 // else if( DeviceCode == 0x9320 || DeviceCode == 0x9300 ) 00378 // { 00379 // LCD_Code = ILI9320; 00380 // LCD_WriteReg(0x00,0x0000); 00381 // LCD_WriteReg(0x01,0x0100); /* Driver Output Contral */ 00382 // LCD_WriteReg(0x02,0x0700); /* LCD Driver Waveform Contral */ 00383 // LCD_WriteReg(0x03,0x1018); /* Entry Mode Set */ 00384 // 00385 // LCD_WriteReg(0x04,0x0000); /* Scalling Contral */ 00386 // LCD_WriteReg(0x08,0x0202); /* Display Contral */ 00387 // LCD_WriteReg(0x09,0x0000); /* Display Contral 3.(0x0000) */ 00388 // LCD_WriteReg(0x0a,0x0000); /* Frame Cycle Contal.(0x0000) */ 00389 // LCD_WriteReg(0x0c,(1<<0)); /* Extern Display Interface Contral */ 00390 // LCD_WriteReg(0x0d,0x0000); /* Frame Maker Position */ 00391 // LCD_WriteReg(0x0f,0x0000); /* Extern Display Interface Contral 2. */ 00392 // 00393 // delay_ms(100); /* delay 100 ms */ 00394 // LCD_WriteReg(0x07,0x0101); /* Display Contral */ 00395 // delay_ms(100); /* delay 100 ms */ 00396 // 00397 // LCD_WriteReg(0x10,(1<<12)|(0<<8)|(1<<7)|(1<<6)|(0<<4)); /* Power Control 1.(0x16b0) */ 00398 // LCD_WriteReg(0x11,0x0007); /* Power Control 2 */ 00399 // LCD_WriteReg(0x12,(1<<8)|(1<<4)|(0<<0)); /* Power Control 3.(0x0138) */ 00400 // LCD_WriteReg(0x13,0x0b00); /* Power Control 4 */ 00401 // LCD_WriteReg(0x29,0x0000); /* Power Control 7 */ 00402 // 00403 // LCD_WriteReg(0x2b,(1<<14)|(1<<4)); 00404 // 00405 // LCD_WriteReg(0x50,0); /* Set X Start */ 00406 // LCD_WriteReg(0x51,239); /* Set X End */ 00407 // LCD_WriteReg(0x52,0); /* Set Y Start */ 00408 // LCD_WriteReg(0x53,319); /* Set Y End */ 00409 // 00410 // LCD_WriteReg(0x60,0x2700); /* Driver Output Control */ 00411 // LCD_WriteReg(0x61,0x0001); /* Driver Output Control */ 00412 // LCD_WriteReg(0x6a,0x0000); /* Vertical Srcoll Control */ 00413 // 00414 // LCD_WriteReg(0x80,0x0000); /* Display Position? Partial Display 1 */ 00415 // LCD_WriteReg(0x81,0x0000); /* RAM Address Start? Partial Display 1 */ 00416 // LCD_WriteReg(0x82,0x0000); /* RAM Address End-Partial Display 1 */ 00417 // LCD_WriteReg(0x83,0x0000); /* Displsy Position? Partial Display 2 */ 00418 // LCD_WriteReg(0x84,0x0000); /* RAM Address Start? Partial Display 2 */ 00419 // LCD_WriteReg(0x85,0x0000); /* RAM Address End? Partial Display 2 */ 00420 // 00421 // LCD_WriteReg(0x90,(0<<7)|(16<<0)); /* Frame Cycle Contral.(0x0013) */ 00422 // LCD_WriteReg(0x92,0x0000); /* Panel Interface Contral 2.(0x0000) */ 00423 // LCD_WriteReg(0x93,0x0001); /* Panel Interface Contral 3. */ 00424 // LCD_WriteReg(0x95,0x0110); /* Frame Cycle Contral.(0x0110) */ 00425 // LCD_WriteReg(0x97,(0<<8)); 00426 // LCD_WriteReg(0x98,0x0000); /* Frame Cycle Contral */ 00427 // 00428 // LCD_WriteReg(0x07,0x0173); 00429 // } 00430 // else if( DeviceCode == 0x9331 ) 00431 // { 00432 // LCD_Code = ILI9331; 00433 // LCD_WriteReg(0x00E7, 0x1014); 00434 // LCD_WriteReg(0x0001, 0x0100); /* set SS and SM bit */ 00435 // LCD_WriteReg(0x0002, 0x0200); /* set 1 line inversion */ 00436 // LCD_WriteReg(0x0003, 0x1030); /* set GRAM write direction and BGR=1 */ 00437 // LCD_WriteReg(0x0008, 0x0202); /* set the back porch and front porch */ 00438 // LCD_WriteReg(0x0009, 0x0000); /* set non-display area refresh cycle ISC[3:0] */ 00439 // LCD_WriteReg(0x000A, 0x0000); /* FMARK function */ 00440 // LCD_WriteReg(0x000C, 0x0000); /* RGB interface setting */ 00441 // LCD_WriteReg(0x000D, 0x0000); /* Frame marker Position */ 00442 // LCD_WriteReg(0x000F, 0x0000); /* RGB interface polarity */ 00443 // /* Power On sequence */ 00444 // LCD_WriteReg(0x0010, 0x0000); /* SAP, BT[3:0], AP, DSTB, SLP, STB */ 00445 // LCD_WriteReg(0x0011, 0x0007); /* DC1[2:0], DC0[2:0], VC[2:0] */ 00446 // LCD_WriteReg(0x0012, 0x0000); /* VREG1OUT voltage */ 00447 // LCD_WriteReg(0x0013, 0x0000); /* VDV[4:0] for VCOM amplitude */ 00448 // delay_ms(200); /* delay 200 ms */ 00449 // LCD_WriteReg(0x0010, 0x1690); /* SAP, BT[3:0], AP, DSTB, SLP, STB */ 00450 // LCD_WriteReg(0x0011, 0x0227); /* DC1[2:0], DC0[2:0], VC[2:0] */ 00451 // delay_ms(50); /* delay 50 ms */ 00452 // LCD_WriteReg(0x0012, 0x000C); /* Internal reference voltage= Vci */ 00453 // delay_ms(50); /* delay 50 ms */ 00454 // LCD_WriteReg(0x0013, 0x0800); /* Set VDV[4:0] for VCOM amplitude */ 00455 // LCD_WriteReg(0x0029, 0x0011); /* Set VCM[5:0] for VCOMH */ 00456 // LCD_WriteReg(0x002B, 0x000B); /* Set Frame Rate */ 00457 // delay_ms(50); /* delay 50 ms */ 00458 // LCD_WriteReg(0x0020, 0x0000); /* GRAM horizontal Address */ 00459 // LCD_WriteReg(0x0021, 0x0000); /* GRAM Vertical Address */ 00460 // /* Adjust the Gamma Curve */ 00461 // LCD_WriteReg(0x0030, 0x0000); 00462 // LCD_WriteReg(0x0031, 0x0106); 00463 // LCD_WriteReg(0x0032, 0x0000); 00464 // LCD_WriteReg(0x0035, 0x0204); 00465 // LCD_WriteReg(0x0036, 0x160A); 00466 // LCD_WriteReg(0x0037, 0x0707); 00467 // LCD_WriteReg(0x0038, 0x0106); 00468 // LCD_WriteReg(0x0039, 0x0707); 00469 // LCD_WriteReg(0x003C, 0x0402); 00470 // LCD_WriteReg(0x003D, 0x0C0F); 00471 // /* Set GRAM area */ 00472 // LCD_WriteReg(0x0050, 0x0000); /* Horizontal GRAM Start Address */ 00473 // LCD_WriteReg(0x0051, 0x00EF); /* Horizontal GRAM End Address */ 00474 // LCD_WriteReg(0x0052, 0x0000); /* Vertical GRAM Start Address */ 00475 // LCD_WriteReg(0x0053, 0x013F); /* Vertical GRAM Start Address */ 00476 // LCD_WriteReg(0x0060, 0x2700); /* Gate Scan Line */ 00477 // LCD_WriteReg(0x0061, 0x0001); /* NDL,VLE, REV */ 00478 // LCD_WriteReg(0x006A, 0x0000); /* set scrolling line */ 00479 // /* Partial Display Control */ 00480 // LCD_WriteReg(0x0080, 0x0000); 00481 // LCD_WriteReg(0x0081, 0x0000); 00482 // LCD_WriteReg(0x0082, 0x0000); 00483 // LCD_WriteReg(0x0083, 0x0000); 00484 // LCD_WriteReg(0x0084, 0x0000); 00485 // LCD_WriteReg(0x0085, 0x0000); 00486 // /* Panel Control */ 00487 // LCD_WriteReg(0x0090, 0x0010); 00488 // LCD_WriteReg(0x0092, 0x0600); 00489 // LCD_WriteReg(0x0007,0x0021); 00490 // delay_ms(50); /* delay 50 ms */ 00491 // LCD_WriteReg(0x0007,0x0061); 00492 // delay_ms(50); /* delay 50 ms */ 00493 // LCD_WriteReg(0x0007,0x0133); /* 262K color and display ON */ 00494 // } 00495 // else if( DeviceCode == 0x9919 ) 00496 // { 00497 // LCD_Code = SSD2119; 00498 // /* POWER ON &RESET DISPLAY OFF */ 00499 // LCD_WriteReg(0x28,0x0006); 00500 // LCD_WriteReg(0x00,0x0001); 00501 // LCD_WriteReg(0x10,0x0000); 00502 // LCD_WriteReg(0x01,0x72ef); 00503 // LCD_WriteReg(0x02,0x0600); 00504 // LCD_WriteReg(0x03,0x6a38); 00505 // LCD_WriteReg(0x11,0x6874); 00506 // LCD_WriteReg(0x0f,0x0000); /* RAM WRITE DATA MASK */ 00507 // LCD_WriteReg(0x0b,0x5308); /* RAM WRITE DATA MASK */ 00508 // LCD_WriteReg(0x0c,0x0003); 00509 // LCD_WriteReg(0x0d,0x000a); 00510 // LCD_WriteReg(0x0e,0x2e00); 00511 // LCD_WriteReg(0x1e,0x00be); 00512 // LCD_WriteReg(0x25,0x8000); 00513 // LCD_WriteReg(0x26,0x7800); 00514 // LCD_WriteReg(0x27,0x0078); 00515 // LCD_WriteReg(0x4e,0x0000); 00516 // LCD_WriteReg(0x4f,0x0000); 00517 // LCD_WriteReg(0x12,0x08d9); 00518 // /* Adjust the Gamma Curve */ 00519 // LCD_WriteReg(0x30,0x0000); 00520 // LCD_WriteReg(0x31,0x0104); 00521 // LCD_WriteReg(0x32,0x0100); 00522 // LCD_WriteReg(0x33,0x0305); 00523 // LCD_WriteReg(0x34,0x0505); 00524 // LCD_WriteReg(0x35,0x0305); 00525 // LCD_WriteReg(0x36,0x0707); 00526 // LCD_WriteReg(0x37,0x0300); 00527 // LCD_WriteReg(0x3a,0x1200); 00528 // LCD_WriteReg(0x3b,0x0800); 00529 // LCD_WriteReg(0x07,0x0033); 00530 // } 00531 // else if( DeviceCode == 0x1505 || DeviceCode == 0x0505 ) 00532 // { 00533 // LCD_Code = R61505U; 00534 // /* initializing funciton */ 00535 // LCD_WriteReg(0xe5,0x8000); /* Set the internal vcore voltage */ 00536 // LCD_WriteReg(0x00,0x0001); /* start OSC */ 00537 // LCD_WriteReg(0x2b,0x0010); /* Set the frame rate as 80 when the internal resistor is used for oscillator circuit */ 00538 // LCD_WriteReg(0x01,0x0100); /* s720 to s1 ; G1 to G320 */ 00539 // LCD_WriteReg(0x02,0x0700); /* set the line inversion */ 00540 // LCD_WriteReg(0x03,0x1018); /* 65536 colors */ 00541 // LCD_WriteReg(0x04,0x0000); 00542 // LCD_WriteReg(0x08,0x0202); /* specify the line number of front and back porch periods respectively */ 00543 // LCD_WriteReg(0x09,0x0000); 00544 // LCD_WriteReg(0x0a,0x0000); 00545 // LCD_WriteReg(0x0c,0x0000); /* select internal system clock */ 00546 // LCD_WriteReg(0x0d,0x0000); 00547 // LCD_WriteReg(0x0f,0x0000); 00548 // LCD_WriteReg(0x50,0x0000); /* set windows adress */ 00549 // LCD_WriteReg(0x51,0x00ef); 00550 // LCD_WriteReg(0x52,0x0000); 00551 // LCD_WriteReg(0x53,0x013f); 00552 // LCD_WriteReg(0x60,0x2700); 00553 // LCD_WriteReg(0x61,0x0001); 00554 // LCD_WriteReg(0x6a,0x0000); 00555 // LCD_WriteReg(0x80,0x0000); 00556 // LCD_WriteReg(0x81,0x0000); 00557 // LCD_WriteReg(0x82,0x0000); 00558 // LCD_WriteReg(0x83,0x0000); 00559 // LCD_WriteReg(0x84,0x0000); 00560 // LCD_WriteReg(0x85,0x0000); 00561 // LCD_WriteReg(0x90,0x0010); 00562 // LCD_WriteReg(0x92,0x0000); 00563 // LCD_WriteReg(0x93,0x0003); 00564 // LCD_WriteReg(0x95,0x0110); 00565 // LCD_WriteReg(0x97,0x0000); 00566 // LCD_WriteReg(0x98,0x0000); 00567 // /* power setting function */ 00568 // LCD_WriteReg(0x10,0x0000); 00569 // LCD_WriteReg(0x11,0x0000); 00570 // LCD_WriteReg(0x12,0x0000); 00571 // LCD_WriteReg(0x13,0x0000); 00572 // delay_ms(100); 00573 // LCD_WriteReg(0x10,0x17b0); 00574 // LCD_WriteReg(0x11,0x0004); 00575 // delay_ms(50); 00576 // LCD_WriteReg(0x12,0x013e); 00577 // delay_ms(50); 00578 // LCD_WriteReg(0x13,0x1f00); 00579 // LCD_WriteReg(0x29,0x000f); 00580 // delay_ms(50); 00581 // LCD_WriteReg(0x20,0x0000); 00582 // LCD_WriteReg(0x21,0x0000); 00583 // 00584 // /* initializing function */ 00585 // LCD_WriteReg(0x30,0x0204); 00586 // LCD_WriteReg(0x31,0x0001); 00587 // LCD_WriteReg(0x32,0x0000); 00588 // LCD_WriteReg(0x35,0x0206); 00589 // LCD_WriteReg(0x36,0x0600); 00590 // LCD_WriteReg(0x37,0x0500); 00591 // LCD_WriteReg(0x38,0x0505); 00592 // LCD_WriteReg(0x39,0x0407); 00593 // LCD_WriteReg(0x3c,0x0500); 00594 // LCD_WriteReg(0x3d,0x0503); 00595 // 00596 // /* display on */ 00597 // LCD_WriteReg(0x07,0x0173); 00598 // } 00599 // else if( DeviceCode == 0x8989 ) 00600 // { 00601 // LCD_Code = SSD1289; 00602 // LCD_WriteReg(0x0000,0x0001); delay_ms(50); /* ���� */ 00603 // LCD_WriteReg(0x0003,0xA8A4); delay_ms(50); 00604 // LCD_WriteReg(0x000C,0x0000); delay_ms(50); 00605 // LCD_WriteReg(0x000D,0x080C); delay_ms(50); 00606 // LCD_WriteReg(0x000E,0x2B00); delay_ms(50); 00607 // LCD_WriteReg(0x001E,0x00B0); delay_ms(50); 00608 // LCD_WriteReg(0x0001,0x2B3F); delay_ms(50); /* �����������320*240 0x2B3F */ 00609 // LCD_WriteReg(0x0002,0x0600); delay_ms(50); 00610 // LCD_WriteReg(0x0010,0x0000); delay_ms(50); 00611 // LCD_WriteReg(0x0011,0x6070); delay_ms(50); /* �������ݸ�ʽ 16λɫ ���� 0x6070 */ 00612 // LCD_WriteReg(0x0005,0x0000); delay_ms(50); 00613 // LCD_WriteReg(0x0006,0x0000); delay_ms(50); 00614 // LCD_WriteReg(0x0016,0xEF1C); delay_ms(50); 00615 // LCD_WriteReg(0x0017,0x0003); delay_ms(50); 00616 // LCD_WriteReg(0x0007,0x0133); delay_ms(50); 00617 // LCD_WriteReg(0x000B,0x0000); delay_ms(50); 00618 // LCD_WriteReg(0x000F,0x0000); delay_ms(50); /* ɨ�迪ʼ��ַ */ 00619 // LCD_WriteReg(0x0041,0x0000); delay_ms(50); 00620 // LCD_WriteReg(0x0042,0x0000); delay_ms(50); 00621 // LCD_WriteReg(0x0048,0x0000); delay_ms(50); 00622 // LCD_WriteReg(0x0049,0x013F); delay_ms(50); 00623 // LCD_WriteReg(0x004A,0x0000); delay_ms(50); 00624 // LCD_WriteReg(0x004B,0x0000); delay_ms(50); 00625 // LCD_WriteReg(0x0044,0xEF00); delay_ms(50); 00626 // LCD_WriteReg(0x0045,0x0000); delay_ms(50); 00627 // LCD_WriteReg(0x0046,0x013F); delay_ms(50); 00628 // LCD_WriteReg(0x0030,0x0707); delay_ms(50); 00629 // LCD_WriteReg(0x0031,0x0204); delay_ms(50); 00630 // LCD_WriteReg(0x0032,0x0204); delay_ms(50); 00631 // LCD_WriteReg(0x0033,0x0502); delay_ms(50); 00632 // LCD_WriteReg(0x0034,0x0507); delay_ms(50); 00633 // LCD_WriteReg(0x0035,0x0204); delay_ms(50); 00634 // LCD_WriteReg(0x0036,0x0204); delay_ms(50); 00635 // LCD_WriteReg(0x0037,0x0502); delay_ms(50); 00636 // LCD_WriteReg(0x003A,0x0302); delay_ms(50); 00637 // LCD_WriteReg(0x003B,0x0302); delay_ms(50); 00638 // LCD_WriteReg(0x0023,0x0000); delay_ms(50); 00639 // LCD_WriteReg(0x0024,0x0000); delay_ms(50); 00640 // LCD_WriteReg(0x0025,0x8000); delay_ms(50); 00641 // LCD_WriteReg(0x004f,0); /* ����ַ0 */ 00642 // LCD_WriteReg(0x004e,0); /* ����ַ0 */ 00643 // } 00644 // else if( DeviceCode == 0x8999 ) 00645 // { 00646 // LCD_Code = SSD1298; 00647 // LCD_WriteReg(0x0028,0x0006); 00648 // LCD_WriteReg(0x0000,0x0001); 00649 // LCD_WriteReg(0x0003,0xaea4); /* power control 1---line frequency and VHG,VGL voltage */ 00650 // LCD_WriteReg(0x000c,0x0004); /* power control 2---VCIX2 output voltage */ 00651 // LCD_WriteReg(0x000d,0x000c); /* power control 3---Vlcd63 voltage */ 00652 // LCD_WriteReg(0x000e,0x2800); /* power control 4---VCOMA voltage VCOML=VCOMH*0.9475-VCOMA */ 00653 // LCD_WriteReg(0x001e,0x00b5); /* POWER CONTROL 5---VCOMH voltage */ 00654 // LCD_WriteReg(0x0001,0x3b3f); 00655 // LCD_WriteReg(0x0002,0x0600); 00656 // LCD_WriteReg(0x0010,0x0000); 00657 // LCD_WriteReg(0x0011,0x6830); 00658 // LCD_WriteReg(0x0005,0x0000); 00659 // LCD_WriteReg(0x0006,0x0000); 00660 // LCD_WriteReg(0x0016,0xef1c); 00661 // LCD_WriteReg(0x0007,0x0033); /* Display control 1 */ 00662 // /* when GON=1 and DTE=0,all gate outputs become VGL */ 00663 // /* when GON=1 and DTE=0,all gate outputs become VGH */ 00664 // /* non-selected gate wires become VGL */ 00665 // LCD_WriteReg(0x000b,0x0000); 00666 // LCD_WriteReg(0x000f,0x0000); 00667 // LCD_WriteReg(0x0041,0x0000); 00668 // LCD_WriteReg(0x0042,0x0000); 00669 // LCD_WriteReg(0x0048,0x0000); 00670 // LCD_WriteReg(0x0049,0x013f); 00671 // LCD_WriteReg(0x004a,0x0000); 00672 // LCD_WriteReg(0x004b,0x0000); 00673 // LCD_WriteReg(0x0044,0xef00); /* Horizontal RAM start and end address */ 00674 // LCD_WriteReg(0x0045,0x0000); /* Vretical RAM start address */ 00675 // LCD_WriteReg(0x0046,0x013f); /* Vretical RAM end address */ 00676 // LCD_WriteReg(0x004e,0x0000); /* set GDDRAM x address counter */ 00677 // LCD_WriteReg(0x004f,0x0000); /* set GDDRAM y address counter */ 00678 // /* y control */ 00679 // LCD_WriteReg(0x0030,0x0707); 00680 // LCD_WriteReg(0x0031,0x0202); 00681 // LCD_WriteReg(0x0032,0x0204); 00682 // LCD_WriteReg(0x0033,0x0502); 00683 // LCD_WriteReg(0x0034,0x0507); 00684 // LCD_WriteReg(0x0035,0x0204); 00685 // LCD_WriteReg(0x0036,0x0204); 00686 // LCD_WriteReg(0x0037,0x0502); 00687 // LCD_WriteReg(0x003a,0x0302); 00688 // LCD_WriteReg(0x003b,0x0302); 00689 // LCD_WriteReg(0x0023,0x0000); 00690 // LCD_WriteReg(0x0024,0x0000); 00691 // LCD_WriteReg(0x0025,0x8000); 00692 // LCD_WriteReg(0x0026,0x7000); 00693 // LCD_WriteReg(0x0020,0xb0eb); 00694 // LCD_WriteReg(0x0027,0x007c); 00695 // } 00696 // else if( DeviceCode == 0x5408 ) 00697 // { 00698 // LCD_Code = SPFD5408B; 00699 // 00700 // LCD_WriteReg(0x0001,0x0100); /* Driver Output Contral Register */ 00701 // LCD_WriteReg(0x0002,0x0700); /* LCD Driving Waveform Contral */ 00702 // LCD_WriteReg(0x0003,0x1030); /* Entry Mode���� */ 00703 // 00704 // LCD_WriteReg(0x0004,0x0000); /* Scalling Control register */ 00705 // LCD_WriteReg(0x0008,0x0207); /* Display Control 2 */ 00706 // LCD_WriteReg(0x0009,0x0000); /* Display Control 3 */ 00707 // LCD_WriteReg(0x000A,0x0000); /* Frame Cycle Control */ 00708 // LCD_WriteReg(0x000C,0x0000); /* External Display Interface Control 1 */ 00709 // LCD_WriteReg(0x000D,0x0000); /* Frame Maker Position */ 00710 // LCD_WriteReg(0x000F,0x0000); /* External Display Interface Control 2 */ 00711 // delay_ms(50); 00712 // LCD_WriteReg(0x0007,0x0101); /* Display Control */ 00713 // delay_ms(50); 00714 // LCD_WriteReg(0x0010,0x16B0); /* Power Control 1 */ 00715 // LCD_WriteReg(0x0011,0x0001); /* Power Control 2 */ 00716 // LCD_WriteReg(0x0017,0x0001); /* Power Control 3 */ 00717 // LCD_WriteReg(0x0012,0x0138); /* Power Control 4 */ 00718 // LCD_WriteReg(0x0013,0x0800); /* Power Control 5 */ 00719 // LCD_WriteReg(0x0029,0x0009); /* NVM read data 2 */ 00720 // LCD_WriteReg(0x002a,0x0009); /* NVM read data 3 */ 00721 // LCD_WriteReg(0x00a4,0x0000); 00722 // LCD_WriteReg(0x0050,0x0000); /* ���ò������ڵ�X�Ὺʼ�� */ 00723 // LCD_WriteReg(0x0051,0x00EF); /* ���ò������ڵ�X������� */ 00724 // LCD_WriteReg(0x0052,0x0000); /* ���ò������ڵ�Y�Ὺʼ�� */ 00725 // LCD_WriteReg(0x0053,0x013F); /* ���ò������ڵ�Y������� */ 00726 // 00727 // LCD_WriteReg(0x0060,0x2700); /* Driver Output Control */ 00728 // /* ������Ļ�ĵ����Լ�ɨ�����ʼ�� */ 00729 // LCD_WriteReg(0x0061,0x0003); /* Driver Output Control */ 00730 // LCD_WriteReg(0x006A,0x0000); /* Vertical Scroll Control */ 00731 // 00732 // LCD_WriteReg(0x0080,0x0000); /* Display Position �C Partial Display 1 */ 00733 // LCD_WriteReg(0x0081,0x0000); /* RAM Address Start �C Partial Display 1 */ 00734 // LCD_WriteReg(0x0082,0x0000); /* RAM address End - Partial Display 1 */ 00735 // LCD_WriteReg(0x0083,0x0000); /* Display Position �C Partial Display 2 */ 00736 // LCD_WriteReg(0x0084,0x0000); /* RAM Address Start �C Partial Display 2 */ 00737 // LCD_WriteReg(0x0085,0x0000); /* RAM address End �C Partail Display2 */ 00738 // LCD_WriteReg(0x0090,0x0013); /* Frame Cycle Control */ 00739 // LCD_WriteReg(0x0092,0x0000); /* Panel Interface Control 2 */ 00740 // LCD_WriteReg(0x0093,0x0003); /* Panel Interface control 3 */ 00741 // LCD_WriteReg(0x0095,0x0110); /* Frame Cycle Control */ 00742 // LCD_WriteReg(0x0007,0x0173); 00743 // } 00744 // else if( DeviceCode == 0x4531 ) 00745 // { 00746 // LCD_Code = LGDP4531; 00747 // /* Setup display */ 00748 // LCD_WriteReg(0x00,0x0001); 00749 // LCD_WriteReg(0x10,0x0628); 00750 // LCD_WriteReg(0x12,0x0006); 00751 // LCD_WriteReg(0x13,0x0A32); 00752 // LCD_WriteReg(0x11,0x0040); 00753 // LCD_WriteReg(0x15,0x0050); 00754 // LCD_WriteReg(0x12,0x0016); 00755 // delay_ms(50); 00756 // LCD_WriteReg(0x10,0x5660); 00757 // delay_ms(50); 00758 // LCD_WriteReg(0x13,0x2A4E); 00759 // LCD_WriteReg(0x01,0x0100); 00760 // LCD_WriteReg(0x02,0x0300); 00761 // LCD_WriteReg(0x03,0x1030); 00762 // LCD_WriteReg(0x08,0x0202); 00763 // LCD_WriteReg(0x0A,0x0000); 00764 // LCD_WriteReg(0x30,0x0000); 00765 // LCD_WriteReg(0x31,0x0402); 00766 // LCD_WriteReg(0x32,0x0106); 00767 // LCD_WriteReg(0x33,0x0700); 00768 // LCD_WriteReg(0x34,0x0104); 00769 // LCD_WriteReg(0x35,0x0301); 00770 // LCD_WriteReg(0x36,0x0707); 00771 // LCD_WriteReg(0x37,0x0305); 00772 // LCD_WriteReg(0x38,0x0208); 00773 // LCD_WriteReg(0x39,0x0F0B); 00774 // delay_ms(50); 00775 // LCD_WriteReg(0x41,0x0002); 00776 // LCD_WriteReg(0x60,0x2700); 00777 // LCD_WriteReg(0x61,0x0001); 00778 // LCD_WriteReg(0x90,0x0119); 00779 // LCD_WriteReg(0x92,0x010A); 00780 // LCD_WriteReg(0x93,0x0004); 00781 // LCD_WriteReg(0xA0,0x0100); 00782 // delay_ms(50); 00783 // LCD_WriteReg(0x07,0x0133); 00784 // delay_ms(50); 00785 // LCD_WriteReg(0xA0,0x0000); 00786 // } 00787 // else if( DeviceCode == 0x4535 ) 00788 // { 00789 // LCD_Code = LGDP4535; 00790 // LCD_WriteReg(0x15, 0x0030); /* Set the internal vcore voltage */ 00791 // LCD_WriteReg(0x9A, 0x0010); /* Start internal OSC */ 00792 // LCD_WriteReg(0x11, 0x0020); /* set SS and SM bit */ 00793 // LCD_WriteReg(0x10, 0x3428); /* set 1 line inversion */ 00794 // LCD_WriteReg(0x12, 0x0002); /* set GRAM write direction and BGR=1 */ 00795 // LCD_WriteReg(0x13, 0x1038); /* Resize register */ 00796 // delay_ms(40); 00797 // LCD_WriteReg(0x12, 0x0012); /* set the back porch and front porch */ 00798 // delay_ms(40); 00799 // LCD_WriteReg(0x10, 0x3420); /* set non-display area refresh cycle ISC[3:0] */ 00800 // LCD_WriteReg(0x13, 0x3045); /* FMARK function */ 00801 // delay_ms(70); 00802 // LCD_WriteReg(0x30, 0x0000); /* RGB interface setting */ 00803 // LCD_WriteReg(0x31, 0x0402); /* Frame marker Position */ 00804 // LCD_WriteReg(0x32, 0x0307); /* RGB interface polarity */ 00805 // LCD_WriteReg(0x33, 0x0304); /* SAP, BT[3:0], AP, DSTB, SLP, STB */ 00806 // LCD_WriteReg(0x34, 0x0004); /* DC1[2:0], DC0[2:0], VC[2:0] */ 00807 // LCD_WriteReg(0x35, 0x0401); /* VREG1OUT voltage */ 00808 // LCD_WriteReg(0x36, 0x0707); /* VDV[4:0] for VCOM amplitude */ 00809 // LCD_WriteReg(0x37, 0x0305); /* SAP, BT[3:0], AP, DSTB, SLP, STB */ 00810 // LCD_WriteReg(0x38, 0x0610); /* DC1[2:0], DC0[2:0], VC[2:0] */ 00811 // LCD_WriteReg(0x39, 0x0610); /* VREG1OUT voltage */ 00812 // LCD_WriteReg(0x01, 0x0100); /* VDV[4:0] for VCOM amplitude */ 00813 // LCD_WriteReg(0x02, 0x0300); /* VCM[4:0] for VCOMH */ 00814 // LCD_WriteReg(0x03, 0x1030); /* GRAM horizontal Address */ 00815 // LCD_WriteReg(0x08, 0x0808); /* GRAM Vertical Address */ 00816 // LCD_WriteReg(0x0A, 0x0008); 00817 // LCD_WriteReg(0x60, 0x2700); /* Gate Scan Line */ 00818 // LCD_WriteReg(0x61, 0x0001); /* NDL,VLE, REV */ 00819 // LCD_WriteReg(0x90, 0x013E); 00820 // LCD_WriteReg(0x92, 0x0100); 00821 // LCD_WriteReg(0x93, 0x0100); 00822 // LCD_WriteReg(0xA0, 0x3000); 00823 // LCD_WriteReg(0xA3, 0x0010); 00824 // LCD_WriteReg(0x07, 0x0001); 00825 // LCD_WriteReg(0x07, 0x0021); 00826 // LCD_WriteReg(0x07, 0x0023); 00827 // LCD_WriteReg(0x07, 0x0033); 00828 // LCD_WriteReg(0x07, 0x0133); 00829 // } 00830 // else if( DeviceCode == 0x0047 ) 00831 // { 00832 // LCD_Code = HX8347D; 00833 // /* Start Initial Sequence */ 00834 // LCD_WriteReg(0xEA,0x00); 00835 // LCD_WriteReg(0xEB,0x20); 00836 // LCD_WriteReg(0xEC,0x0C); 00837 // LCD_WriteReg(0xED,0xC4); 00838 // LCD_WriteReg(0xE8,0x40); 00839 // LCD_WriteReg(0xE9,0x38); 00840 // LCD_WriteReg(0xF1,0x01); 00841 // LCD_WriteReg(0xF2,0x10); 00842 // LCD_WriteReg(0x27,0xA3); 00843 // /* GAMMA SETTING */ 00844 // LCD_WriteReg(0x40,0x01); 00845 // LCD_WriteReg(0x41,0x00); 00846 // LCD_WriteReg(0x42,0x00); 00847 // LCD_WriteReg(0x43,0x10); 00848 // LCD_WriteReg(0x44,0x0E); 00849 // LCD_WriteReg(0x45,0x24); 00850 // LCD_WriteReg(0x46,0x04); 00851 // LCD_WriteReg(0x47,0x50); 00852 // LCD_WriteReg(0x48,0x02); 00853 // LCD_WriteReg(0x49,0x13); 00854 // LCD_WriteReg(0x4A,0x19); 00855 // LCD_WriteReg(0x4B,0x19); 00856 // LCD_WriteReg(0x4C,0x16); 00857 // LCD_WriteReg(0x50,0x1B); 00858 // LCD_WriteReg(0x51,0x31); 00859 // LCD_WriteReg(0x52,0x2F); 00860 // LCD_WriteReg(0x53,0x3F); 00861 // LCD_WriteReg(0x54,0x3F); 00862 // LCD_WriteReg(0x55,0x3E); 00863 // LCD_WriteReg(0x56,0x2F); 00864 // LCD_WriteReg(0x57,0x7B); 00865 // LCD_WriteReg(0x58,0x09); 00866 // LCD_WriteReg(0x59,0x06); 00867 // LCD_WriteReg(0x5A,0x06); 00868 // LCD_WriteReg(0x5B,0x0C); 00869 // LCD_WriteReg(0x5C,0x1D); 00870 // LCD_WriteReg(0x5D,0xCC); 00871 // /* Power Voltage Setting */ 00872 // LCD_WriteReg(0x1B,0x18); 00873 // LCD_WriteReg(0x1A,0x01); 00874 // LCD_WriteReg(0x24,0x15); 00875 // LCD_WriteReg(0x25,0x50); 00876 // LCD_WriteReg(0x23,0x8B); 00877 // LCD_WriteReg(0x18,0x36); 00878 // LCD_WriteReg(0x19,0x01); 00879 // LCD_WriteReg(0x01,0x00); 00880 // LCD_WriteReg(0x1F,0x88); 00881 // delay_ms(50); 00882 // LCD_WriteReg(0x1F,0x80); 00883 // delay_ms(50); 00884 // LCD_WriteReg(0x1F,0x90); 00885 // delay_ms(50); 00886 // LCD_WriteReg(0x1F,0xD0); 00887 // delay_ms(50); 00888 // LCD_WriteReg(0x17,0x05); 00889 // LCD_WriteReg(0x36,0x00); 00890 // LCD_WriteReg(0x28,0x38); 00891 // delay_ms(50); 00892 // LCD_WriteReg(0x28,0x3C); 00893 // } 00894 // else if( DeviceCode == 0x7783 ) 00895 // { 00896 // LCD_Code = ST7781; 00897 // /* Start Initial Sequence */ 00898 // LCD_WriteReg(0x00FF,0x0001); 00899 // LCD_WriteReg(0x00F3,0x0008); 00900 // LCD_WriteReg(0x0001,0x0100); 00901 // LCD_WriteReg(0x0002,0x0700); 00902 // LCD_WriteReg(0x0003,0x1030); 00903 // LCD_WriteReg(0x0008,0x0302); 00904 // LCD_WriteReg(0x0008,0x0207); 00905 // LCD_WriteReg(0x0009,0x0000); 00906 // LCD_WriteReg(0x000A,0x0000); 00907 // LCD_WriteReg(0x0010,0x0000); 00908 // LCD_WriteReg(0x0011,0x0005); 00909 // LCD_WriteReg(0x0012,0x0000); 00910 // LCD_WriteReg(0x0013,0x0000); 00911 // delay_ms(50); 00912 // LCD_WriteReg(0x0010,0x12B0); 00913 // delay_ms(50); 00914 // LCD_WriteReg(0x0011,0x0007); 00915 // delay_ms(50); 00916 // LCD_WriteReg(0x0012,0x008B); 00917 // delay_ms(50); 00918 // LCD_WriteReg(0x0013,0x1700); 00919 // delay_ms(50); 00920 // LCD_WriteReg(0x0029,0x0022); 00921 // LCD_WriteReg(0x0030,0x0000); 00922 // LCD_WriteReg(0x0031,0x0707); 00923 // LCD_WriteReg(0x0032,0x0505); 00924 // LCD_WriteReg(0x0035,0x0107); 00925 // LCD_WriteReg(0x0036,0x0008); 00926 // LCD_WriteReg(0x0037,0x0000); 00927 // LCD_WriteReg(0x0038,0x0202); 00928 // LCD_WriteReg(0x0039,0x0106); 00929 // LCD_WriteReg(0x003C,0x0202); 00930 // LCD_WriteReg(0x003D,0x0408); 00931 // delay_ms(50); 00932 // LCD_WriteReg(0x0050,0x0000); 00933 // LCD_WriteReg(0x0051,0x00EF); 00934 // LCD_WriteReg(0x0052,0x0000); 00935 // LCD_WriteReg(0x0053,0x013F); 00936 // LCD_WriteReg(0x0060,0xA700); 00937 // LCD_WriteReg(0x0061,0x0001); 00938 // LCD_WriteReg(0x0090,0x0033); 00939 // LCD_WriteReg(0x002B,0x000B); 00940 // LCD_WriteReg(0x0007,0x0133); 00941 // } 00942 // else /* special ID */ 00943 // { 00944 // DeviceCode = LCD_ReadReg(0x67); 00945 00946 // if( DeviceCode == 0x0046 ) 00947 // { 00948 // LCD_Code = HX8346A; 00949 00950 // /* Gamma for CMO 3.2 */ 00951 // LCD_WriteReg(0x46,0x94); 00952 // LCD_WriteReg(0x47,0x41); 00953 // LCD_WriteReg(0x48,0x00); 00954 // LCD_WriteReg(0x49,0x33); 00955 // LCD_WriteReg(0x4a,0x23); 00956 // LCD_WriteReg(0x4b,0x45); 00957 // LCD_WriteReg(0x4c,0x44); 00958 // LCD_WriteReg(0x4d,0x77); 00959 // LCD_WriteReg(0x4e,0x12); 00960 // LCD_WriteReg(0x4f,0xcc); 00961 // LCD_WriteReg(0x50,0x46); 00962 // LCD_WriteReg(0x51,0x82); 00963 // /* 240x320 window setting */ 00964 // LCD_WriteReg(0x02,0x00); 00965 // LCD_WriteReg(0x03,0x00); 00966 // LCD_WriteReg(0x04,0x01); 00967 // LCD_WriteReg(0x05,0x3f); 00968 // LCD_WriteReg(0x06,0x00); 00969 // LCD_WriteReg(0x07,0x00); 00970 // LCD_WriteReg(0x08,0x00); 00971 // LCD_WriteReg(0x09,0xef); 00972 // 00973 // /* Display Setting */ 00974 // LCD_WriteReg(0x01,0x06); 00975 // LCD_WriteReg(0x16,0xC8); /* MY(1) MX(1) MV(0) */ 00976 00977 // LCD_WriteReg(0x23,0x95); 00978 // LCD_WriteReg(0x24,0x95); 00979 // LCD_WriteReg(0x25,0xff); 00980 // 00981 // LCD_WriteReg(0x27,0x02); 00982 // LCD_WriteReg(0x28,0x02); 00983 // LCD_WriteReg(0x29,0x02); 00984 // LCD_WriteReg(0x2a,0x02); 00985 // LCD_WriteReg(0x2c,0x02); 00986 // LCD_WriteReg(0x2d,0x02); 00987 // 00988 // LCD_WriteReg(0x3a,0x01); 00989 // LCD_WriteReg(0x3b,0x01); 00990 // LCD_WriteReg(0x3c,0xf0); 00991 // LCD_WriteReg(0x3d,0x00); 00992 // delay_ms(2); 00993 // LCD_WriteReg(0x35,0x38); 00994 // LCD_WriteReg(0x36,0x78); 00995 // 00996 // LCD_WriteReg(0x3e,0x38); 00997 // 00998 // LCD_WriteReg(0x40,0x0f); 00999 // LCD_WriteReg(0x41,0xf0); 01000 // /* Power Supply Setting */ 01001 // LCD_WriteReg(0x19,0x49); 01002 // LCD_WriteReg(0x93,0x0f); 01003 // delay_ms(1); 01004 // LCD_WriteReg(0x20,0x30); 01005 // LCD_WriteReg(0x1d,0x07); 01006 // LCD_WriteReg(0x1e,0x00); 01007 // LCD_WriteReg(0x1f,0x07); 01008 // /* VCOM Setting for CMO 3.2�� Panel */ 01009 // LCD_WriteReg(0x44,0x4d); 01010 // LCD_WriteReg(0x45,0x13); 01011 // delay_ms(1); 01012 // LCD_WriteReg(0x1c,0x04); 01013 // delay_ms(2); 01014 // LCD_WriteReg(0x43,0x80); 01015 // delay_ms(5); 01016 // LCD_WriteReg(0x1b,0x08); 01017 // delay_ms(4); 01018 // LCD_WriteReg(0x1b,0x10); 01019 // delay_ms(4); 01020 // /* Display ON Setting */ 01021 // LCD_WriteReg(0x90,0x7f); 01022 // LCD_WriteReg(0x26,0x04); 01023 // delay_ms(4); 01024 // LCD_WriteReg(0x26,0x24); 01025 // LCD_WriteReg(0x26,0x2c); 01026 // delay_ms(4); 01027 // LCD_WriteReg(0x26,0x3c); 01028 // /* Set internal VDDD voltage */ 01029 // LCD_WriteReg(0x57,0x02); 01030 // LCD_WriteReg(0x55,0x00); 01031 // LCD_WriteReg(0x57,0x00); 01032 // } 01033 // if( DeviceCode == 0x0047 ) 01034 // { 01035 // LCD_Code = HX8347A; 01036 // LCD_WriteReg(0x0042,0x0008); 01037 // /* Gamma setting */ 01038 // LCD_WriteReg(0x0046,0x00B4); 01039 // LCD_WriteReg(0x0047,0x0043); 01040 // LCD_WriteReg(0x0048,0x0013); 01041 // LCD_WriteReg(0x0049,0x0047); 01042 // LCD_WriteReg(0x004A,0x0014); 01043 // LCD_WriteReg(0x004B,0x0036); 01044 // LCD_WriteReg(0x004C,0x0003); 01045 // LCD_WriteReg(0x004D,0x0046); 01046 // LCD_WriteReg(0x004E,0x0005); 01047 // LCD_WriteReg(0x004F,0x0010); 01048 // LCD_WriteReg(0x0050,0x0008); 01049 // LCD_WriteReg(0x0051,0x000a); 01050 // /* Window Setting */ 01051 // LCD_WriteReg(0x0002,0x0000); 01052 // LCD_WriteReg(0x0003,0x0000); 01053 // LCD_WriteReg(0x0004,0x0000); 01054 // LCD_WriteReg(0x0005,0x00EF); 01055 // LCD_WriteReg(0x0006,0x0000); 01056 // LCD_WriteReg(0x0007,0x0000); 01057 // LCD_WriteReg(0x0008,0x0001); 01058 // LCD_WriteReg(0x0009,0x003F); 01059 // delay_ms(10); 01060 // LCD_WriteReg(0x0001,0x0006); 01061 // LCD_WriteReg(0x0016,0x00C8); 01062 // LCD_WriteReg(0x0023,0x0095); 01063 // LCD_WriteReg(0x0024,0x0095); 01064 // LCD_WriteReg(0x0025,0x00FF); 01065 // LCD_WriteReg(0x0027,0x0002); 01066 // LCD_WriteReg(0x0028,0x0002); 01067 // LCD_WriteReg(0x0029,0x0002); 01068 // LCD_WriteReg(0x002A,0x0002); 01069 // LCD_WriteReg(0x002C,0x0002); 01070 // LCD_WriteReg(0x002D,0x0002); 01071 // LCD_WriteReg(0x003A,0x0001); 01072 // LCD_WriteReg(0x003B,0x0001); 01073 // LCD_WriteReg(0x003C,0x00F0); 01074 // LCD_WriteReg(0x003D,0x0000); 01075 // delay_ms(20); 01076 // LCD_WriteReg(0x0035,0x0038); 01077 // LCD_WriteReg(0x0036,0x0078); 01078 // LCD_WriteReg(0x003E,0x0038); 01079 // LCD_WriteReg(0x0040,0x000F); 01080 // LCD_WriteReg(0x0041,0x00F0); 01081 // LCD_WriteReg(0x0038,0x0000); 01082 // /* Power Setting */ 01083 // LCD_WriteReg(0x0019,0x0049); 01084 // LCD_WriteReg(0x0093,0x000A); 01085 // delay_ms(10); 01086 // LCD_WriteReg(0x0020,0x0020); 01087 // LCD_WriteReg(0x001D,0x0003); 01088 // LCD_WriteReg(0x001E,0x0000); 01089 // LCD_WriteReg(0x001F,0x0009); 01090 // LCD_WriteReg(0x0044,0x0053); 01091 // LCD_WriteReg(0x0045,0x0010); 01092 // delay_ms(10); 01093 // LCD_WriteReg(0x001C,0x0004); 01094 // delay_ms(20); 01095 // LCD_WriteReg(0x0043,0x0080); 01096 // delay_ms(5); 01097 // LCD_WriteReg(0x001B,0x000a); 01098 // delay_ms(40); 01099 // LCD_WriteReg(0x001B,0x0012); 01100 // delay_ms(40); 01101 // /* Display On Setting */ 01102 // LCD_WriteReg(0x0090,0x007F); 01103 // LCD_WriteReg(0x0026,0x0004); 01104 // delay_ms(40); 01105 // LCD_WriteReg(0x0026,0x0024); 01106 // LCD_WriteReg(0x0026,0x002C); 01107 // delay_ms(40); 01108 // LCD_WriteReg(0x0070,0x0008); 01109 // LCD_WriteReg(0x0026,0x003C); 01110 // LCD_WriteReg(0x0057,0x0002); 01111 // LCD_WriteReg(0x0055,0x0000); 01112 // LCD_WriteReg(0x0057,0x0000); 01113 // } 01114 // } 01115 delay_ms(50); /* delay 50 ms */ 01116 } 01117 01118 /******************************************************************************* 01119 * Function Name : LCD_Clear 01120 * Description : ����Ļ����ָ������ɫ��������������� 0xffff 01121 * Input : - Color: Screen Color 01122 * Output : None 01123 * Return : None 01124 * Attention : None 01125 *******************************************************************************/ 01126 void LCD_Clear(uint16_t Color) 01127 { 01128 uint32_t index; 01129 01130 if( LCD_Code == HX8347D || LCD_Code == HX8347A ) 01131 { 01132 LCD_WriteReg(0x02,0x00); 01133 LCD_WriteReg(0x03,0x00); 01134 01135 LCD_WriteReg(0x04,0x00); 01136 LCD_WriteReg(0x05,0xEF); 01137 01138 LCD_WriteReg(0x06,0x00); 01139 LCD_WriteReg(0x07,0x00); 01140 01141 LCD_WriteReg(0x08,0x01); 01142 LCD_WriteReg(0x09,0x3F); 01143 } 01144 else 01145 { 01146 LCD_SetCursor(0,0); 01147 } 01148 01149 LCD_WriteIndex(0x0022); 01150 for( index = 0; index < MAX_X * MAX_Y; index++ ) 01151 { 01152 LCD_WriteData(Color); 01153 } 01154 } 01155 01156 /****************************************************************************** 01157 * Function Name : LCD_BGR2RGB 01158 * Description : RRRRRGGGGGGBBBBB ��Ϊ BBBBBGGGGGGRRRRR ��ʽ 01159 * Input : - color: BRG ��ɫֵ 01160 * Output : None 01161 * Return : RGB ��ɫֵ 01162 * Attention : �ڲ��������� 01163 *******************************************************************************/ 01164 static uint16_t LCD_BGR2RGB(uint16_t color) 01165 { 01166 uint16_t r, g, b, rgb; 01167 01168 b = ( color>>0 ) & 0x1f; 01169 g = ( color>>5 ) & 0x3f; 01170 r = ( color>>11 ) & 0x1f; 01171 01172 rgb = (b<<11) + (g<<5) + (r<<0); 01173 01174 return( rgb ); 01175 } 01176 01177 /****************************************************************************** 01178 * Function Name : LCD_GetPoint 01179 * Description : ��ȡָ���������ɫֵ 01180 * Input : - Xpos: Row Coordinate 01181 * - Xpos: Line Coordinate 01182 * Output : None 01183 * Return : Screen Color 01184 * Attention : None 01185 *******************************************************************************/ 01186 uint16_t LCD_GetPoint(uint16_t Xpos,uint16_t Ypos) 01187 { 01188 uint16_t dummy; 01189 01190 LCD_SetCursor(Xpos,Ypos); 01191 LCD_WriteIndex(0x0022); 01192 01193 switch( LCD_Code ) 01194 { 01195 case ST7781: 01196 case LGDP4531: 01197 case LGDP4535: 01198 case SSD1289: 01199 case SSD1298: 01200 dummy = LCD_ReadData(); /* Empty read */ 01201 dummy = LCD_ReadData(); 01202 return dummy; 01203 case HX8347A: 01204 case HX8347D: 01205 { 01206 uint8_t red,green,blue; 01207 01208 dummy = LCD_ReadData(); /* Empty read */ 01209 01210 red = LCD_ReadData() >> 3; 01211 green = LCD_ReadData() >> 2; 01212 blue = LCD_ReadData() >> 3; 01213 dummy = (uint16_t) ( ( red<<11 ) | ( green << 5 ) | blue ); 01214 } 01215 return dummy; 01216 01217 default: /* 0x9320 0x9325 0x9328 0x9331 0x5408 0x1505 0x0505 0x9919 */ 01218 dummy = LCD_ReadData(); /* Empty read */ 01219 dummy = LCD_ReadData(); 01220 return LCD_BGR2RGB( dummy ); 01221 } 01222 } 01223 01224 /****************************************************************************** 01225 * Function Name : LCD_SetPoint 01226 * Description : ��ָ�����껭�� 01227 * Input : - Xpos: Row Coordinate 01228 * - Ypos: Line Coordinate 01229 * Output : None 01230 * Return : None 01231 * Attention : None 01232 *******************************************************************************/ 01233 void LCD_SetPoint(uint16_t Xpos,uint16_t Ypos,uint16_t point) 01234 { 01235 if( Xpos >= MAX_X || Ypos >= MAX_Y ) 01236 { 01237 return; 01238 } 01239 LCD_SetCursor(Xpos,Ypos); 01240 LCD_WriteReg(0x0022,point); 01241 } 01242 01243 /****************************************************************************** 01244 * Function Name : LCD_DrawLine 01245 * Description : Bresenham's line algorithm 01246 * Input : - x1: A�������� 01247 * - y1: A�������� 01248 * - x2: B�������� 01249 * - y2: B�������� 01250 * - color: ����ɫ 01251 * Output : None 01252 * Return : None 01253 * Attention : None 01254 *******************************************************************************/ 01255 void LCD_DrawLine( uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1 , uint16_t color ) 01256 { 01257 short dx,dy; /* ����X Y�������ӵı���ֵ */ 01258 short temp; /* ��� �յ��С�Ƚ� ��������ʱ���м���� */ 01259 01260 if( x0 > x1 ) /* X�����������յ� �������� */ 01261 { 01262 temp = x1; 01263 x1 = x0; 01264 x0 = temp; 01265 } 01266 if( y0 > y1 ) /* Y�����������յ� �������� */ 01267 { 01268 temp = y1; 01269 y1 = y0; 01270 y0 = temp; 01271 } 01272 01273 dx = x1-x0; /* X�᷽���ϵ����� */ 01274 dy = y1-y0; /* Y�᷽���ϵ����� */ 01275 01276 if( dx == 0 ) /* X����û������ ����ֱ�� */ 01277 { 01278 do 01279 { 01280 LCD_SetPoint(x0, y0, color); /* �����ʾ �费ֱ�� */ 01281 y0++; 01282 } 01283 while( y1 >= y0 ); 01284 return; 01285 } 01286 if( dy == 0 ) /* Y����û������ ��ˮƽֱ�� */ 01287 { 01288 do 01289 { 01290 LCD_SetPoint(x0, y0, color); /* �����ʾ ��ˮƽ�� */ 01291 x0++; 01292 } 01293 while( x1 >= x0 ); 01294 return; 01295 } 01296 /* ����ɭ��ķ(Bresenham)�㷨���� */ 01297 if( dx > dy ) /* ����X�� */ 01298 { 01299 temp = 2 * dy - dx; /* �����¸����λ�� */ 01300 while( x0 != x1 ) 01301 { 01302 LCD_SetPoint(x0,y0,color); /* ����� */ 01303 x0++; /* X���ϼ�1 */ 01304 if( temp > 0 ) /* �ж����¸����λ�� */ 01305 { 01306 y0++; /* Ϊ�������ڵ㣬����x0+1,y0+1�� */ 01307 temp += 2 * dy - 2 * dx; 01308 } 01309 else 01310 { 01311 temp += 2 * dy; /* �ж����¸����λ�� */ 01312 } 01313 } 01314 LCD_SetPoint(x0,y0,color); 01315 } 01316 else 01317 { 01318 temp = 2 * dx - dy; /* ����Y�� */ 01319 while( y0 != y1 ) 01320 { 01321 LCD_SetPoint(x0,y0,color); 01322 y0++; 01323 if( temp > 0 ) 01324 { 01325 x0++; 01326 temp+=2*dy-2*dx; 01327 } 01328 else 01329 { 01330 temp += 2 * dy; 01331 } 01332 } 01333 LCD_SetPoint(x0,y0,color); 01334 } 01335 } 01336 01337 /****************************************************************************** 01338 * Function Name : PutChar 01339 * Description : ��Lcd��������λ����ʾһ���ַ� 01340 * Input : - Xpos: ˮƽ���� 01341 * - Ypos: ��ֱ���� 01342 * - ASCI: ��ʾ���ַ� 01343 * - charColor: �ַ���ɫ 01344 * - bkColor: ������ɫ 01345 * Output : None 01346 * Return : None 01347 * Attention : None 01348 *******************************************************************************/ 01349 void PutChar( uint16_t Xpos, uint16_t Ypos, uint8_t ASCI, uint16_t charColor, uint16_t bkColor, int size ) 01350 { 01351 uint16_t i, j; 01352 uint8_t buffer[16], tmp_char; 01353 GetASCIICode(buffer,ASCI); /* È¡×ÖÄ£Êý¾Ý */ 01354 for( i=0; i<16; i++ ) 01355 { 01356 tmp_char = buffer[i]; 01357 01358 for( j=0; j<8; j++ ) 01359 { 01360 01361 if( ((tmp_char >> (7 - j)) & 0x01) == 0x01 ) 01362 { 01363 i=i*size; 01364 j=j*size; 01365 LCD_SetPoint( Xpos + j, Ypos + i, charColor ); /* ×Ö·ûÑÕÉ« */ 01366 if(size==2||size==3){ 01367 LCD_SetPoint( Xpos + j+1, Ypos + i, charColor ); /* ×Ö·ûÑÕÉ« */ 01368 LCD_SetPoint( Xpos + j, Ypos + i+1, charColor ); /* ×Ö·ûÑÕÉ« */ 01369 LCD_SetPoint( Xpos + j+1, Ypos + i+1, charColor ); /* ×Ö·ûÑÕÉ« */ 01370 01371 } 01372 if(size==3){ 01373 LCD_SetPoint( Xpos + j-1, Ypos + i, charColor ); /* ×Ö·ûÑÕÉ« */ 01374 LCD_SetPoint( Xpos + j, Ypos + i-1, charColor ); /* ×Ö·ûÑÕÉ« */ 01375 LCD_SetPoint( Xpos + j-1, Ypos + i-1, charColor ); /* ×Ö·ûÑÕÉ« */ 01376 LCD_SetPoint( Xpos + j+1, Ypos + i-1, charColor ); /* ×Ö·ûÑÕÉ« */ 01377 LCD_SetPoint( Xpos + j-1, Ypos + i+1, charColor ); /* ×Ö·ûÑÕÉ« */ 01378 } 01379 i=i/size; 01380 j=j/size; 01381 } 01382 else 01383 { 01384 i=i*size; 01385 j=j*size; 01386 LCD_SetPoint( Xpos + j, Ypos + i, bkColor ); /* ×Ö·ûÑÕÉ« */ 01387 if(size==2||size==3){ 01388 LCD_SetPoint( Xpos + j+1, Ypos + i, bkColor ); /* ×Ö·ûÑÕÉ« */ 01389 LCD_SetPoint( Xpos + j, Ypos + i+1, bkColor ); /* ×Ö·ûÑÕÉ« */ 01390 LCD_SetPoint( Xpos + j+1, Ypos + i+1, bkColor ); /* ×Ö·ûÑÕÉ« */ 01391 } 01392 if(size==3){ 01393 LCD_SetPoint( Xpos + j-1, Ypos + i, bkColor ); /* ×Ö·ûÑÕÉ« */ 01394 LCD_SetPoint( Xpos + j, Ypos + i-1, bkColor ); /* ×Ö·ûÑÕÉ« */ 01395 LCD_SetPoint( Xpos + j-1, Ypos + i-1, bkColor ); /* ×Ö·ûÑÕÉ« */ 01396 LCD_SetPoint( Xpos + j+1, Ypos + i-1, bkColor ); /* ×Ö·ûÑÕÉ« */ 01397 LCD_SetPoint( Xpos + j-1, Ypos + i+1, bkColor ); /* ×Ö·ûÑÕÉ« */ 01398 } 01399 i=i/size; 01400 j=j/size; 01401 } 01402 } 01403 01404 } 01405 } 01406 01407 /****************************************************************************** 01408 * Function Name : GUI_Text 01409 * Description : ��ָ��������ʾ�ַ��� 01410 * Input : - Xpos: ������ 01411 * - Ypos: ������ 01412 * - str: �ַ��� 01413 * - charColor: �ַ���ɫ 01414 * - bkColor: ������ɫ 01415 * Output : None 01416 * Return : None 01417 * Attention : None 01418 *******************************************************************************/ 01419 void GUI_Text(uint16_t Xpos, uint16_t Ypos, uint8_t *str,uint16_t Color, uint16_t bkColor, int size) 01420 { 01421 uint8_t TempChar; 01422 do 01423 { 01424 TempChar = *str++; 01425 PutChar( Xpos, Ypos, TempChar, Color, bkColor, size ); 01426 if( Xpos < MAX_X - 8*size ) 01427 { 01428 Xpos += 8*size; 01429 } 01430 else if ( Ypos < MAX_Y - 16*size ) 01431 { 01432 Xpos = 0; 01433 Ypos += 16*size; 01434 } 01435 else 01436 { 01437 Xpos = 0; 01438 Ypos = 0; 01439 } 01440 } 01441 while ( *str != 0 ); 01442 } 01443 01444 01445 01446 /********************************************************************************************************* 01447 END FILE 01448 *********************************************************************************************************/ 01449
Generated on Tue Aug 9 2022 19:42:58 by
1.7.2