//------------------------------------------------- // Shenzhen TOPWAY Technology Co.,Ltd. // System: AT89S52(12MHz) // LCD Module: LMT035KDH03 + TCB8000J // LMT035KDH03-NFN // Display Size: 320(x3)x240 (16bit color) // Driver/Controller: T8000 // Interface: 80mode 1bit Addressing mode // by: Kenny // ver01: 2011-11-03 // new // ver02: 2011-11-04 // add sprite demo // ver03: 2011-11-07 // refine CGRAM data // built 64x (16x16)CG char // ver04: 2011-11-10 // update CGRAM printing routine // with ASCII decodeing // ver05: 2012-05-02 // update parameter for LMT035KDH03 // correction of char"W" position //------------------------------------------------- #include #include #include #include #define uchar unsigned char // 8bit, 0 ~ 255 #define uint unsigned int // 16bit, 0 ~ 65,535 #define ulong unsigned long // 32bit, 0 ~ 4,294,967,295 #define LCDBUS P1 sbit _CS = P3^4; sbit _RES = P3^5; sbit A1 = P3^6; sbit _WR = P3^7; sbit _RD = P3^1; // or _RD=VDD; uchar VCOM_DC; uchar bdata GpioData; // bit accessable sbit SDIN = GpioData^3; sbit SCLK = GpioData^2; sbit SENA = GpioData^1; uchar bdata BitData; // bit accessable sbit BitData7=BitData^7; #define RED 0xf800 #define GREEN 0x07e0 #define BLUE 0x001f #define YELLOW 0xffe0 #define CYAN 0x07ff #define MAGENTA 0xf81f #define BLACK 0x0000 #define WHITE 0xffff #define GRAY 0x8410 #define hi_re 0xf800 #define hi_or 0xfc00 #define hi_ye 0xffb0 #define hi_yg 0x87e0 #define hi_gr 0x07e0 #define hi_gc 0x07f0 #define hi_cy 0x07ff #define hi_cb 0x041f #define hi_bl 0x001f #define hi_bm 0x801f #define hi_ma 0xf8f1 #define hi_mr 0xf810 //----------------------------------- // delayms routine //----------------------------------- void delayms(uint m) // 12MHz Xtal, close to ms value { uint j; uint i; for(i=0; i>8; WritePKG(Buffer); } void SetFontFgColor(uint color) { uchar Buffer[4]; Buffer[0]=3; Buffer[1]=0x14; Buffer[2]=color; Buffer[3]=color>>8; WritePKG(Buffer); } void SetFontBgColor(uint color) { uchar Buffer[4]; Buffer[0]=3; Buffer[1]=0x15; Buffer[2]=color; Buffer[3]=color>>8; WritePKG(Buffer); } //----------------------------------- // String Routine //----------------------------------- void PrintASCII(uint X, Y, uchar *pstr) // max 64 byte in the string { uchar code FontSetting[]={2, 0x10, 0x00}; // use CGRAM 16x16 font uchar Buffer[6], NoOfChar; WritePKG(FontSetting); Buffer[0]=5; // set the location Buffer[1]=0x12; Buffer[2]=X; Buffer[3]=X>>8; Buffer[4]=Y; Buffer[5]=Y>>8; WritePKG(Buffer); NoOfChar=strlen(pstr); // send the string SdCmd(0x17); SdCmd(NoOfChar); while(*pstr>0) { SdCmd(*pstr++); } CmdEnd(); } void PrintGB(uint X, Y, uchar *pstr) // max 64 byte in the string { uchar code FontSetting[]={2, 0x10, 0x04}; // use CGRAM 16x16 font uchar Buffer[6], NoOfChar; WritePKG(FontSetting); Buffer[0]=5; // set the location Buffer[1]=0x12; Buffer[2]=X; Buffer[3]=X>>8; Buffer[4]=Y; Buffer[5]=Y>>8; WritePKG(Buffer); NoOfChar=strlen(pstr); // send the string SdCmd(0x17); SdCmd(NoOfChar/2); while(*pstr>0) { SdCmd(*pstr++); delay50us(); } CmdEnd(); } void PrintCGRAM_inASCII(uint X, Y, uchar *pstr) // convert the ASCII in to char value. // and put the CGRAM one by one // display char is limited by CGRAM inside. { uchar code FontSetting[]={2, 0x10, 0x03}; // use CGRAM 16x16 font uchar temp; uchar Buffer[6]; WritePKG(FontSetting); // do font setting while(*pstr>0) { Buffer[0]=5; Buffer[1]=0x12; // set the location Buffer[2]=X; Buffer[3]=X>>8; Buffer[4]=Y; Buffer[5]=Y>>8; WritePKG(Buffer); SdCmd(0x16); // use show_char to write SdCmd((*pstr++)-0x20); // convert the ASCII to CGRAM code (start form 0) CmdEnd(); X=X+16; } } void PrintHalf(uint X, Y, uchar *pstr) // max 64 byte in the string { uchar code FontSetting[]={2, 0x10,0x04}; // use internal 16x16 font ext-ROM uchar Buffer[6], NoOfChar; WritePKG(FontSetting); Buffer[0]=5; // set the location Buffer[1]=0x12; Buffer[2]=X; Buffer[3]=X>>8; Buffer[4]=Y; Buffer[5]=Y>>8; WritePKG(Buffer); NoOfChar=strlen(pstr); // send the string SdCmd(0x17); SdCmd(NoOfChar); while(*pstr>0) { SdCmd(*pstr++); delay50us(); } CmdEnd(); } // built 32 CG-Char 16x16 // following are the "home made" hollow char void BuiltCGRAM(void) { /*-- 16x16 Hollow Fonts --*/ uchar code define_CGRAM_00[]={34,0x19, 0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; // 0x20(space) uchar code define_CGRAM_01[]={34,0x19, 0x01, 0x07,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x07,0xC0,0x00,0x00,0x07,0xC0,0x04,0x40,0x04,0x40,0x07,0xC0,0x00,0x00}; // 0x21(exclamation_mark) uchar code define_CGRAM_02[]={34,0x19, 0x02, 0x1E,0xF0,0x12,0x90,0x12,0x90,0x12,0x90,0x12,0x90,0x1E,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; // 0x22(quotation_mark) uchar code define_CGRAM_03[]={34,0x19, 0x03, 0x1E,0xF0,0x12,0x90,0x12,0x90,0xF3,0x9E,0x80,0x02,0x80,0x02,0xF3,0x9E,0x12,0x90,0xF3,0x9E,0x80,0x02,0x80,0x02,0xF3,0x9E,0x12,0x90,0x12,0x90,0x1E,0xF0,0x00,0x00}; // 0x23(no_sign) uchar code define_CGRAM_04[]={34,0x19, 0x04, 0x03,0x80,0x1E,0xF0,0x20,0x08,0x46,0xC4,0x8A,0xBE,0x8A,0x80,0x46,0xF0,0x20,0x08,0x1E,0xC4,0x02,0xA2,0xFA,0xA2,0x46,0xC4,0x20,0x08,0x1E,0xF0,0x03,0x80,0x00,0x00}; // 0x24(dollar) uchar code define_CGRAM_05[]={34,0x19, 0x05, 0x70,0x1E,0x88,0x22,0xA8,0x42,0x88,0x82,0x71,0x04,0x02,0x08,0x04,0x10,0x08,0x20,0x10,0x40,0x20,0x80,0x41,0x1C,0x82,0x22,0x84,0x2A,0x88,0x22,0xF0,0x1C,0x00,0x00}; // 0x25(percent) uchar code define_CGRAM_06[]={34,0x19, 0x06, 0x1F,0x00,0x20,0x80,0x44,0x40,0x4A,0x40,0x24,0x80,0x11,0x00,0x21,0x00,0x40,0x8E,0x84,0x52,0x8A,0x22,0x89,0x04,0x88,0x88,0x47,0x04,0x20,0x22,0x1F,0xDE,0x00,0x00}; // 0x26(and) uchar code define_CGRAM_07[]={34,0x19, 0x07, 0x07,0x80,0x04,0x80,0x04,0x80,0x04,0x80,0x04,0x80,0x07,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; // 0x27(apostroophe) uchar code define_CGRAM_08[]={34,0x19, 0x08, 0x03,0xE0,0x04,0x20,0x08,0x60,0x08,0x80,0x08,0x80,0x08,0x80,0x08,0x80,0x08,0x80,0x08,0x80,0x08,0x80,0x08,0x80,0x08,0x80,0x08,0x60,0x04,0x20,0x03,0xE0,0x00,0x00}; // 0x28(branket_l) uchar code define_CGRAM_09[]={34,0x19, 0x09, 0x07,0xC0,0x04,0x20,0x06,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x06,0x10,0x04,0x20,0x07,0xC0,0x00,0x00}; // 0x29(branket_r) uchar code define_CGRAM_0A[]={34,0x19, 0x0A, 0x01,0x00,0x22,0x88,0x52,0x94,0x4A,0xA4,0x26,0xC8,0x12,0x90,0x08,0x20,0x04,0x40,0x08,0x20,0x12,0x90,0x26,0xC8,0x4A,0xA4,0x52,0x94,0x22,0x88,0x01,0x00,0x00,0x00}; // 0x2a(asterisk) uchar code define_CGRAM_0B[]={34,0x19, 0x0B, 0x00,0x00,0x07,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x7C,0x7C,0x40,0x04,0x40,0x04,0x40,0x04,0x7C,0x7C,0x04,0x40,0x04,0x40,0x04,0x40,0x07,0xC0,0x00,0x00,0x00,0x00}; // 0x2b(plus) uchar code define_CGRAM_0C[]={34,0x19, 0x0C, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x80,0x09,0x00,0x0E,0x00,0x00,0x00}; // 0x2c(comma) uchar code define_CGRAM_0D[]={34,0x19, 0x0D, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFC,0x40,0x04,0x40,0x04,0x40,0x04,0x7F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; // 0x2d(hyphen) uchar code define_CGRAM_0E[]={34,0x19, 0x0E, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x07,0xC0,0x00,0x00}; // 0x2e(fullstop) uchar code define_CGRAM_0F[]={34,0x19, 0x0F, 0x00,0x1E,0x00,0x22,0x00,0x42,0x00,0x82,0x01,0x04,0x02,0x08,0x04,0x10,0x08,0x20,0x10,0x40,0x20,0x80,0x41,0x00,0x82,0x00,0x84,0x00,0x88,0x00,0xF0,0x00,0x00,0x00}; // 0x2f(slash) uchar code define_CGRAM_10[]={34,0x19, 0x10, 0x3F,0xF8,0x40,0x04,0x80,0x02,0x87,0xC2,0x88,0x82,0x89,0x02,0x8A,0x22,0x8C,0x62,0x88,0xA2,0x81,0x22,0x82,0x22,0x87,0xC2,0x80,0x02,0x40,0x04,0x3F,0xF8,0x00,0x00}; // 0x30(0) uchar code define_CGRAM_11[]={34,0x19, 0x11, 0x07,0xC0,0x08,0x40,0x10,0x40,0x20,0x40,0x3C,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x3C,0x78,0x20,0x08,0x20,0x08,0x3F,0xF8,0x00,0x00}; // 0x31(1) uchar code define_CGRAM_12[]={34,0x19, 0x12, 0x3F,0xF8,0x40,0x04,0x80,0x02,0x8F,0xC2,0xF0,0x22,0x00,0x22,0x0F,0xC2,0x10,0x02,0x20,0x04,0x47,0xF8,0x88,0x00,0x8F,0xFE,0x80,0x02,0x80,0x02,0xFF,0xFE,0x00,0x00}; // 0x32(2) uchar code define_CGRAM_13[]={34,0x19, 0x13, 0x3F,0xF8,0x40,0x04,0x80,0x02,0x8F,0xC2,0xF0,0x22,0x00,0x22,0x00,0xC4,0x01,0x08,0x00,0xC4,0x00,0x22,0xF0,0x22,0x8F,0xC2,0x80,0x02,0x40,0x04,0x3F,0xF8,0x00,0x00}; // 0x33(3) uchar code define_CGRAM_14[]={34,0x19, 0x14, 0x01,0xF8,0x02,0x08,0x04,0x08,0x08,0x88,0x11,0x88,0x22,0x88,0x44,0x88,0x88,0x88,0x88,0x88,0x8F,0x8E,0x80,0x02,0x80,0x02,0xFF,0x8E,0x00,0x88,0x00,0xF8,0x00,0x00}; // 0x34(4) uchar code define_CGRAM_15[]={34,0x19, 0x15, 0xFF,0xFE,0x80,0x02,0x80,0x02,0x8F,0xFE,0x88,0x00,0x8F,0xF8,0x80,0x04,0x80,0x02,0xFF,0xC2,0x00,0x22,0xF8,0x22,0x87,0xC2,0x80,0x02,0x40,0x04,0x3F,0xF8,0x00,0x00}; // 0x35(5) uchar code define_CGRAM_16[]={34,0x19, 0x16, 0x3F,0xF8,0x40,0x04,0x80,0x02,0x87,0xFE,0x88,0x00,0x8F,0xF8,0x80,0x04,0x80,0x02,0x87,0xC2,0x88,0x22,0x88,0x22,0x87,0xC2,0x80,0x02,0x40,0x04,0x3F,0xF8,0x00,0x00}; // 0x36(6) uchar code define_CGRAM_17[]={34,0x19, 0x17, 0xFF,0xFE,0x80,0x02,0x80,0x02,0xFF,0xE2,0x00,0x42,0x00,0x84,0x01,0x08,0x02,0x10,0x04,0x20,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x07,0xC0,0x00,0x00}; // 0x37(7) uchar code define_CGRAM_18[]={34,0x19, 0x18, 0x3F,0xF8,0x40,0x04,0x80,0x02,0x87,0xC2,0x88,0x22,0x88,0x22,0x47,0xC4,0x20,0x08,0x47,0xC4,0x88,0x22,0x88,0x22,0x87,0xC2,0x80,0x02,0x40,0x04,0x3F,0xF8,0x00,0x00}; // 0x38(8) uchar code define_CGRAM_19[]={34,0x19, 0x19, 0x3F,0xF8,0x40,0x04,0x80,0x02,0x87,0xC2,0x88,0x22,0x88,0x22,0x87,0xC2,0x80,0x02,0x40,0x02,0x3F,0xE2,0x00,0x22,0xFF,0xC2,0x80,0x02,0x40,0x04,0x3F,0xF8,0x00,0x00}; // 0x39(9) uchar code define_CGRAM_1A[]={34,0x19, 0x1A, 0x00,0x00,0x07,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x07,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x07,0xC0,0x00,0x00,0x00,0x00}; // 0x3a(colon) uchar code define_CGRAM_1B[]={34,0x19, 0x1B, 0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x07,0xC0,0x00,0x00,0x07,0xC0,0x04,0x40,0x04,0x40,0x04,0x80,0x09,0x00,0x0E,0x00,0x00,0x00}; // 0x3b(semicolon) uchar code define_CGRAM_1C[]={34,0x19, 0x1C, 0x00,0xF8,0x01,0x08,0x02,0x10,0x04,0x20,0x08,0x40,0x10,0x80,0x21,0x00,0x42,0x00,0x21,0x00,0x10,0x80,0x08,0x40,0x04,0x20,0x02,0x10,0x01,0x08,0x00,0xF8,0x00,0x00}; // 0x3c(less_than) uchar code define_CGRAM_1D[]={34,0x19, 0x1D, 0x00,0x00,0x7F,0xFC,0x40,0x04,0x40,0x04,0x40,0x04,0x7F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFC,0x40,0x04,0x40,0x04,0x40,0x04,0x7F,0xFC,0x00,0x00,0x00,0x00}; // 0x3d(equal_to) uchar code define_CGRAM_1E[]={34,0x19, 0x1E, 0x7C,0x00,0x42,0x00,0x21,0x00,0x10,0x80,0x08,0x40,0x04,0x20,0x02,0x10,0x01,0x08,0x02,0x10,0x04,0x20,0x08,0x40,0x10,0x80,0x21,0x00,0x42,0x00,0x7C,0x00,0x00,0x00}; // 0x3e(greater_than) uchar code define_CGRAM_1F[]={34,0x19, 0x1F, 0x3F,0xF8,0x40,0x04,0x80,0x02,0x87,0xC2,0xF8,0x22,0x01,0xC2,0x02,0x0C,0x04,0x30,0x04,0x40,0x04,0x40,0x07,0xC0,0x00,0x00,0x07,0xC0,0x04,0x40,0x07,0xC0,0x00,0x00}; // 0x3f(question_mark uchar code define_CGRAM_20[]={34,0x19, 0x20, 0x1F,0xF8,0x20,0x04,0x4F,0xF2,0x90,0x0A,0xA7,0xEA,0xA8,0x2A,0xAB,0xAA,0xAA,0xAA,0xAB,0xBA,0xA8,0x02,0xA7,0xFC,0x90,0x00,0x4F,0xFE,0x20,0x02,0x1F,0xFE,0x00,0x00}; // 0x40(at) uchar code define_CGRAM_21[]={34,0x19, 0x21, 0x03,0x80,0x04,0x40,0x08,0x20,0x10,0x10,0x21,0x08,0x42,0x84,0x84,0x42,0x88,0x22,0x8F,0xE2,0x80,0x02,0x80,0x02,0x8F,0xE2,0x88,0x22,0x88,0x22,0xF8,0x3E,0x00,0x00}; // 0x41(A) uchar code define_CGRAM_22[]={34,0x19, 0x22, 0xFF,0xF8,0x80,0x04,0x80,0x02,0x8F,0xC2,0x88,0x22,0x88,0x22,0x8F,0xC2,0x80,0x04,0x8F,0xC2,0x88,0x22,0x88,0x22,0x8F,0xC2,0x80,0x02,0x80,0x04,0xFF,0xF8,0x00,0x00}; // 0x42(B) uchar code define_CGRAM_23[]={34,0x19, 0x23, 0x1F,0xF0,0x20,0x08,0x40,0x04,0x87,0xC2,0x88,0x22,0x88,0x3E,0x88,0x00,0x88,0x00,0x88,0x00,0x88,0x3E,0x88,0x22,0x87,0xC2,0x40,0x04,0x20,0x08,0x1F,0xF0,0x00,0x00}; // 0x43(C) uchar code define_CGRAM_24[]={34,0x19, 0x24, 0xFF,0xF0,0x80,0x08,0x80,0x04,0x8F,0x82,0x88,0x42,0x88,0x22,0x88,0x22,0x88,0x22,0x88,0x22,0x88,0x22,0x88,0x42,0x8F,0x82,0x80,0x04,0x80,0x08,0xFF,0xF0,0x00,0x00}; // 0x44(D) uchar code define_CGRAM_25[]={34,0x19, 0x25, 0xFF,0xFE,0x80,0x02,0x80,0x02,0x8F,0xE2,0x88,0x3E,0x88,0x00,0x8F,0xC0,0x80,0x40,0x8F,0xC0,0x88,0x00,0x88,0x3E,0x8F,0xE2,0x80,0x02,0x80,0x02,0xFF,0xFE,0x00,0x00}; // 0x45(E) uchar code define_CGRAM_26[]={34,0x19, 0x26, 0xFF,0xFE,0x80,0x02,0x80,0x02,0x8F,0xE2,0x88,0x3E,0x88,0x00,0x8F,0xC0,0x80,0x40,0x80,0x40,0x8F,0xC0,0x88,0x00,0x88,0x00,0x88,0x00,0x88,0x00,0xF8,0x00,0x00,0x00}; // 0x46(F) uchar code define_CGRAM_27[]={34,0x19, 0x27, 0x1F,0xF0,0x20,0x08,0x40,0x04,0x87,0xC2,0x88,0x3E,0x88,0x00,0x88,0xFE,0x88,0x82,0x88,0xE2,0x88,0x22,0x88,0x22,0x87,0xE2,0x40,0x02,0x20,0x02,0x1F,0xFE,0x00,0x00}; // 0x47(G) uchar code define_CGRAM_28[]={34,0x19, 0x28, 0xF8,0x3E,0x88,0x22,0x88,0x22,0x88,0x22,0x88,0x22,0x8F,0xE2,0x80,0x02,0x80,0x02,0x8F,0xE2,0x88,0x22,0x88,0x22,0x88,0x22,0x88,0x22,0x88,0x22,0xF8,0x3E,0x00,0x00}; // 0x48(H) uchar code define_CGRAM_29[]={34,0x19, 0x29, 0x1F,0xF0,0x10,0x10,0x10,0x10,0x1C,0x70,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x1C,0x70,0x10,0x10,0x10,0x10,0x1F,0xF0,0x00,0x00}; // 0x49(I) uchar code define_CGRAM_2A[]={34,0x19, 0x2A, 0x07,0xFC,0x04,0x04,0x04,0x04,0x07,0x1C,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x7D,0x10,0x46,0x10,0x40,0x20,0x20,0x40,0x1F,0x80,0x00,0x00}; // 0x4a(J) uchar code define_CGRAM_2B[]={34,0x19, 0x2B, 0xF8,0x3E,0x88,0x42,0x88,0x84,0x89,0x08,0x8A,0x10,0x8C,0x20,0x80,0x40,0x80,0x80,0x80,0x40,0x8C,0x20,0x8A,0x10,0x89,0x08,0x88,0x84,0x88,0x42,0xF8,0x3E,0x00,0x00}; // 0x4b(K) uchar code define_CGRAM_2C[]={34,0x19, 0x2C, 0xF8,0x00,0x88,0x00,0x88,0x00,0x88,0x00,0x88,0x00,0x88,0x00,0x88,0x00,0x88,0x00,0x88,0x00,0x88,0x00,0x88,0x3E,0x8F,0xE2,0x80,0x02,0x80,0x02,0xFF,0xFE,0x00,0x00}; // 0x4c(L) uchar code define_CGRAM_2D[]={34,0x19, 0x2D, 0xF8,0x3E,0x84,0x42,0x82,0x82,0x81,0x02,0x80,0x02,0x88,0x22,0x8C,0x62,0x8A,0xA2,0x89,0x22,0x88,0x22,0x88,0x22,0x88,0x22,0x88,0x22,0x88,0x22,0xF8,0x3E,0x00,0x00}; // 0x4d(M) uchar code define_CGRAM_2E[]={34,0x19, 0x2E, 0xF0,0x3E,0x88,0x22,0x84,0x22,0x82,0x22,0x81,0x22,0x80,0xA2,0x80,0x62,0x88,0x22,0x8C,0x02,0x8A,0x02,0x89,0x02,0x88,0x82,0x88,0x42,0x88,0x22,0xF8,0x1E,0x00,0x00}; // 0x4e(N) uchar code define_CGRAM_2F[]={34,0x19, 0x2F, 0x1F,0xF0,0x20,0x08,0x40,0x04,0x87,0xC2,0x88,0x22,0x88,0x22,0x88,0x22,0x88,0x22,0x88,0x22,0x88,0x22,0x88,0x22,0x87,0xC2,0x40,0x04,0x20,0x08,0x1F,0xF0,0x00,0x00}; // 0x4f(O) uchar code define_CGRAM_30[]={34,0x19, 0x30, 0xFF,0xF0,0x80,0x08,0x80,0x04,0x8F,0xC2,0x88,0x22,0x88,0x22,0x8F,0xC2,0x80,0x04,0x80,0x08,0x8F,0xF0,0x88,0x00,0x88,0x00,0x88,0x00,0x88,0x00,0xF8,0x00,0x00,0x00}; // 0x50(P) uchar code define_CGRAM_31[]={34,0x19, 0x31, 0x1F,0xC0,0x20,0x20,0x40,0x10,0x87,0x08,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x89,0x88,0x87,0x04,0x40,0x02,0x20,0x62,0x1F,0x9E,0x00,0x00}; // 0x51(Q) uchar code define_CGRAM_32[]={34,0x19, 0x32, 0xFF,0xF8,0x80,0x04,0x80,0x02,0x8F,0xC2,0x88,0x22,0x88,0x22,0x8F,0xC2,0x80,0x04,0x80,0x08,0x8C,0x30,0x8A,0x10,0x89,0x08,0x88,0x84,0x88,0x42,0xF8,0x3E,0x00,0x00}; // 0x52(R) uchar code define_CGRAM_33[]={34,0x19, 0x33, 0x1F,0xF0,0x20,0x08,0x40,0x04,0x87,0xC2,0x88,0x3E,0x88,0x00,0x47,0xF0,0x20,0x08,0x1F,0xC4,0x00,0x22,0xF8,0x22,0x87,0xC2,0x40,0x04,0x20,0x08,0x1F,0xF0,0x00,0x00}; // 0x53(S) uchar code define_CGRAM_34[]={34,0x19, 0x34, 0xFF,0xFE,0x80,0x02,0x80,0x02,0x8C,0x62,0xF4,0x5E,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x1C,0x70,0x10,0x10,0x10,0x10,0x1F,0xF0,0x00,0x00}; // 0x54(T) uchar code define_CGRAM_35[]={34,0x19, 0x35, 0xF8,0x3E,0x88,0x22,0x88,0x22,0x88,0x22,0x88,0x22,0x88,0x22,0x88,0x22,0x88,0x22,0x88,0x22,0x88,0x22,0x84,0x42,0x83,0x82,0x40,0x04,0x20,0x08,0x1F,0xF0,0x00,0x00}; // 0x55(U) uchar code define_CGRAM_36[]={34,0x19, 0x36, 0xF8,0x3E,0x88,0x22,0x88,0x22,0x88,0x22,0x88,0x22,0x84,0x42,0x44,0x44,0x42,0x84,0x22,0x88,0x21,0x08,0x11,0x10,0x10,0x10,0x08,0x20,0x08,0x20,0x07,0xC0,0x00,0x00}; // 0x56(V) uchar code define_CGRAM_37[]={34,0x19, 0x37, 0xF8,0x3E,0x88,0x22,0x88,0x22,0x88,0x22,0x88,0x22,0x88,0x22,0x89,0x22,0x8A,0xA2,0x8C,0x62,0x88,0x22,0x80,0x02,0x81,0x02,0x82,0x82,0x84,0x42,0xF8,0x3E,0x00,0x00}; // 0x57(W) uchar code define_CGRAM_38[]={34,0x19, 0x38, 0xF8,0x3E,0x88,0x22,0x84,0x42,0x82,0x82,0x41,0x04,0x20,0x08,0x10,0x10,0x08,0x20,0x10,0x10,0x20,0x08,0x41,0x04,0x82,0x82,0x84,0x42,0x88,0x22,0xF8,0x3E,0x00,0x00}; // 0x58(X) uchar code define_CGRAM_39[]={34,0x19, 0x39, 0xF8,0x3E,0x88,0x22,0x84,0x42,0x82,0x82,0x41,0x04,0x20,0x08,0x10,0x10,0x08,0x20,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x07,0xC0,0x00,0x00}; // 0x59(Y) uchar code define_CGRAM_3A[]={34,0x19, 0x3A, 0xFF,0xFE,0x80,0x02,0x80,0x02,0x80,0x02,0xFF,0x04,0x02,0x08,0x04,0x10,0x08,0x20,0x10,0x40,0x20,0x80,0x41,0xFE,0x80,0x02,0x80,0x02,0x80,0x02,0xFF,0xFE,0x00,0x00}; // 0x5a(Z) uchar code define_CGRAM_3B[]={34,0x19, 0x3B, 0x0F,0xE0,0x08,0x20,0x08,0x20,0x08,0xE0,0x08,0x80,0x08,0x80,0x08,0x80,0x08,0x80,0x08,0x80,0x08,0x80,0x08,0x80,0x08,0xE0,0x08,0x20,0x08,0x20,0x0F,0xE0,0x00,0x00}; // 0x5b(sq_branket_l) uchar code define_CGRAM_3C[]={34,0x19, 0x3C, 0xF0,0x00,0x88,0x00,0x84,0x00,0x82,0x00,0x41,0x00,0x20,0x80,0x10,0x40,0x08,0x20,0x04,0x10,0x02,0x08,0x01,0x04,0x00,0x82,0x00,0x42,0x00,0x22,0x00,0x1E,0x00,0x00}; // 0x5c(back_slash) uchar code define_CGRAM_3D[]={34,0x19, 0x3D, 0x0F,0xE0,0x08,0x20,0x08,0x20,0x0E,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x0E,0x20,0x08,0x20,0x08,0x20,0x0F,0xE0,0x00,0x00}; // 0x5d(sq_branket_r) uchar code define_CGRAM_3E[]={34,0x19, 0x3E, 0x01,0x00,0x02,0x80,0x04,0x40,0x08,0x20,0x11,0x10,0x22,0x88,0x44,0x44,0x78,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; // 0x5e(power) uchar code define_CGRAM_3F[]={34,0x19, 0x3F, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFE,0x80,0x02,0x80,0x02,0xFF,0xFE,0x00,0x00}; // 0x5f(underscore) uchar TempData[3]; TempData[0]=2; // use internal 16x16 CGRAM TempData[1]=0x10; TempData[2]=0x03; WritePKG(TempData); // sent all the font data WritePKG(define_CGRAM_00); WritePKG(define_CGRAM_01); WritePKG(define_CGRAM_02); WritePKG(define_CGRAM_03); WritePKG(define_CGRAM_04); WritePKG(define_CGRAM_05); WritePKG(define_CGRAM_06); WritePKG(define_CGRAM_07); WritePKG(define_CGRAM_08); WritePKG(define_CGRAM_09); WritePKG(define_CGRAM_0A); WritePKG(define_CGRAM_0B); WritePKG(define_CGRAM_0C); WritePKG(define_CGRAM_0D); WritePKG(define_CGRAM_0E); WritePKG(define_CGRAM_0F); WritePKG(define_CGRAM_10); WritePKG(define_CGRAM_11); WritePKG(define_CGRAM_12); WritePKG(define_CGRAM_13); WritePKG(define_CGRAM_14); WritePKG(define_CGRAM_15); WritePKG(define_CGRAM_16); WritePKG(define_CGRAM_17); WritePKG(define_CGRAM_18); WritePKG(define_CGRAM_19); WritePKG(define_CGRAM_1A); WritePKG(define_CGRAM_1B); WritePKG(define_CGRAM_1C); WritePKG(define_CGRAM_1D); WritePKG(define_CGRAM_1E); WritePKG(define_CGRAM_1F); WritePKG(define_CGRAM_20); WritePKG(define_CGRAM_21); WritePKG(define_CGRAM_22); WritePKG(define_CGRAM_23); WritePKG(define_CGRAM_24); WritePKG(define_CGRAM_25); WritePKG(define_CGRAM_26); WritePKG(define_CGRAM_27); WritePKG(define_CGRAM_28); WritePKG(define_CGRAM_29); WritePKG(define_CGRAM_2A); WritePKG(define_CGRAM_2B); WritePKG(define_CGRAM_2C); WritePKG(define_CGRAM_2D); WritePKG(define_CGRAM_2E); WritePKG(define_CGRAM_2F); WritePKG(define_CGRAM_30); WritePKG(define_CGRAM_31); WritePKG(define_CGRAM_32); WritePKG(define_CGRAM_33); WritePKG(define_CGRAM_34); WritePKG(define_CGRAM_35); WritePKG(define_CGRAM_36); WritePKG(define_CGRAM_37); WritePKG(define_CGRAM_38); WritePKG(define_CGRAM_39); WritePKG(define_CGRAM_3A); WritePKG(define_CGRAM_3B); WritePKG(define_CGRAM_3C); WritePKG(define_CGRAM_3D); WritePKG(define_CGRAM_3E); WritePKG(define_CGRAM_3F); } //----------------------------------- // SPRITE Routine 32x32 size //----------------------------------- #define sprite_size_x 32 // sprite size 32 #define sprite_size_y 32 // sprite size 32 void spirte_t_on(uint color01, color02, color03) // enable sprite with transparence (LUT0 is for transparance) { uchar Buffer[5]; Buffer[0]=4; Buffer[1]=0x83; Buffer[2]=0x00; Buffer[3]=0xf1; Buffer[4]=0xc1; // enable, transparency, 2bpp WritePKG(Buffer); Buffer[0]=4; Buffer[1]=0x83; Buffer[2]=0x04; Buffer[3]=0xf1; Buffer[4]=color01; // LUT1 color lo WritePKG(Buffer); Buffer[0]=4; Buffer[1]=0x83; Buffer[2]=0x05; Buffer[3]=0xf1; Buffer[4]=color01>>8; // LUT1 color hi WritePKG(Buffer); Buffer[0]=4; Buffer[1]=0x83; Buffer[2]=0x06; Buffer[3]=0xf1; Buffer[4]=color02; // LUT2 color lo WritePKG(Buffer); Buffer[0]=4; Buffer[1]=0x83; Buffer[2]=0x07; Buffer[3]=0xf1; Buffer[4]=color02>>8; // LUT2 color hi WritePKG(Buffer); Buffer[0]=4; Buffer[1]=0x83; Buffer[2]=0x08; Buffer[3]=0xf1; Buffer[4]=color03; // LUT3 color lo WritePKG(Buffer); Buffer[0]=4; Buffer[1]=0x83; Buffer[2]=0x09; Buffer[3]=0xf1; Buffer[4]=color03>>8; // LUT3 color hi WritePKG(Buffer); Buffer[0]=4; Buffer[1]=0x83; Buffer[2]=0x0a; Buffer[3]=0xf1; Buffer[4]=sprite_size_x-1;// set the x size (32-1) WritePKG(Buffer); Buffer[0]=4; Buffer[1]=0x83; Buffer[2]=0x0b; Buffer[3]=0xf1; Buffer[4]=sprite_size_y-1;// set the y size (32-1) WritePKG(Buffer); } void sprite_s_on(uint color00, color01, color02, color03) // enable sprite with out transparence { uchar Buffer[5]; Buffer[0]=4; Buffer[1]=0x83; Buffer[2]=0x00; Buffer[3]=0xf1; Buffer[4]=0x81; // enable, solid, 2bpp WritePKG(Buffer); Buffer[0]=4; Buffer[1]=0x83; Buffer[2]=0x02; Buffer[3]=0xf1; Buffer[4]=color00; // LUT0 color lo WritePKG(Buffer); Buffer[0]=4; Buffer[1]=0x83; Buffer[2]=0x03; Buffer[3]=0xf1; Buffer[4]=color00>>8; // LUT0 color hi WritePKG(Buffer); Buffer[0]=4; Buffer[1]=0x83; Buffer[2]=0x04; Buffer[3]=0xf1; Buffer[4]=color01; // LUT1 color lo WritePKG(Buffer); Buffer[0]=4; Buffer[1]=0x83; Buffer[2]=0x05; Buffer[3]=0xf1; Buffer[4]=color01>>8; // LUT1 color hi WritePKG(Buffer); Buffer[0]=4; Buffer[1]=0x83; Buffer[2]=0x06; Buffer[3]=0xf1; Buffer[4]=color02; // LUT2 color lo WritePKG(Buffer); Buffer[0]=4; Buffer[1]=0x83; Buffer[2]=0x07; Buffer[3]=0xf1; Buffer[4]=color02>>8; // LUT2 color hi WritePKG(Buffer); Buffer[0]=4; Buffer[1]=0x83; Buffer[2]=0x08; Buffer[3]=0xf1; Buffer[4]=color03; // LUT3 color lo WritePKG(Buffer); Buffer[0]=4; Buffer[1]=0x83; Buffer[2]=0x09; Buffer[3]=0xf1; Buffer[4]=color03>>8; // LUT3 color hi WritePKG(Buffer); Buffer[0]=4; Buffer[1]=0x83; Buffer[2]=0x0a; Buffer[3]=0xf1; Buffer[4]=sprite_size_x-1;// set the x size (32-1) WritePKG(Buffer); Buffer[0]=4; Buffer[1]=0x83; Buffer[2]=0x0b; Buffer[3]=0xf1; Buffer[4]=sprite_size_y-1;// set the y size (32-1) WritePKG(Buffer); } void sprite_off() // disable sprite, turn the sprite layer off { uchar Buffer[5]; Buffer[0]=4; Buffer[1]=0x83; Buffer[2]=0x00; Buffer[3]=0xf1; Buffer[4]=0x01; // disable, solid, 2bpp WritePKG(Buffer); } void sprite_location(uint x,y) // disable sprite, turn the sprite layer off { uchar Buffer[5]; Buffer[0]=4; Buffer[1]=0x83; Buffer[2]=0x0c; Buffer[3]=0xf1; Buffer[4]=x; //location x lo WritePKG(Buffer); Buffer[0]=4; Buffer[1]=0x83; Buffer[2]=0x0d; Buffer[3]=0xf1; Buffer[4]=x>>8; //location x hi WritePKG(Buffer); Buffer[0]=4; Buffer[1]=0x83; Buffer[2]=0x0e; Buffer[3]=0xf1; Buffer[4]=y; // location y lo WritePKG(Buffer); Buffer[0]=4; Buffer[1]=0x83; Buffer[2]=0x0f; Buffer[3]=0xf1; Buffer[4]=y>>8; // location y hi WritePKG(Buffer); } void sprite_icon_wirte(uchar *icon) { uchar Buffer[5]; uchar i, j; Buffer[0]=4; Buffer[1]=0x83; Buffer[2]=0x42; Buffer[3]=0xf1; Buffer[4]=0x00; //assign sprite data at 2b000H (Lo byte) WritePKG(Buffer); Buffer[0]=4; Buffer[1]=0x83; Buffer[2]=0x43; Buffer[3]=0xf1; Buffer[4]=0xb0; //assign sprite data at 2b000H (Mid byte) WritePKG(Buffer); Buffer[0]=4; Buffer[1]=0x83; Buffer[2]=0x44; Buffer[3]=0xf1; Buffer[4]=0x02; //assign sprite data at 2b000H (Hi byte) WritePKG(Buffer); Buffer[0]=4; Buffer[1]=0x81; Buffer[2]=0x00; Buffer[3]=0xb0; Buffer[4]=0x02; // set the internal add pointer for data write WritePKG(Buffer); for(j=0; j>8; Buffer[4]=y1; Buffer[5]=y1>>8; Buffer[6]=x2; Buffer[7]=x2>>8; Buffer[8]=y2; Buffer[9]=y2>>8; WritePKG(Buffer); delayms(20); } void ColorBOX() { SetFgColor(BLACK); Fill_Rect( 0, 0,319,239); SetFgColor(hi_ma); Fill_Rect( 0, 10, 55, 69); SetFgColor(hi_mr); Fill_Rect( 66, 10,121, 69); SetFgColor(hi_re); Fill_Rect(132, 10,187, 69); SetFgColor(hi_or); Fill_Rect(198, 10,253, 69); SetFgColor(hi_ye); Fill_Rect(264, 10,319, 69); SetFgColor(hi_bm); Fill_Rect( 0, 90, 55,149); SetFgColor(hi_yg); Fill_Rect(264,90,319,149); SetFgColor(hi_bl); Fill_Rect( 0,170, 55,229); SetFgColor(hi_cb); Fill_Rect( 66,170,121,229); SetFgColor(hi_cy); Fill_Rect(132,170,187,229); SetFgColor(hi_gc); Fill_Rect(198,170,253,229); SetFgColor(hi_gr); Fill_Rect(264,170,319,229); } //----------------------------------- // init routine //----------------------------------- uchar code Set_F500[]={4,0x83,0x00,0xf5,0x00}; // Reg[f500]=00 (internal MCS0 cycle pulse width) uchar code Set_F504[]={4,0x83,0x04,0xf5,0x04}; // Reg[f504]=44 (internal MCS1 pulse sidth) uchar code Set_F505[]={4,0x83,0x05,0xf5,0x80}; // Reg[f505]=80 (internal MCS1 memory accessing setting) uchar code Set_F6C4[]={4,0x83,0xc4,0xf6,0x10}; // Reg[f505]=80 Set Memory Clock Divide uchar code Set_F080[]={4,0x83,0x80,0xf0,0xfc}; // Reg[f080]=fc,bc,b4 (16bpp TFT) ok uchar code Set_F08E[]={4,0x83,0x8e,0xf0,0x32}; // Reg[f08e]=32 (set pixel clock and LCD_ON) uchar code Set_F090[]={4,0x83,0x90,0xf0,0x12}; // HorFP: 0x12(NT39016D) uchar code Set_F091[]={4,0x83,0x91,0xf0,0x26}; // HorBP-HsyncWidth: 0x46(NT39016D)-(0x1f+0x01)= 0x26 uchar code Set_F092[]={4,0x83,0x92,0xf0,0x1f}; // HsyncWidth: close to half of the HorBP, where 0x1f is max uchar code Set_F094[]={4,0x83,0x94,0xf0,0x0a}; // VerFP: 0x10(NT39016D) uchar code Set_F095[]={4,0x83,0x95,0xf0,0x06}; // VerBp-VsyncWidth: 0x0d(NT39016D)-(0x06+0x01)= 0x06 uchar code Set_F096[]={4,0x83,0x96,0xf0,0x06}; // VerPlusWidth: set to half of the VerBp uchar code Set_8F[]={7,0x8f,0x69,0x45,0x61,0x67,0x6c,0x65}; uchar code Set_F240[]={4,0x83,0x40,0xf2,0x00}; // GPIO as output uchar code Set_F241[]={4,0x83,0x41,0xf2,0x3f}; // GPIO set to 1s void initLCDM(void) { _RES=0; delayms(20); _RES=1; delayms(800);//delayms(800); // execute all the setting in above WritePKG(Set_F500); WritePKG(Set_F504); WritePKG(Set_F505); WritePKG(Set_F6C4); WritePKG(Set_8F); WritePKG(Set_F240); WritePKG(Set_F241); WritePKG(Set_F080); WritePKG(Set_F08E); WritePKG(Set_F090); WritePKG(Set_F091); WritePKG(Set_F092); WritePKG(Set_F094); WritePKG(Set_F095); WritePKG(Set_F096); } //----------------------------------- // TFT driver Reg setting //----------------------------------- void SdRegVal(uchar RegAdd, uchar RegDat) // T8000 and TFT SPI connection // GpioData.1=_SENA, GpioData.2=SCLK, GpioData.3=SDIN // using T8000 GPIO to sent command into TFT SPI port { uchar i, Buffer[5]; BitData=(RegAdd<<2)+3; // move the RegAdd.5 to the D7, and D1=1 for write, D0=1 for don't care for(i=0; i<8; i++) // write the address { SENA=0; SCLK=0; SDIN=BitData7; Buffer[0]=4; Buffer[1]=0x83; Buffer[2]=0x41; Buffer[3]=0xf2; Buffer[4]=GpioData; WritePKG(Buffer); SCLK=1; Buffer[0]=4; Buffer[1]=0x83; Buffer[2]=0x41; Buffer[3]=0xf2; Buffer[4]=GpioData; WritePKG(Buffer); SCLK=0; Buffer[0]=4; Buffer[1]=0x83; Buffer[2]=0x41; Buffer[3]=0xf2; Buffer[4]=GpioData; WritePKG(Buffer); BitData=BitData<<1; } BitData=RegDat; for(i=0; i<8; i++) // write the data { SENA=0; SCLK=0; SDIN=BitData7; Buffer[0]=4; Buffer[1]=0x83; Buffer[2]=0x41; Buffer[3]=0xf2; Buffer[4]=GpioData; WritePKG(Buffer); SCLK=1; Buffer[0]=4; Buffer[1]=0x83; Buffer[2]=0x41; Buffer[3]=0xf2; Buffer[4]=GpioData; WritePKG(Buffer); SCLK=0; Buffer[0]=4; Buffer[1]=0x83; Buffer[2]=0x41; Buffer[3]=0xf2; Buffer[4]=GpioData; WritePKG(Buffer); BitData=BitData<<1; } SENA=1; Buffer[0]=4; Buffer[1]=0x83; Buffer[2]=0x41; Buffer[3]=0xf2; Buffer[4]=GpioData; WritePKG(Buffer); } //----------------------------------- // Main Program //----------------------------------- void main() { uchar i, j; uint temp1, temp2; uint sprite_locx, sprite_locy; SP=0x60; EA=0; LCDBUS=0xff; // init all the port _CS=1; _RES=1; A1=0; _WR=1; _RD=1; VCOM_DC=0x2a; // TFT suggested value initLCDM(); SdRegVal(0x0e,VCOM_DC+0x40); // set VCOM_DC BuiltCGRAM(); SetFgColor(BLACK); Fill_Rect( 0, 0, 319,239); //fill the full screen ColorBOX(); // show color boxes SetFontFgColor(WHITE); SetFontBgColor(BLACK); PrintASCII( 50, 2, "TOPWAY TECHNOLOGY CO., LTD."); PrintHalf( 50, 10, "TOPWAY TECHNOLOGY CO., LTD."); PrintGB( 50, 26, "\xa3\xd4\xa3\xcf\xa3\xd0\xa3\xd7\xa3\xc1\xa3\xd9"); // show CG RAM PrintCGRAM_inASCII(32, 88, " !\"#$%&'()*+,-./"); PrintCGRAM_inASCII(32,104, "0123456789:;<=>?"); PrintCGRAM_inASCII(32,120, "@ABCDEFGHIJKLMNO"); PrintCGRAM_inASCII(32,136, "PQRSTUVWXYZ[\\]^_"); sprite_locx=32, sprite_locy=180; // assign a location for sprite sprite_icon_wirte(icon_UFO); // built the sprite sprite_location(sprite_locx, sprite_locy); // set sprite location spirte_t_on(RED, YELLOW, GRAY); // turn on the sprite while(1) { for(i=0; i<240; i++) // make sprite move { sprite_locx++; sprite_location(sprite_locx, sprite_locy); delayms(2); if((rand()>>9)==(0x00)) // if random no give out a 0 { for(j=0; j<150; j++) {sprite_locy--; sprite_location(sprite_locx, sprite_locy); delayms(2);} temp1=rand()*2; temp2=rand()*2; spirte_t_on(temp1, temp2, GRAY); // change the color for(j=0; j<150; j++) {sprite_locy++; sprite_location(sprite_locx, sprite_locy); delayms(1);} } } for(i=0; i<240; i++) { sprite_locx--; sprite_location(sprite_locx, sprite_locy); delayms(5); if((rand()>>9)==(0x00)) // if random no give out a 0 { for(j=0; j<150; j++) {sprite_locy--; sprite_location(sprite_locx, sprite_locy); delayms(2);} temp1=rand()*2; temp2=rand()*2; spirte_t_on(temp1, temp2, GRAY); // change the color for(j=0; j<150; j++) {sprite_locy++; sprite_location(sprite_locx, sprite_locy); delayms(1);} } } } }