📄 9320ok.c
字号:
/****************************************************************************
Controller IC:ILI9320,LG 2.4 TFT
Paraller type:16 bit-8080 interface
Resolutions: 240*320 pixels
P0 : DB0---DB7===>D10-D17
P1 : P1.4 P1.3 P1.2 P1.1 P1.0
RES CS1 RS /WR RD
Modified date: 2006.09.24
Writer by: victor
note:register high 8bit must 00
****************************************************************************/
#include <reg52.h>
#include<intrins.h>
#define DisplayCol 240 //160
#define DisplaySeg 320 //128
#define StartCol 0 //
#define StartSeg 0 //
#define DataPort P0
#define ContPort P1
sbit _RST = P1^7;
sbit _CS1 = P1^4;
sbit RS = P1^5;
sbit _WR = P3^7; //3.6
sbit _RD = P3^6; //3.7
sbit led=P1^6;
sbit R1=P1^0;
sbit R2=P1^1;
sbit R3=P1^2;
sbit ROMCS=P1^3; //flash memory chip 1
sbit LBLPowerOn=P3^4; //backlight DC/DC on
unsigned int xdata *ptr;
unsigned int page,seg;
void delay(unsigned int param)
{
int i;
for(;param>0;param--)
for(i=0;i<960;i++);
}
void LCD_Index(unsigned char index)
{
RS=0;
P0=0;
led=1;
//delay(0);
led=0;
_CS1 =0;
DataPort=index;
_WR=0;
//delay(0);
_WR=1;
_CS1 =1;
}
void LCD_DataWrite(unsigned int set_db)
{
RS=1;
_CS1 =1;
P0=set_db>>8;
led=1;
led=0;
_CS1 =0;
P0=set_db;
_WR=0;
_WR=1;
_CS1 =1;
}
void LCD_CmdWrite(unsigned char index,unsigned int set_db)
{
LCD_Index(index);
LCD_DataWrite(set_db);
}
void LCD_Reset(void)
{
_CS1=0;
_RST=1;
_RD=1;
delay(10);
_RST=0;
delay(60);
_RST=1;
delay(10);
}
void LCD_Initial1(void) //initial code 1
{
LCD_CmdWrite(0x00,0x0001);
LCD_CmdWrite(0x01,0x0000);
LCD_CmdWrite(0x02,0x0300);
LCD_CmdWrite(0x03,0x10a0);
LCD_CmdWrite(0x04,0x0000);
LCD_CmdWrite(0x08,0x0202);
LCD_CmdWrite(0x09,0x0000);
LCD_CmdWrite(0x0a,0x0000);
LCD_CmdWrite(0x0c,0x0003);
LCD_CmdWrite(0x0d,0x0000);
LCD_CmdWrite(0x0f,0x0000);
LCD_CmdWrite(0x10,0x0000);
LCD_CmdWrite(0x11,0x0007);
LCD_CmdWrite(0x12,0x0000);
LCD_CmdWrite(0x13,0x0000);
delay(10);
LCD_CmdWrite(0x10,0x17b0);
LCD_CmdWrite(0x11,0x0007);
delay(10);
LCD_CmdWrite(0x12,0x011d);
LCD_CmdWrite(0x13,0x1500);
LCD_CmdWrite(0x29,0x000a);
LCD_CmdWrite(0x20,0x0000);
LCD_CmdWrite(0x21,0x0000);
LCD_CmdWrite(0x30,0x0000);
LCD_CmdWrite(0x31,0x0505);
LCD_CmdWrite(0x32,0x0004);
LCD_CmdWrite(0x35,0x0006);
LCD_CmdWrite(0x36,0x0707);
LCD_CmdWrite(0x37,0x0105);
LCD_CmdWrite(0x38,0x0002);
LCD_CmdWrite(0x39,0x0707);
LCD_CmdWrite(0x3c,0x0704);
LCD_CmdWrite(0x3d,0x0807);
LCD_CmdWrite(0x60,0x2700);
LCD_CmdWrite(0x61,0x0001);
LCD_CmdWrite(0x07,0x0173);
}
//----------------------------------------------------------------------
void Checker(unsigned int param1,unsigned int param2) //Full on,off,checkerboard,bar
{
LCD_Index(0x22);
for(page=0;page<DisplayCol;page++)
{
for(seg=0;seg<DisplaySeg;seg++)
{
if(seg%2)
{
LCD_DataWrite(param1);
}
else
{
LCD_DataWrite(param2);
}
}
}
}
void test(void) //test
{
for(page=0;page<DisplayCol;page++)
{
for(seg=0;seg<DisplaySeg;seg++)
{
if (page<3)
{
LCD_DataWrite(0xffff);
delay(10);
}
else
LCD_DataWrite(0x0000);
}
}
}
void WriteGrid1(void)
{
for(page=0;page<DisplayCol;page++)
{
for(seg=0;seg<DisplaySeg;seg++)
{
switch((page/16+seg/16)%3)
{
case 0: LCD_DataWrite(0x001f);break; //red
case 1: LCD_DataWrite(0x07e0);break; //green
case 2: LCD_DataWrite(0xf800);break; //blue
}
}
}
}
void WriteBar1(void)
{
unsigned char i;
unsigned int n,m;
LCD_Index(0x22);
for(i=0;i<80;i++)
{
for(m=0;m<240;m++)
LCD_DataWrite(0xf800);
}
for(i=0;i<80;i++)
{
for(m=0;m<240;m++)
LCD_DataWrite(0x07e0);
}
for(i=0;i<80;i++)
{
for(m=0;m<240;m++)
LCD_DataWrite(0x001f);
}
for(i=0;i<80;i++)
{
for(m=0;m<240;m++)
LCD_DataWrite(0xffff);
}
}
//============================================
void Field(void)
{
unsigned char x;
unsigned int y;
LCD_Index(0x22);
for(y=0;y<320;y++)
for(x=0;x<240;x++)
{
if((y==0)||(y==1)||(y==158)||(y==159)||(y==318)||(y==319)){LCD_DataWrite(0xffff);}
else if((x==0)||(x==1)||(x==118)||(x==119)||(x==238)||(x==239)){LCD_DataWrite(0xffff);}
else{LCD_DataWrite(0x0000); }
}
}
void WR_DATA(unsigned char temp1,temp2)
{
RS=1;
_CS1 =1;
DataPort=temp1;
led=1;
led=0;
_CS1 =0;
DataPort=temp2;
_WR=0;
_WR=1;
_CS1 =1;
}
//========================================================
void showpicture1()
{
unsigned char xdata *p;
unsigned int i,j,temp1,temp2;
unsigned long n=0;
R1=0;
R2=0;
R3=0;
LCD_CmdWrite(0x20,0x0000);
LCD_CmdWrite(0x21,0x0000);
LCD_Index(0x22);
for(i=0;i<320;i++)
{
for(j=0;j<240;j++)
{
ROMCS=0;
temp1=*p++;
temp2=*p++;
ROMCS=1;
WR_DATA(temp1,temp2);
n+=1;
if(n==65535)
{
R1=1;
R2=0;
R3=0;
}
if(n==65535*2)
{
R1=0;
R2=1;
R3=0;
}
if(n==65535*3)
{
R1=1;
R2=1;
R3=0;
}
n+=1;
if(n==65535)
{
R1=1;
R2=0;
R3=0;
}
if(n==65535*2)
{
R1=0;
R2=1;
R3=0;
}
if(n==65535*3)
{
R1=1;
R2=1;
R3=0;
}
}
}
}
//-----------------------------------------------------------------------------
void main(void)
{
unsigned int step=0;
delay(10);
LCD_Reset();
LCD_Initial1();
for(step=0;step<8;step++)
{
switch(step)
{
case 2: Checker(0xffff,0xffff);break; //all on
case 3: Checker(0x0000,0x0000);break; //all off
case 4: Checker(0x07e0,0x07e0);break; //green
case 5: Checker(0x001f,0x001f);break; //red
case 6: Checker(0xf800,0xf800);break; //blue
case 1: Field(); break; //Gird
case 7: WriteBar1(); break; //bar
case 0: showpicture1(); break; //bitbmp
//case 8: WriteBmp(1); break; //
//case 9: WriteBoundary();// Power_Off();
step=0; break;//boundary
}
delay(100);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -