⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ili9325.c

📁 ILI9325的51驱动程序,驱动2.4TFT屏
💻 C
📖 第 1 页 / 共 5 页
字号:
/*****************************************************************************
 LCD TEST FOR 51
******************************************************************************
LCM    : CPT2.4,320*240,ILI9325
DATA   : 2008.06.30
PRG BY : YGRAND
REV 0  : 2008.06.30

*****************************************************************************/
#include <reg51.h>
#include <intrins.h>
//#include <math.h>


/*****************************************************************************
数据端口定义:
P0: P0.7  P0.6  P0.5  P0.4  P0.3  P0.2  P0.1   P0.0 
    DB15  DB14  DB13  DB12  DB11  DB10  DB9    DB8
P1: P1.7  P1.6  P1.5  P1.4  P1.3  P1.2  P1.1   P1.0 
    DB7   DB6   DB5   DB4   DB3   DB2   DB1    DB0
   (SDA) (SCK)

控制端口定义:
P3: P3.7  P3.6  P3.5  P3.4  P3.3  P3.2  P3.1   P3.0 
    CS1   TP_CS CS0   RST   RS    KEY1  WR0    RD0  
		    				     TP_IRQ SCK    SDA
	 
P2: P2.7  P2.6  P2.5  P2.4  P2.3  P2.2  P2.1   P2.0 
    BEEP  KEY4  KEY3  KEY2 	BUSY  DOUT  DIN    DCLK 
					        HSYNC VSYNC ENABLE DOTCLK 
						    DB17  DB16  	
******************************************************************************/	   
#define DBH    P0
#define DBL    P1
#define ROW    320
#define COL    240

sbit  	KEY1 = P3^2;	    //  
sbit  	KEY2 = P2^4;		//
sbit  	KEY3 = P2^5;	    //
sbit  	KEY4 = P2^6;	    //

sbit	KEY_WAIT=P2^4;      // KEY2

sbit	CS0    = P3^5;  
sbit	RST    = P3^4;  
sbit	RS     = P3^3;
sbit	WR0    = P3^1;
sbit	RD0    = P3^0;

sbit	DCLK   = P2^0;
sbit	TP_CS  = P3^6;
sbit	TP_IRQ = P3^2;                            
sbit	BUSY   = P2^3;
sbit	DIN    = P2^1;
sbit	DOUT   = P2^2;

//----------------------------------------------------------------------------
unsigned char bdata RED;
unsigned char bdata GREEN;
unsigned char bdata BLUE;
   
//----------------------------------------------------------------------------
// array
unsigned char  code  cursorIcon[];
unsigned char  code  goodIcon[];
unsigned char  code  numbelImg[];
unsigned char  code  wordImg[];
unsigned char  code  symbolImg[];


unsigned char  code  r_bar_l[];
unsigned char  code  r_bar_r[];
unsigned char  code  g_bar_l[];
unsigned char  code  g_bar_r[];
unsigned char  code  b_bar_l[];
unsigned char  code  b_bar_r[];
unsigned char  code  pic_green_l[];
unsigned char  code  pic_green_r[];
unsigned char  code  pic_eval[];

//8*8
unsigned char  code  graphic8_0[];  //Full_0
unsigned char  code  graphic8_1[];  //Full_1
unsigned char  code  graphic8_2[];  //"|"
unsigned char  code  graphic8_3[];  //"-"
unsigned char  code  graphic8_4[];  //DOT
unsigned char  code  graphic8_5[];  //"Q"
unsigned char  code  graphic8_6[];  //"2"
unsigned char  code  graphic8_7[];  //TRIANGLE
unsigned char  code  graphic8_8[];  //"/"
unsigned char  code  graphic8_9[];  //""
unsigned char  code  graphic8_10[]; //"+"
unsigned char  code  graphic8_11[]; //PANE
unsigned char  code  graphic8_12[]; //"*"
unsigned char  code  graphic8_13[]; //
//16*16
unsigned char  code  graphic16_0[];  //TRIANGLE
unsigned char  code  graphic16_1[];
unsigned char  code  graphic16_2[];


//----------------------------------------------------------------------------
unsigned int  TP_X,TP_Y;
unsigned char bdata  FG_STEP;			
sbit FG_STEP_1=FG_STEP^1;
sbit FG_STEP_2=FG_STEP^2;
sbit FG_STEP_3=FG_STEP^3;
sbit FG_STEP_4=FG_STEP^4;
sbit FG_STEP_5=FG_STEP^5;  
sbit FG_STEP_6=FG_STEP^6;

bit  FG_DISP_POS=0;

//----------------------------------------------------------------------------
void Delay(unsigned int dly);		  
void ResetChip(void);
void WaitKey(void);

void WriteComm(unsigned int i);
void WriteData(unsigned int i);
void SetWindowAddressX(unsigned int Xstart,unsigned int Xend); 
void SetWindowAddressY(unsigned int Ystart,unsigned int Yend); 
void SetWriteStartAddress(unsigned int Xstart,unsigned int Ystart);
void SetFullWindow(void);
void WriteRam(void);

void WriteChar(unsigned int rgb);
void DispColor(unsigned int rgb);
void DispFrame(void); 
void DispSnow(void);
void DispBand(void);
void DispRGBGray(void);
void DispPic(unsigned char code *picture);
void FillGraphic16(unsigned char code *graphic,unsigned int Frgb,Brgb);
void FillGraphic8(unsigned char code *graphic,unsigned int Frgb,Brgb);
void DispSingleColorLine(unsigned char code *graphic);
void FillColorLine(unsigned char code *graphic);
void FillGrayRGB(unsigned char code *graphic_r1,unsigned char code *graphic_r2,unsigned char code *graphic_g1,unsigned char code *graphic_g2,unsigned char code *graphic_b1,unsigned char code *graphic_b2);

void FillIconWindow(long int Xstart,long int Ystart,unsigned int rgb);
void WriteIconWindow(long int Xstart,long int Ystart,unsigned char code *p);
void WriteWord(unsigned int index,unsigned char code *array,unsigned int Xstart,unsigned int Ystart,unsigned int rgb);
void DispPos(unsigned int bout1,unsigned int bout2);
void WritePixel(unsigned char x,unsigned int y,unsigned int rgb);
void DrawLine(unsigned char Xstart,unsigned int Ystart,unsigned char Xend,unsigned int Yend,unsigned int rgb);	
void DrawGird(unsigned int rgb);


void EnterSLP(void);
void ExitSLP(void);
void InitLCD(void);

unsigned int ReadIDReg(void);
void DispID(void);

void StartSPI(void);
void StartTPTest(void);
void WriteCharToTP(unsigned char dat);
unsigned int ReadCharFromTP(void);
/*****************************************************************************
 FUNCTION DIFINE
*****************************************************************************/
void WriteComm(unsigned int i)
{
	CS0=0; 
	RD0=1;
	RS=0;
	
	DBL=i;  
	DBH=i>>8; 
	
	WR0=0;  
	WR0=1;  
	CS0=1;  
}
void WriteData(unsigned int i)
{
	CS0=0;
	RD0=1;
	RS=1;
	
	DBL=i;  
	DBH=i>>8;  

	WR0=0;  
	WR0=1;  
	CS0=1;
}

void BlockWrite(unsigned int Xstart,unsigned int Xend,unsigned int Ystart,unsigned int Yend) 
{
	WriteComm(0x0050);WriteData(Xstart); // WINDOW ADDRESS    
	WriteComm(0x0051);WriteData(Xend);	

	WriteComm(0x0052);WriteData(Ystart);    
	WriteComm(0x0053);WriteData(Yend);	 
	
	WriteComm(0x0020); 	//HS
	WriteData(Xstart); 	

	WriteComm(0x0021);  //VS
	WriteData(Ystart); 	

	WriteComm(0x0022);  // WRITE RAM
}

void  Delay(unsigned int dly)
{
	unsigned int i,j;

	for(i=0;i<dly;i++)
	{
		for(j=0;j<1000;j++);
	}
}

void ResetChip(void)
{
	P0=0xff; P1=0xff;P2=0xff;P3=0xff;

	RST  = 1;
	Delay(50);
	RST  = 0;
	Delay(300);
	RST  = 1;
	Delay(50);
}

void WaitKey(void)
{
    KEY_WAIT = 1;

	while(KEY_WAIT);
	Delay(100);
	while(!KEY_WAIT);
}

void WriteChar(unsigned int rgb)
{ 
   DBH=rgb>>8; 
   DBL=rgb;
  
   CS0=0; 
   RS=1;	
   RD0=1;
   WR0=0;
   WR0=1;
   CS0=1;
}

void DispBand(void)	 
{
	unsigned int i,j,k;
	//unsigned int color[8]={0x001f,0x07e0,0xf800,0x07ff,0xf81f,0xffe0,0x0000,0xffff};
	unsigned int color[8]={0xf800,0xf800,0x07e0,0x07e0,0x001f,0x001f,0x94B2,0x94B2};

   	BlockWrite(0,COL-1,0,ROW-1);
    	
	CS0=0;
	RD0=1;
	RS=1;																									  

	for(i=0;i<8;i++)
	{
		for(j=0;j<ROW/8;j++)
		{
	        for(k=0;k<COL;k++)
			{
				DBL=color[i];     
				DBH=color[i]>>8;  
				WR0=0;  
				WR0=1;  
			} 
		}
	}
	
	CS0=1;
}

void DispColor(unsigned int rgb)
{
	unsigned int i,j;	

	BlockWrite(0,COL-1,0,ROW-1);
	
	CS0=0; 
	RD0=1;
	RS=1;
	
	DBH=rgb>>8;
	DBL=rgb;

	for(i=0;i<ROW;i++)
		for(j=0;j<COL;j++)
		{
		 WR0=0;  
		 WR0=1;  
		}
	CS0=1;
}

void DispFrame(void)
{
	unsigned int i,j;
	
	BlockWrite(0,COL-1,0,ROW-1);

	CS0=0;
	RD0=1;
	RS=1;
		
	DBH=0xf8,DBL=0x00,WR0=0; WR0=1;
	for(i=0;i<COL-2;i++){DBH=0xFF,DBL=0xFF,WR0=0;WR0=1;}
	DBH=0x00,DBL=0x1f,WR0=0;WR0=1;

	for(j=0;j<ROW-2;j++)
	{
		DBH=0xf8,DBL=0x00,WR0=0;WR0=1;
		for(i=0;i<COL-2;i++){DBH=0x00,DBL=0x00,WR0=0;WR0=1;}
		DBH=0x00,DBL=0x1F,WR0=0;WR0=1;
	}

	DBH=0xf8,DBL=0x00,WR0=0;WR0=1;
	for(i=0;i<COL-2;i++){DBH=0xFF,DBL=0xFF,WR0=0;WR0=1;}
	DBH=0x00,DBL=0x1F,WR0=0;WR0=1;
	
	CS0=1;
}

void DispRGBGray(void)
{
	unsigned char i,j,k;
	
	BlockWrite(0,COL-1,0,ROW-1);

	CS0=0;
	RD0=1;
	RS=1;

	// balck -> red	
	for(k=0;k<ROW/6;k++)
	{
		for(i=0;i<32;i++)
		{
			for(j=0;j<COL/32;j++)
			{
				DBH=i<<3;
				DBL=0;
				WR0=0;
				WR0=1;
			}
		}
		for(i=0;i<COL%32;i++){DBH=0xF8,DBL=0x00,WR0=0;WR0=1;}
	}

	// red -> black
	for(k=0;k<ROW/6;k++)
	{	
		for(i=0;i<COL%32;i++){DBH=0xF8,DBL=0x00,WR0=0;WR0=1;}
		for(i=31;i>0;i--)
		{
			for(j=0;j<COL/32;j++)
			{
				DBH=i<<3;
				DBL=0;
				WR0=0;
				WR0=1;
			}
		}
		for(i=0;i<COL/32;i++){DBH=0x00,DBL=0x00,WR0=0;WR0=1;}
	}
	// balck -> green
	for(k=0;k<ROW/6+1;k++)
	{
		for(i=0;i<(COL-COL/64*64)/2;i++){DBH=0x00,DBL=0x00,WR0=0;WR0=1;}
		for(i=0;i<64;i++)
		{
			for(j=0;j<COL/64;j++)
			{
				DBH=i>>3;
				DBL=i<<5;
				WR0=0;
				WR0=1;
			}
		}
		for(i=0;i<(COL-COL/64*64)/2;i++){DBH=0x07,DBL=0xe0,WR0=0;WR0=1;}
	}

	// green -> black
	for(k=0;k<ROW/6+1;k++)
	{
		for(i=0;i<(COL-COL/63*63)/2+1;i++){DBH=0x07,DBL=0xe0,WR0=0;WR0=1;}
		for(i=63;i>0;i--)
		{
			for(j=0;j<COL/63;j++)
			{
				DBH=i>>3;
				DBL=i<<5;
				WR0=0;
				WR0=1;
			}
		}
		for(i=0;i<(COL-COL/63*63)/2;i++){DBH=0x00,DBL=0x00,WR0=0;WR0=1;}
	}	


	// balck -> blue
	for(k=0;k<ROW/6;k++)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -