📄 ili9325.txt
字号:
#pragma db code
#include<reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
/////////////////////////////////////////////
//根据液晶segment,common值改变。
#define picture1
//#define picture2
//#define interface_8_bit
#define interface_16_bit
#define common 320
#define segment 240
#define PORTL P0
#define PORTH P2
//control bus
sbit CS_MAIN=P3^0; //chip select signal
sbit RES=P3^7; //reset signal
sbit DC=P3^1; //data/command control signal
sbit WRITE=P3^2; //write strobe signal
sbit READ=P3^3;
//shift key
sbit KEY5=P1^0; //waitkey
sbit KEY1=P1^1;
//define tsc2046 interface
sbit DCLK = P1^2;
sbit CS_TP = P1^3;
sbit DIN = P1^4;
sbit BUSY = P1^5;
sbit DOUT = P1^6;
sbit PIN = P1^7;
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
/****************************************************************************
** 函数声明
*****************************************************************************/
void LCD_write_c(uint com);
void LCD_write_d(uint dat);
void cpu_initial(void);
void ili9320_init_lcd(void);
void ili9325_init_lcd(void);
void clear_ram(void);
void MainLcdFill(uint A);
void showRGBW(void);
void show_cross(void);
void volum_rgb_display(void);
void rgb_jb(void);
void rgbhbhj(void);
void show_hb(void);
void smhj(void);
void picture_display(unsigned char *pi);
void word_display(unsigned char *pi);
void polygon_display(uint polygon_color);
void cross_band(uint first_line,uint second_line);
void window_fill(uint x,uint y,uint xx,uint yy,uint fill_color);
void icon_pic(uint x,uint y,uint xx,uint yy,unsigned char *pi);
void tp_pic(uint x,uint y,uint xx,uint yy,unsigned char *pi);
void display_icon();
void display_word();
void touch_panel_test(void);
void serial_write_bit_high(void);
void serial_write_bit_low(void);
int serial_read_data(void);
void serial_write_data(uchar data1);
void serial_init(void);
void text_display(uint x,uint y,uint xx,uint yy,uint back_color,uint txt_color, uchar *pi);
void text_moving();
void touch_point_display(uint xxx,uint yyy);
void Delay(uint adj);
void LCD_reset(void);
void cpu_initial(void);
void waitkey(void);
code unsigned char pic1[];
code unsigned char pic2[];
code unsigned char picon[];
code unsigned char txt[10][16]; //0-9
code unsigned char txtx[]; //X
code unsigned char txty[];
/****************************************************************************
** 主程序
*****************************************************************************/
//////////////////////////////////////
//test the touch panel
/////////////////////////////////////
int main(void)
{
cpu_initial();
LCD_reset();
ili9325_init_lcd();
MainLcdFill(0xf800);
Delay(50);
waitkey();
MainLcdFill(0x07e0);
Delay(50);
waitkey();
MainLcdFill(0x001f);
Delay(50);
waitkey();
MainLcdFill(0x0000);
Delay(50);
waitkey();
MainLcdFill(0xffff);
Delay(50);
waitkey();
rgbhbhj();
Delay(50);
waitkey();
rgb_jb();
Delay(50);
waitkey();
show_hb();
Delay(50);
waitkey();
show_cross();
Delay(50);
waitkey();
picture_display(pic1);
Delay(50);
waitkey();
smhj();
Delay(50);
waitkey();
//display_word();
// display_icon();
serial_init();
while(1)
{
touch_panel_test(); //测试触摸屏,根据触摸点位置显示图像
Delay(10);
while(PIN);
// display_icon();
}
}
/*===========================================================================
** 函数名称: cpu_initial()
** 功能描述: GPIO口PIN脚设置
============================================================================*/
void cpu_initial(void)
{
P0=0xff;
P1=0xff;
P2=0xff;
P3=0xff;
}
/*===========================================================================
** 函数名称: LCD_write_d()
** 功能描述: 输出数据,并行,软件模拟8080,
** 功能描述: 8bit,通过P0.10-P0.17传送数据
** 入口参数:dat: 输出数据
** 出口参数: 无
============================================================================*/
#ifdef interface_8_bit
void LCD_write_d(uint dat)
{
CS_MAIN=0;
DC=1;
READ=1;
WRITE=0;
PORTL=(dat>>8);
WRITE=0;
WRITE=1;
WRITE=0;
PORTL=(dat&0x00ff);
WRITE=0;
WRITE=1;
CS_MAIN=1;
}
/*===========================================================================
** 函数名称: LCD_write_c()
** 功能描述: 输出指令,并行,软件模拟8080
** 功能描述: 8 bit,通过P0.10-P0.17 传送数据
** 入口参数:com: 指令码
** 出口参数:无
============================================================================*/
void LCD_write_c(uint com)
{
CS_MAIN=0;
DC=0;
READ=1;
WRITE=0;
PORTL=(com>>8);
WRITE=0;
WRITE=1;
WRITE=0;
PORTL=(com&0x00ff);
WRITE=0;
WRITE=1;
CS_MAIN=1;
}
#endif
/*===========================================================================
** 函数名称: LCD_write_d()
** 功能描述: 输出数据,并行,软件模拟8080,
** 功能描述: 16bit,通过P0-P2传送数据
** 入口参数:dat: 输出数据
** 出口参数: 无
============================================================================*/
#ifdef interface_16_bit
void LCD_write_d(uint dat)
{
// CS_MAIN=0;
DC=1;
// READ=1;
// WRITE=0;
PORTH=(uchar)(dat>>8);
PORTL=(uchar)(dat&0x00ff);
WRITE=0;
WRITE=1;
// CS_MAIN=1;
}
/*===========================================================================
** 函数名称: LCD_write_c()
** 功能描述: 输出指令,并行,软件模拟8080
** 功能描述: 16 bit,通过P0 ,p2 传送数据
** 入口参数:com: 指令码
** 出口参数:无
============================================================================*/
void LCD_write_c(uint com)
{
CS_MAIN=0;
DC=0;
// READ=1;
// WRITE=0;
PORTH=(uchar)(com>>8);
PORTL=(uchar)(com&0x00ff);
WRITE=0;
WRITE=1;
// CS_MAIN=1;
}
#endif
/*===========================================================================
** 函数名称: ili9320_init_lcd
** 功能描述: 输出显示数据,并行,软件模拟8080
** 功能描述: 对LCD进行初始化
** 功能描述: 显示图片数据8bit
============================================================================*/
void ili9320_init_lcd(void)
{
Delay(50);
LCD_write_c(0x0000);
LCD_write_d(0x0001);
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(0x0202);
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);
//power on sequence
LCD_write_c(0x0010);
LCD_write_d(0x0000);
LCD_write_c(0x0011);
LCD_write_d(0x0007);
LCD_write_c(0x0012);
LCD_write_d(0x0000);
LCD_write_c(0x0013);
LCD_write_d(0x0000);
Delay(200);
LCD_write_c(0x0010);
LCD_write_d(0x17b0);
LCD_write_c(0x0011);
LCD_write_d(0x0007);
Delay(50);
LCD_write_c(0x0012);
LCD_write_d(0x013a);
Delay(50);
LCD_write_c(0x0013);
LCD_write_d(0x1a00);
LCD_write_c(0x0029);
LCD_write_d(0x000c);
Delay(50);
LCD_write_c(0x0020);
LCD_write_d(0x0000);
LCD_write_c(0x0021);
LCD_write_d(0x0000);
//adjust the gamma curve
LCD_write_c(0x0030);
LCD_write_d(0x0000);
LCD_write_c(0x0031);
LCD_write_d(0x0505);
LCD_write_c(0x0032);
LCD_write_d(0x0004);
LCD_write_c(0x0035);
LCD_write_d(0x0006);
LCD_write_c(0x0036);
LCD_write_d(0x0707);
LCD_write_c(0x0037);
LCD_write_d(0x0105);
LCD_write_c(0x0038);
LCD_write_d(0x0002);
LCD_write_c(0x0039);
LCD_write_d(0x0707);
LCD_write_c(0x003c);
LCD_write_d(0x0704);
LCD_write_c(0x003d);
LCD_write_d(0x0807);
//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(0x2700);
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(0x0000);
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(0x0173);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -