//---------------------------------------------------------------------- /*EASTRISING TECHNOLOGY CO,.LTD.*/ // Module : ERM24064-1 Series // Lanuage : C51 Code // Create : JAVEN // Date : 2009-06-18 // Drive IC : T6963 // INTERFACE : 8080_8bit // MCU : AT89C52 // VDD : 5V //*************************************************************************** #include #include #include #include #include /********************DEFINE IO********************/ sbit CD =P2^0; // COMMAND/DATA sbit RESET =P2^4; // RESET sbit FS =P3^3; // 0:8*8 1 6*8 sbit _WR =P3^6; // WRITE sbit _RD =P3^7; // READ sbit int0=P3^2; bit log=0; #define uchar unsigned char #define uint unsigned int #define DataBus P1 #define Graphic 1 #define Character 0 unsigned char code BMP0[]; unsigned char code BMP1[]; unsigned char code BMP2[]; unsigned char code Chinese_character[]; void Locatexy(uchar xa,uchar ya,uchar mode); void CheckBusy_S0S1(); void CheckBusy_S2(); void CheckBusy_S3(); void WriteCommand( uchar dat1,uchar dat2,uchar command,uchar parameters_num ); void WriteData( uchar DataByte ); void LcmClear( void ); void Display_Str(uchar x,uchar y,uchar *ascll); void Display_16_16(uchar x,uchar y,uchar code *Chinese_character,uchar character_code); void DisplayDots( uchar DotByte,uchar DotByte1 ); void LcmInit( void ); void DisplayBMP(uchar x,uchar y,uchar W,uchar H, uchar code *puts ); void ReverseDisplayBMP(uchar x,uchar y,uchar W,uchar H, uchar code *puts ); void Delay(uint MS); void TestAscll(void); /************************LCM*************************/ /********************************************************/ // LOCATE X AND Y OF LCM /********************************************************/ void Locatexy(uchar xa,uchar ya,uchar mode) { uint a=0; if(mode) //Graphic mode x=0-29 y=0-64 START ADDRESS :0800 { a=ya*30+xa; WriteCommand((uchar)a,(uchar)(a>>8)+0x08,0x24,2); } else //Character mode x=0-29 y=0-7 START ADDRESS :0000 { a=ya*30+xa; WriteCommand((uchar)(a),(uchar)(a>>8),0x24,2); } } /***************************/ /*LCM READ AND WRITE BUSY CHECK /***************************/ void CheckBusy_S0S1() {uchar b; do {DataBus=0xff; CD=1; _RD=0; b=DataBus; _RD=1; } while(b&0x03!=0x03); } /***************************/ /*DATA AUTO READ BUSY CHECK /***************************/ void CheckBusy_S2() {uchar b; do {DataBus=0xff; CD=1; _RD=0; b=DataBus; _RD=1; } while(b&0x03==0); } /***************************/ /*DATA AUTO WRITE BUSY CHECK /***************************/ void CheckBusy_S3() {uchar b; do {DataBus=0xff; CD=1; _RD=0; b=DataBus; _RD=1; } while(b&0x08!=0x08); } /***************************/ /*WRITE COMMAND // dat1: parameters 1 // dat2: parameters 2 // command: command //parameters_num: parameters number /***************************/ void WriteCommand( uchar dat1,uchar dat2,uchar command,uchar parameters_num ) { if((parameters_num==1)|(parameters_num==2)) {CheckBusy_S0S1(); WriteData(dat1); } if(parameters_num==2) {CheckBusy_S0S1(); WriteData(dat2); } CheckBusy_S3(); CD = 1; DataBus = command; _WR = 0; _nop_(); _WR = 1; } /***************************/ /*WRITE DATA */ /***************************/ void WriteData( uchar DataByte ) { CD = 0; DataBus = DataByte; _WR = 0; _nop_(); _WR = 1; } void LcmClear( void ) { uint a; Locatexy(0,0,Character); WriteCommand(0,0,0xb0,0 ); for(a=0;a<8192;a++) { WriteData( 0 ); } WriteCommand(0,0,0xb2,0 ); } void Display_Str(uchar x,uchar y,uchar *ascll) { Locatexy(x,y,Character); while(*ascll>0) { WriteCommand(*ascll-0x20,0,0xc0,1 ); ascll++; } } void Display_16_16(uchar x,uchar y,uchar code *Chinese_character,uchar character_code) { uchar k,j; uint num=0; num=character_code*0x20; Locatexy(x,y,Graphic); for(j=0;j<16;j++) { for(k=0;k<2;k++) { WriteCommand(*(Chinese_character+num),0,0xc0,1 ); num++; } y+=1; Locatexy(x,y,Graphic); } } void DisplayDots( uchar DotByte,uchar DotByte1 ) { uchar k,j; Locatexy(0,0,Graphic); WriteCommand(0,0,0xb0,0 ); for(j=0;j<32;j++) { for(k=0;k<30;k++) { WriteData(DotByte); } for(k=0;k<30;k++) { WriteData(DotByte1); } } WriteCommand(0,0,0xb2,0 ); } void DisplayBMP(uchar x,uchar y,uchar W,uchar H, uchar code *puts ) { uchar k,j; Locatexy(x,y,Graphic); for(j=0;j