📄 ili9325.txt
字号:
LCD_write_c(0x0022);
}
/*===========================================================================
** 函数名称: ili9325_init_lcd
** 功能描述: 输出显示数据,并行,软件模拟8080
** 功能描述: 对LCD进行初始化
** 功能描述: 显示图片数据8bit
============================================================================*/
void ili9325_init_lcd(void)
{
Delay(50);
LCD_write_c(0x0000);
LCD_write_d(0x0001);
Delay(100);
LCD_write_c(0x0010);
LCD_write_d(0x0100);
LCD_write_c(0x0011);
LCD_write_d(0x0007);
LCD_write_c(0x0012);
LCD_write_d(0x1030);
LCD_write_c(0x0013);
LCD_write_d(0x0000);
Delay(200);
LCD_write_c(0x0010);
LCD_write_d(0x1490);
LCD_write_c(0x0011);
LCD_write_d(0x0227);
Delay(50);
LCD_write_c(0x0012);
LCD_write_d(0x001d);
Delay(50);
LCD_write_c(0x0013);
LCD_write_d(0x0800);
LCD_write_c(0x0029);
LCD_write_d(0x000f);
LCD_write_c(0x002b);
LCD_write_d(0x000d);
Delay(100);
//power on sequence
LCD_write_c(0x00e3);
LCD_write_d(0x3008);
LCD_write_c(0x00e7);
LCD_write_d(0x0012);
LCD_write_c(0x00ef);
LCD_write_d(0x1231);
LCD_write_c(0x0001);
LCD_write_d(0x0100);
LCD_write_c(0x0002);
LCD_write_d(0x0700);
LCD_write_c(0x0003);
LCD_write_d(0x1030);
LCD_write_c(0x0004);
LCD_write_d(0x0000);
LCD_write_c(0x0008);
LCD_write_d(0x0207);
LCD_write_c(0x0009);
LCD_write_d(0x0000);
LCD_write_c(0x000a);
LCD_write_d(0x0000);
LCD_write_c(0x000c);
LCD_write_d(0x0000);
LCD_write_c(0x000d);
LCD_write_d(0x0000);
LCD_write_c(0x000f);
LCD_write_d(0x0000);
Delay(50);
//adjust the gamma curve
LCD_write_c(0x0030);
LCD_write_d(0x0007);
LCD_write_c(0x0031);
LCD_write_d(0x0707);
LCD_write_c(0x0032);
LCD_write_d(0x0006);
LCD_write_c(0x0035);
LCD_write_d(0x0704);
LCD_write_c(0x0036);
LCD_write_d(0x1f04);
LCD_write_c(0x0037);
LCD_write_d(0x0004);
LCD_write_c(0x0038);
LCD_write_d(0x0000);
LCD_write_c(0x0039);
LCD_write_d(0x0706);
LCD_write_c(0x003c);
LCD_write_d(0x0701);
LCD_write_c(0x003d);
LCD_write_d(0x000f);
LCD_write_c(0x0020);
LCD_write_d(0x0000);
LCD_write_c(0x0021);
LCD_write_d(0x0000);
//set gram area
LCD_write_c(0x0050);
LCD_write_d(0x0000);
LCD_write_c(0x0051);
LCD_write_d(0x00ef);
LCD_write_c(0x0052);
LCD_write_d(0x0000);
LCD_write_c(0x0053);
LCD_write_d(0x013f);
LCD_write_c(0x0060);
LCD_write_d(0xa700);
LCD_write_c(0x0061);
LCD_write_d(0x0001);
LCD_write_c(0x006a);
LCD_write_d(0x0000);
//partial display control
LCD_write_c(0x0080);
LCD_write_d(0x0000);
LCD_write_c(0x0081);
LCD_write_d(0x0000);
LCD_write_c(0x0082);
LCD_write_d(0x0000);
LCD_write_c(0x0083);
LCD_write_d(0x0000);
LCD_write_c(0x0084);
LCD_write_d(0x0000);
LCD_write_c(0x0085);
LCD_write_d(0x0000);
//panel control
LCD_write_c(0x0090);
LCD_write_d(0x0010);
LCD_write_c(0x0092);
LCD_write_d(0x0600);
LCD_write_c(0x0093);
LCD_write_d(0x0003);
LCD_write_c(0x0095);
LCD_write_d(0x0110);
LCD_write_c(0x0097);
LCD_write_d(0x0000);
LCD_write_c(0x0098);
LCD_write_d(0x0000);
LCD_write_c(0x0007);
LCD_write_d(0x0000);
LCD_write_c(0x0007);
LCD_write_d(0x0133);
LCD_write_c(0x0022);
}
/*===========================================================================
** 函数名称: serial_delay()
** 功能描述: 延时
============================================================================*/
void serial_delay(void)
{
uchar delay ;
for(delay=10;delay>0;delay--)
{}
}
/*===========================================================================
** 函数名称: serial_write_bit_high()
** 功能描述: 串行送一位高电平数据
============================================================================*/
void serial_write_bit_high(void)
{
DCLK=0;
DIN=1;
DCLK=0;
DCLK=0;
// serial_delay();
DCLK=1;
DCLK=1;
// serial_delay();
DCLK=0;
}
/*===========================================================================
** 函数名称: serial_write_bit_low()
** 功能描述: 串行送一位低电平数据
============================================================================*/
void serial_write_bit_low(void)
{
DCLK=0;
DIN=0;
DCLK=0;
DCLK=0;
// serial_delay();
DCLK=1;
DCLK=1;
// serial_delay();
DCLK=0;
}
/*===========================================================================
** 函数名称: serial_read_data()
** 功能描述: 读触摸屏驱动IC-TSC2046产生的12位数据
============================================================================*/
int serial_read_data(void)
{
int i,j=0;
int data1=0;
DCLK=1;
for(i=11;i>=0;i--)
{
DCLK=0;
DCLK=0;
if(DOUT)
data1|= (1<<i);
DCLK=1;
DCLK=1;
}
return(data1);
}
/*===========================================================================
** 函数名称: serial_write_data()
** 功能描述: 写指令到TSC2046(8BIT)
============================================================================*/
void serial_write_data(uchar data1)
{
int i;
for (i=7;i>=0;i--)
{
if (data1 & (1<<i))
{
DCLK=0;
DIN=1;
DCLK=0;
DCLK=0;
DCLK=1;
DCLK=1;
DCLK=0;
}
else
{
DCLK=0;
DIN=0;
DCLK=0;
DCLK=0;
DCLK=1;
DCLK=1;
DCLK=0;
}
}
}
/*===========================================================================
** 函数名称: serial_init()
** 功能描述: 初始化设置
============================================================================*/
void serial_init(void)
{
DCLK=0;
CS_TP=1;
DIN=1;
DCLK=1;
CS_TP=0;
}
/*===========================================================================
** 函数名称: text_display()
** 功能描述: 在指定位置显示汉字
** 入口参数: X-文字位置x坐标,Y-文字位置Y坐标,xx-字体宽,yy-字体高,
** backh(l)_color-背景颜色高(底)位,txth(l)_color-字体颜色高(低)位
** 注意: 字体高必须为8的整数倍
** 出口参数:
============================================================================*/
void text_display(uint x,uint y,uint xx,uint yy,uint back_color,uint txt_color, uchar *pi)
{
uint ii,mm,jj;
uchar charter;
for(ii=0;ii<yy;ii++)
{
for(mm=0;mm<xx/8;mm++)
{
charter=*pi;
for(jj=0;jj<8;jj++)
{
LCD_write_c(0x0021);
LCD_write_d(y+ii); // RAM address set
LCD_write_c(0x0020);
LCD_write_d(x+mm*8+jj);
LCD_write_c(0x0022);
if((charter&0x80)==0)
{
LCD_write_d(back_color);
}
else
{
LCD_write_d(txt_color);
}
charter<<=1;
}
pi++;
}
}
LCD_write_c(0x0020); //x GDDRAM address set
LCD_write_d(0x0000);
LCD_write_c(0x0021); //y GDDRAM address set
LCD_write_d(0x0000);
}
/*===========================================================================
** 函数名称: touch_point_display(uint xxx,uint yyy)
** 功能描述: 显示触摸屏X,Y坐标值。
** 入口参数:xxx-触摸屏X坐标,YYY-触摸屏Y坐标
** 出口参数:无
============================================================================*/
void touch_point_display(uint xxx,uint yyy)
{
uint jj;
uint xp[5],yp[5];
xp[0]=xxx/10000; //万位
xp[1]=(xxx%10000)/1000;
xp[2]=((xxx%10000)%1000)/100;
xp[3]=(((xxx%10000)%1000)%100)/10;
xp[4]=(((xxx%10000)%1000)%100)%10; //个位
yp[0]=yyy/10000;
yp[1]=(yyy%10000)/1000;
yp[2]=((yyy%10000)%1000)/100;
yp[3]=(((yyy%10000)%1000)%100)/10;
yp[4]=(((yyy%10000)%1000)%100)%10;
text_display(20,10,8,16,0x001f,0x0000,txtx); //显示X
for(jj=0;jj<5;jj++)
{
text_display(30+8*jj,10,8,16,0x001f,0x0000, txt[xp[jj]]);//显示X坐标值
}
text_display(20,30,8,16,0x001f,0x0000,txty); //显示Y
for(jj=0;jj<5;jj++)
{
text_display(30+8*jj,30,8,16,0x001f,0x0000, txt[yp[jj]]); //显示Y坐标值
}
}
/*===========================================================================
** 函数名称: touch_panel_test(void)
** 功能描述: 测试触摸屏,根据触摸点显示图象
** 入口参数:无
** 出口参数:无
============================================================================*/
void touch_panel_test(void)
{
uint x ,y;
x=0;
y=0;
serial_write_data(0x90);//
Delay(2);
y=serial_read_data();
y=y-225; //修正X坐标
serial_write_data(0xD0);//
Delay(2);
x=serial_read_data();
x=x-320;
if ((x>1800)&&(x<3600)&&(((y>1900)&&(y<3800)))) //1
{
showRGBW();
smhj();
touch_point_display(x,y);
// display_icon();
}
if ((x>50)&&(x<1800)&&(((y>1900)&&(y<3800)))) //2
{
show_hb();
smhj();
touch_point_display(x,y);
// display_icon();
}
if ((x>1800)&&(x<3600)&&(((y>50)&&(y<1900)))) //3
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -