📄 il9325.c
字号:
P1=0xff;
P2=0xff;
P3=0xff;
P0=0xff;
CS1=0;
RST=0;
delay(100);
RST=1;
delay(100);
//Initial code_r61505 with 2.4”
// Power setting
init_data(0x0000, 0x0000);
delay(100);
init_data(0x0007, 0x0000); // Set the Vcore voltage and this setting is must.
init_data(0x0012, 0x0000); // Start internal OSC.
delay(100);
//init_data(0x0000, 0x0000);
init_data(0x00a4, 0x0001); // set SS and SM bit
delay(100);
init_data(0x0060, 0x2700); // set 1 line inversion
init_data(0x0008, 0x0808); // set GRAM write direction and BGR=1.
init_data(0x0030, 0x0007);
init_data(0x0031, 0x0206);
init_data(0x0032, 0x0506);
//init_data(0x0033, 0x0202);
//init_data(0x0034, 0x0202);
init_data(0x0035, 0x0704);
init_data(0x0036, 0x1203);
init_data(0x0037, 0x0007);
init_data(0x0038, 0x0000);
init_data(0x0039, 0x0706);
//init_data(0x003a, 0x0202);
//init_data(0x003b, 0x0102);
init_data(0x003C, 0x0701);
init_data(0x003D, 0x000f);//051C
//init_data(0x0007, 0x0001); // Resize register
//init_data(0x0017, 0x0001); // set the back porch and front porch
init_data(0x0010, 0x0000); // set non-display area refresh cycle ISC[3:0]
init_data(0x0011, 0x0007); // FMARK function217
delay(50);
init_data(0x0012, 0x0000); // RGB interface setting
//init_data(0x0013, 0x0000); // Frame marker Position
delay(100);
init_data(0x0010, 0x1490);
init_data(0x0011, 0x0227);
delay(100);
init_data(0x0012, 0x001a);
delay(100);
init_data(0x0013, 0x1100);
init_data(0x0029, 0x000a); // RGB interface polarityA
init_data(0x002b, 0x000d);//013C
delay(100);
//*************Power On sequence ****************//
init_data(0x0001, 0x0100); // SAP, BT[3:0], AP, DSTB, SLP, STB
init_data(0x0002, 0x0700); // DC1[2:0], DC0[2:0], VC[2:0]
init_data(0x0003, 0x1000); // VREG1OUT voltage
init_data(0x0004, 0x1030); // VDV[4:0] for VCOM amplitude
//delay(200); // Dis-charge capacitor power voltage
init_data(0x0009, 0x0000); // SAP, BT[3:0], AP, DSTB, SLP, STB
init_data(0x000a, 0x0000); // R11h=0x0001 at VCI=3.3V DC1[2:0], DC0[2:0], VC[2:0]
//delay(50); // Delay 50ms
init_data(0x000c, 0x0000); // R11h=0x0138 at VCI=3.3V VREG1OUT voltage
//delay(50); // Delay 50ms
init_data(0x000D, 0x0000); // R11h=0x1800 at VCI=3.3V VDV[4:0] for VCOM amplitude
//init_data(0x0015, 0x8000); // R11h=0x0008 at VCI=3.3V VCM[4:0] for VCOMH
//delay(50);
init_data(0x0020, 0x0000); // GRAM horizontal Address
init_data(0x0021, 0x0000); // GRAM Vertical Address
//------------------ Set GRAM area ---------------//
init_data(0x0050, 0x0000); // Horizontal GRAM Start Address
init_data(0x0051, 0x00EF); // Horizontal GRAM End Address
init_data(0x0052, 0x0000); // Vertical GRAM Start Address
init_data(0x0053, 0x013F); // Vertical GRAM Start Address
init_data(0x0060, 0xa700); // Gate Scan Line
init_data(0x0061, 0x0001); // NDL,VLE, REV
init_data(0x006A, 0x0000); // set scrolling line
//-------------- Partial Display Control ---------//
init_data(0x0080, 0x0000);
init_data(0x0081, 0x0000);
init_data(0x0082, 0x0000);
init_data(0x0083, 0x0000);
init_data(0x0084, 0x0000);
init_data(0x0085, 0x0000);
//-------------- Panel Control -------------------//
init_data(0x0090, 0x0010);
init_data(0x0092, 0x0600);
init_data(0x0093, 0x0003);
//delay(50);
init_data(0x0095, 0x0110);
init_data(0x0097, 0x0000);
init_data(0x0098, 0x0000);
init_data(0x0007, 0x0021);
delay(100);
init_data(0x0007, 0x0061);
delay(100);
init_data(0x0007, 0x0133); // 262K color and display ON
delay(100);
}
void test_patten(uint patten,col,row)
{
uint i,j;
address_set(0,239,0,320,0,0);
write_data(0x0022,0);
for(i=0;i<col;i++)
for(j=0;j<row;j++)
write_data(patten,1);
}
void address_set(uint hsa,uint hea,uint vsa,uint vea,uint ramaddl,uint ramaddh)
{
init_data(0x0050,hsa);
init_data(0x0051,hea);
init_data(0x0052,vsa);
init_data(0x0053,vea);
init_data(0x0020,ramaddl);
init_data(0x0021,ramaddh);
}
void gray(uint color)
{
uint i,j;
write_data(0x0022,0);
for(i=0;i<320;i++)
for(j=0;j<80;j++)
write_data(color,1);
}
/*--------------------TP start-------------------
void TP_int() interrupt 0 //ext INT 0
{
uint X,Y;
delay(10);
EX0=0;
X=TP_read(2);
Y=TP_read(1);
delay(2);
//put_pixel(X,Y);
put_pixel(X,Y);
inta++;
if(inta>10000)
{
write_data(0x0022,0);
test_patten(0xffff,240,320);
inta=0;
}
EX0=1;
} */
void put_pixel(uint x,uint y)
{
if(x>=X_add)x=239;
if(y>=Y_add)y=319;
address_set(0,240,0,320,x,y);
write_data(0x0022,0);
write_data(COLOR,1);
write_data(COLOR,1);
address_set(0,240,0,320,x,y+1);
write_data(0x0022,0);
write_data(COLOR,1);
write_data(COLOR,1);
}
uint TP_read(uchar a)
{
uchar k,temp;
uint k_temp;
#define TP_MODE 0x80// Disable PenIRQ interrupt
TP_CLK=0;
TP_DIN=0;
TP_CS=0;
TP_DOUT=1;
if(a==1)
temp=TP_MODE|0x10;//read y
if(a==2)
temp=TP_MODE|0x50;//read x
if(a==3)
temp=TP_MODE|0x20;//read Y1
if(a==4)
temp=TP_MODE|0x60;//read Y1
//TP_write(temp);
for(k=0;k<8;k++)
{
if((temp&0x80)==0)
TP_DIN=0;
else
TP_DIN=1;
TP_CLK=1;
temp=temp<<1;
TP_CLK=0;
}
TP_DIN=0;
TP_CLK=1;
TP_CLK=0;
//TP_BUSY=1;
//while(TP_BUSY);//wait for TP not busy.
k_temp=0;
for(k=11;k!=255;k--)
{
TP_CLK=0;
if(TP_DOUT!=0)
k_temp=k_temp|(1<<k);
TP_CLK=1;
}
TP_CS=1;
if(k_temp>400)
{
if(a==1)
k_temp=(k_temp-300)/11; //y
else
k_temp=(k_temp-400)/14; //x
}
else
k_temp=0;
return k_temp;
}
uchar code bmp[]={
/*
Image size:120 X 16 X 16BPP=3840 bytes.
4 bytes=P(x,y)+P(x+1,y)
Data format: 4 bytes(2 pixels)=RRRRRGGG,GGGBBBBB,RRRRRGGG,GGGBBBBB
*/
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -