📄 ili9325.c
字号:
/*****************************************************************************
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 + -