📄 ili9320_430_p1.c
字号:
#include <msp430x14x.h>
#include "include.h"
#define Uchar unsigned char
#define Uint unsigned int
#define Ulong unsigned long
#define uchar unsigned char
#define uint unsigned int
#include "asc_8_16.h"
#include "pp.h"
uchar addr_no = 8 ; //
extern char paTable[];
extern char paTableLen;
char txBuffer[8];
char rxBuffer[8];
unsigned int i;
unsigned int adc;
char time_con = 0 ;
// CS0 - P37
// CD - P36
// RD - P34
// WR - P35
// RST - P27
#define LCD_OUT P3OUT
#define LCD_DIR P3DIR
#define LCD_CS BIT0 //选择起点的位置 可以将画面颠倒
#define LCD_DC BIT1 //命令 、 数据 选择
#define LCD_WR BIT2 //写
#define LCD_RST BIT3
#define LCD_CS_0 LCD_OUT &= ~LCD_CS
#define LCD_CS_1 LCD_OUT |= LCD_CS
#define LCD_DC_0 LCD_OUT &= ~LCD_DC
#define LCD_DC_1 LCD_OUT |= LCD_DC
#define LCD_WR_0 LCD_OUT &= ~LCD_WR
#define LCD_WR_1 LCD_OUT |= LCD_WR
#define LCD_RD_0 LCD_OUT &= ~LCD_RD
#define LCD_RD_1 LCD_OUT |= LCD_RD
#define LCD_RST_0 LCD_OUT &= ~LCD_RST
#define LCD_RST_1 LCD_OUT |= LCD_RST
//=======================================
//================================
void ILI9320_CMO22_Initial(void);
void LCD_CtrlWrite_ILI9320(uint rr,uint data_);
void Initial_HX8312(void);
void WriteRegister(unsigned int RegisterValue);
void WriteCOM(char,char);
void WriteDAT(char,char);
void addr(void);
void Pattern0(void);
void Pattern77(uint x,uint y);
void Pattern1(void);
void Pattern2(void);
void Pattern3(void);
void Pattern4(void);
void Pattern5(void);
void Pattern6(void);
void Pattern7(void);
void Pattern8(void);
void Pattern9(void);
void Pattern10(void);
void showrom1PIC();
void showrom2PIC();
void selectDISROM(void);
void dis_asc_8_16(uchar startx,uchar starty,uchar *p,uint color,uint color_b);
void dis_guangdai(uchar startx,uchar starty,uchar lengx,uchar lengy,uint color) ; //Display All Green
void delayms(int);
void delay(long tt)
{
while(tt>0)
{tt--;}
}
void LCD_CtrlWrite_ILI9320(uint rr,uint data_)
{
LCD_DC_0; //A0=0;
LCD_CS_0; //CS=0;
P5OUT = rr >> 8 ;//P1=DH;
P4OUT = 0xff & rr ; //P1=DL;
LCD_WR_0; //WRB=0;
LCD_WR_1; //WRB=1;
// LCD_CS_1; //CS=1;
LCD_DC_1; //A0=1;
// LCD_CS_0; //CS=0;
P5OUT = data_ >> 8 ; //P1=DH;
P4OUT = 0xff & data_; //P1=DL;
LCD_WR_0; //WRB=0;
LCD_WR_1; //WRB=1;
LCD_CS_1; //CS=1;
}
void WriteRegister(unsigned int RegisterValue)
{
LCD_DC_0; //A0=0;
LCD_CS_0; //CS=0;
P5OUT = RegisterValue>>8;
P4OUT = RegisterValue ;
LCD_WR_0 ; //WRB=0;
LCD_WR_1; //WRB=1;
LCD_CS_1; //CS=1;
}
void WriteCOM(char DH,char DL)
{
LCD_DC_0; //A0=0;
LCD_CS_0; //CS=0;
P5OUT = DH ;//P1=DH;
P4OUT = DL ;
LCD_WR_0; //WRB=0;
LCD_WR_1; //WRB=1;
LCD_CS_1; //CS=1;
}
void WriteDAT(char DH,char DL)
{
// LCD_DC_1; //A0=1;
// LCD_CS_0; //CS=0;
P5OUT = DH ; //P1=DH;
P4OUT = DL; //P1=DL;
LCD_WR_0; //WRB=0;
LCD_WR_1; //WRB=1;
// LCD_CS_1; //CS=1;
}
void addr(void)
{
LCD_CtrlWrite_ILI9320(0x0050, 0x0000);//Horizontal RAM Address Position start
LCD_CtrlWrite_ILI9320(0x0051, 0x00ef);//Horizontal RAM Address Position end
LCD_CtrlWrite_ILI9320(0x0052, 0x0000);//Vertical RAM Address Position start
LCD_CtrlWrite_ILI9320(0x0053, 0x013f);//Vertical RAM Address Position end
LCD_CtrlWrite_ILI9320(0x0020, 0);//Vertical RAM Address Position end
LCD_CtrlWrite_ILI9320(0x0021, 0);//Vertical RAM Address Position end
WriteCOM(0x00,0x22);
LCD_CS_0 ;
LCD_DC_1 ;
}
void dis_area(uint x1,uint x2,uint y1,uint y2)
{
LCD_CtrlWrite_ILI9320(0x0050, x1);//Horizontal RAM Address Position start
LCD_CtrlWrite_ILI9320(0x0051, x2);//Horizontal RAM Address Position end
LCD_CtrlWrite_ILI9320(0x0052, y1);//Vertical RAM Address Position start
LCD_CtrlWrite_ILI9320(0x0053, y2);//Vertical RAM Address Position end
LCD_CtrlWrite_ILI9320(0x0020, x1);//Vertical RAM Address Position end
LCD_CtrlWrite_ILI9320(0x0021, y1);//Vertical RAM Address Position end
WriteCOM(0x00,0x22);
LCD_CS_0 ;
LCD_DC_1 ;
}
void ILI9320_CMO22_Initial(void)
{ // VCI=2.8V
//************* Start Initial Sequence ****************
LCD_CtrlWrite_ILI9320(0x0000, 0x0001); // Start internal OSC.
delayms(200);
LCD_CtrlWrite_ILI9320(0x0001, 0x0100); // set SS and SM bit
delayms(200);
LCD_CtrlWrite_ILI9320(0x0002, 0x0700); // set 1 line inversion
LCD_CtrlWrite_ILI9320(0x0003, 0x1030); // set GRAM write direction and BGR=1.
LCD_CtrlWrite_ILI9320(0x0004, 0x0000); // Resize register
LCD_CtrlWrite_ILI9320(0x0008, 0x0202); // set the back porch and front porch
LCD_CtrlWrite_ILI9320(0x0009, 0x0000); // set non-display area refresh cycle ISC[3:0]
LCD_CtrlWrite_ILI9320(0x000A, 0x0000); // FMARK function
LCD_CtrlWrite_ILI9320(0x000C, 0x0000); // RGB interface setting
LCD_CtrlWrite_ILI9320(0x000D, 0x0000); // Frame marker Position
LCD_CtrlWrite_ILI9320(0x000F, 0x0000); // RGB interface polarity
//*************Power On sequence ****************
LCD_CtrlWrite_ILI9320(0x0010, 0x0000); // SAP, BT[3:0], AP, DSTB, SLP, STB
LCD_CtrlWrite_ILI9320(0x0011, 0x0007); // DC1[2:0], DC0[2:0], VC[2:0]
LCD_CtrlWrite_ILI9320(0x0012, 0x0000); // VREG1OUT voltage
LCD_CtrlWrite_ILI9320(0x0013, 0x0000); // VDV[4:0] for VCOM amplitude
delayms(200); // Dis-charge capacitor power voltage
LCD_CtrlWrite_ILI9320(0x0010, 0x17b0); // SAP, BT[3:0], AP, DSTB, SLP, STB 17b0
LCD_CtrlWrite_ILI9320(0x0011, 0x0007); // DC1[2:0], DC0[2:0], VC[2:0]
delayms(50); // Delay 50ms
LCD_CtrlWrite_ILI9320(0x0012, 0x011a); // VREG1OUT voltage
delayms(50); // Delay 50ms
LCD_CtrlWrite_ILI9320(0x0013, 0x1a00); // VDV[4:0] for VCOM amplitude
LCD_CtrlWrite_ILI9320(0x0029, 0x000c); // VCM[4:0] for VCOMH
delayms(50);
LCD_CtrlWrite_ILI9320(0x0020, 0x0000); // GRAM horizontal Address
LCD_CtrlWrite_ILI9320(0x0021, 0x0000); // GRAM Vertical Address
// ----------- Adjust the Gamma Curve ------------//
LCD_CtrlWrite_ILI9320(0x0030, 0x0000);
LCD_CtrlWrite_ILI9320(0x0031, 0x0505);
LCD_CtrlWrite_ILI9320(0x0032, 0x0004);
LCD_CtrlWrite_ILI9320(0x0035, 0x0006);
LCD_CtrlWrite_ILI9320(0x0036, 0x0707);
LCD_CtrlWrite_ILI9320(0x0037, 0x0105);
LCD_CtrlWrite_ILI9320(0x0038, 0x0002);
LCD_CtrlWrite_ILI9320(0x0039, 0x0707);
LCD_CtrlWrite_ILI9320(0x003C, 0x0704);
LCD_CtrlWrite_ILI9320(0x003D, 0x0807);
//------------------ Set GRAM area -------------------//
LCD_CtrlWrite_ILI9320(0x0050, 0x0000); // Horizontal GRAM Start Address
LCD_CtrlWrite_ILI9320(0x0051, 0x00EF); // Horizontal GRAM End Address
LCD_CtrlWrite_ILI9320(0x0052, 0x0000); // Vertical GRAM Start Address
LCD_CtrlWrite_ILI9320(0x0053, 0x013F); // Vertical GRAM Start Address
LCD_CtrlWrite_ILI9320(0x0060, 0x2700); // Gate Scan Line
LCD_CtrlWrite_ILI9320(0x0061, 0x0001); // NDL,VLE, REV
// LCD_CtrlWrite_ILI9320(0x006A, 0x0000); // set scrolling line
//----------------- Partial Display Control ----------//
LCD_CtrlWrite_ILI9320(0x0080, 0x0000);
LCD_CtrlWrite_ILI9320(0x0081, 0x0000);
LCD_CtrlWrite_ILI9320(0x0082, 0x0000);
LCD_CtrlWrite_ILI9320(0x0083, 0x0000);
LCD_CtrlWrite_ILI9320(0x0084, 0x0000);
LCD_CtrlWrite_ILI9320(0x0085, 0x0000);
//----------------- Panel Control --------------------//
LCD_CtrlWrite_ILI9320(0x0090, 0x0010);
LCD_CtrlWrite_ILI9320(0x0092, 0x0000);
LCD_CtrlWrite_ILI9320(0x0093, 0x0003);
LCD_CtrlWrite_ILI9320(0x0095, 0x0110);
LCD_CtrlWrite_ILI9320(0x0097, 0x0000);
LCD_CtrlWrite_ILI9320(0x0098, 0x0000);
LCD_CtrlWrite_ILI9320(0x0007, 0x0173); // 262K color and display ON 0x173
}
void LCD_ExitSleep_ILI9320(void)
{
//*************Power On sequence ****************
LCD_CtrlWrite_ILI9320(0x0010, 0x0000); // SAP, BT[3:0], AP, DSTB, SLP, STB
LCD_CtrlWrite_ILI9320(0x0011, 0x0000); // DC1[2:0], DC0[2:0], VC[2:0]
LCD_CtrlWrite_ILI9320(0x0012, 0x0000); // VREG1OUT voltage
LCD_CtrlWrite_ILI9320(0x0013, 0x0000); // VDV[4:0] for VCOM amplitude
delayms(200); // Dis-charge capacitor power voltage
LCD_CtrlWrite_ILI9320(0x0010, 0x1590); // SAP, BT[3:0], AP, DSTB, SLP, STB
LCD_CtrlWrite_ILI9320(0x0011, 0x0007); // DC1[2:0], DC0[2:0], VC[2:0]
delayms(50); // Delay 50ms
LCD_CtrlWrite_ILI9320(0x0012, 0x013A); // VREG1OUT voltage
delayms(50); // Delay 50ms
LCD_CtrlWrite_ILI9320(0x0013, 0x1500); // VDV[4:0] for VCOM amplitude
LCD_CtrlWrite_ILI9320(0x0029, 0x0000); // VCM[4:0] for VCOMH
delayms(50);
LCD_CtrlWrite_ILI9320(0x0007, 0x0173); // 262K color and display ON
}
void LCD_EnterSleep_ILI9320(void)
{
LCD_CtrlWrite_ILI9320(0x0007, 0x0000); // display OFF
//*************Power OFF sequence ****************
LCD_CtrlWrite_ILI9320(0x0010, 0x0000); // SAP, BT[3:0], APE, AP, DSTB, SLP
LCD_CtrlWrite_ILI9320(0x0011, 0x0000); // DC1[2:0], DC0[2:0], VC[2:0]
LCD_CtrlWrite_ILI9320(0x0012, 0x0000); // VREG1OUT voltage
LCD_CtrlWrite_ILI9320(0x0013, 0x0000); // VDV[4:0] for VCOM amplitude
delayms(200); // Dis-charge capacitor power voltage
LCD_CtrlWrite_ILI9320(0x0010, 0x0002); // SAP, BT[3:0], APE, AP, DSTB, SLP
}
//***********************************************************
void Pattern0() // Display All Red
{
unsigned int i,j;
// addr();
dis_area(0,239,0,319);
for(i=0;i<160;i++)
{
_NOP();
for (j=0;j<240;j++)
{
WriteDAT(0xf8,0x00);
}
}
}
void Pattern1() //Display All Green
{
unsigned int i,j;
dis_area(0,119,100,299);
for(i=0;i<200;i++)
{
for (j=0;j<120;j++)
{
WriteDAT(0x07,0xe0);
}
}
}
void Pattern2() //Display All Blude
{
unsigned int i,j;
addr();
for(i=0;i<320;i++)
{
for (j=0;j<240;j++)
{
WriteDAT(0x00,0x1f);
}
}
}
void Pattern4() //vertical
{
unsigned int i,j;
dis_area(100,219,50,299);
for(i=0;i<250;i++)
{
for (j=0;j<120;j++)
{
WriteDAT(0xff,0xff);
WriteDAT(0x00,0x00);
}
}
}
void Pattern5() //horizontal
{
unsigned int i,j;
addr();
for(i=0;i<160;i++)
{
for (j=0;j<240;j++)
WriteDAT(0xff,0xff);
for (j=0;j<240;j++)
WriteDAT(0x00,0x00);
}
}
void Pattern6() //snow
{
unsigned int i,j;
addr();
for(i=0;i<160;i++)
{
for (j=0;j<120;j++)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -