📄 as4_drive.c
字号:
#include <iom32v.h>
#include <macros.h>
#include "hzk.h"
#define CS_0 PORTC &=~BIT(PC0)
#define CS_1 PORTC |=BIT(PC0)
#define RS_0 PORTC &=~BIT(PC1)
#define RS_1 PORTC |=BIT(PC1)
#define WR_0 PORTC &=~BIT(PC2)
#define WR_1 PORTC |=BIT(PC2)
#define RESET_0 PORTC &=~BIT(PC3)
#define RESET_1 PORTC |=BIT(PC3)
#define EEPROM_0 PORTA &=~BIT(PA3)
#define EEPROM_1 PORTA |=BIT(PA3)
#define CLR_0 PORTC &=~BIT(PC4)
#define CLR_1 PORTC |=BIT(PC4)
#define CLK_0 PORTC &=~BIT(PC5)
#define CLK_1 PORTC |=BIT(PC5)
void timer1_init(void);
void LCD_Standby_LG4532();
void Exit_Standby_LG4532(void);
void MAINLCD_CMD(unsigned int c);
void MAINLCD_DATA(unsigned int d);
void ILI9320_AUO24_Initial(void);
void R61505U_LG24_Initial(void);
void LCD_ExitSleep_ILI9320(void);
void LCD_EnterSleep_ILI9320(void);
void LGDP4532_LG24_Initial(void);
void LCD_EnterSleep_LG4532(void);
void LCD_ExitSleep_LG4532(void);
void LCD_CtrlWrite_LGDP4532(unsigned int cmd,unsigned int dat);
void delay_nms(unsigned int tt);
void delay_5us(unsigned int tt);
unsigned int read_TP_X(void);
unsigned int read_TP_Y(void);
void TP_5(void);
void pause(void);
void showRed(void);
void showGreen(void);
void showBlue(void);
void showWhite(void);
void showBlack(void);
void showBlack2(void);
void showBlackBar(void);
void showCyan (void);
void showYellow (void);
void showMagent(void);
void showColorBar(void);
void showPIC1(void);
void showPIC2(void);
void showPIC3(void);
void areaset(unsigned int x,unsigned int y);
void showGray32x(void);
void showGray32y(void);
void showTP12(void);
void wait_TP(void);
void hand_write(void);
unsigned char read_TP(void);
void show_hz16(unsigned char x,unsigned int y,unsigned char mun);
void show_hz32(unsigned char x,unsigned int y,unsigned char mun);
void show_mun32(unsigned char x,unsigned int y,unsigned char mun);
int x1,x2,x3,y1,y2,y3,avex=0,avey=0,keyx1=0,keyy1=0,keyx3=0,keyy3=0;
unsigned int keyx2=0,keyy2=0,keyx4=0,keyy4=0,keyx5=0,keyy5=0;
/**********************************************/
void main(void)
{
// unsigned char key;
DDRA=0X08;
DDRB =0XFF;
DDRC =0XFF;
DDRD =0XFF;
PORTA=0X08;
PORTB=0XFF;
PORTC=0XFF;
PORTD=0XFF;
RESET_1 ;
delay_nms(1); // Delay 1ms
RESET_0;
delay_nms(10); // Delay 10ms // This delay time is necessary
RESET_1 ;
delay_nms(50); // Delay 50 ms
LGDP4532_LG24_Initial();
//timer1_init();
while(1)
{
showWhite();
delay_nms(2500);
pause();
showBlack();
delay_nms(2500);
pause();
showBlack2();
delay_nms(1000);
pause();
showRed();
delay_nms(2500);
pause();
showGreen();
delay_nms(2500);
pause();
showBlue();
delay_nms(2500);
pause();
showColorBar();
delay_nms(1000);
pause();
showGray32y();
delay_nms(1000);
pause();
showBlackBar();
delay_nms(1000);
pause();
showPIC1();
delay_nms(1000);
pause();
}
}
/*****************INITIAL SUB-PROGRAM************************/
//AUO 2.4" initial code
void LGDP4532_LG24_Initial(void)
{
//************* Start Initial Sequence **********//
//LCD_CtrlWrite_LGDP4532(0x00E5, 0x8000); // Set the internal vcore voltage
LCD_CtrlWrite_LGDP4532(0x0007, 0x0000); //
LCD_CtrlWrite_LGDP4532(0x0012, 0x0000); //
LCD_CtrlWrite_LGDP4532(0x0013, 0x0000); // VCOMG=0
delay_nms(10);
LCD_CtrlWrite_LGDP4532(0x0010, 0x0600); // POWER contron1
LCD_CtrlWrite_LGDP4532(0x0011, 0x0110); // POWER contron2
LCD_CtrlWrite_LGDP4532(0x0012, 0x0005); // POWER contron3
LCD_CtrlWrite_LGDP4532(0x0013, 0x1040); // POWER contron4
LCD_CtrlWrite_LGDP4532(0x0015, 0x0030); //regulater control
delay_nms(50);
LCD_CtrlWrite_LGDP4532(0x0010, 0x1628); // POWER contron1
LCD_CtrlWrite_LGDP4532(0x0012, 0x0013); // POWER contron3
delay_nms(50);
LCD_CtrlWrite_LGDP4532(0x0010, 0x2620); // POWER contron1
LCD_CtrlWrite_LGDP4532(0x0013, 0x3156); // POWER contron4
delay_nms(70);
LCD_CtrlWrite_LGDP4532(0x0001, 0x0100); //driver output control
LCD_CtrlWrite_LGDP4532(0x0002, 0x0300); // lcd drive ac control
LCD_CtrlWrite_LGDP4532(0x0003, 0X1030); // entry mode
LCD_CtrlWrite_LGDP4532(0x0008, 0x0202); // display control2
LCD_CtrlWrite_LGDP4532(0x000a, 0x0008); //display control4
LCD_CtrlWrite_LGDP4532(0x0041, 0x0002); // eprom
LCD_CtrlWrite_LGDP4532(0x0060, 0x2700); // driver output control
LCD_CtrlWrite_LGDP4532(0x0061, 0x0001);
LCD_CtrlWrite_LGDP4532(0x0090, 0x00E0);// 0X0178=92//0x00C8=108
LCD_CtrlWrite_LGDP4532(0x0092, 0x0105);
LCD_CtrlWrite_LGDP4532(0x0093, 0x0101); // GRAM horizontal Address
LCD_CtrlWrite_LGDP4532(0x00a3, 0x0010); // GRAM Vertical Address
// ----------- Adjust the Gamma Curve ----------//
LCD_CtrlWrite_LGDP4532(0x0030, 0x0201);
LCD_CtrlWrite_LGDP4532(0x0031, 0x0007);
LCD_CtrlWrite_LGDP4532(0x0032, 0x0101);
LCD_CtrlWrite_LGDP4532(0x0033, 0x0000);
LCD_CtrlWrite_LGDP4532(0x0034, 0x0004);
LCD_CtrlWrite_LGDP4532(0x0035, 0x0002);
LCD_CtrlWrite_LGDP4532(0x0036, 0x0604);
LCD_CtrlWrite_LGDP4532(0x0037, 0x0000);
LCD_CtrlWrite_LGDP4532(0x0038, 0x0302);
LCD_CtrlWrite_LGDP4532(0x0039, 0x0203);
LCD_CtrlWrite_LGDP4532(0x003A, 0x0200);
LCD_CtrlWrite_LGDP4532(0x003B, 0x0003);
LCD_CtrlWrite_LGDP4532(0x003C, 0x0300);
LCD_CtrlWrite_LGDP4532(0x003D, 0x0002);
LCD_CtrlWrite_LGDP4532(0x003E, 0x0001);
LCD_CtrlWrite_LGDP4532(0x003F, 0x0100);
//-------------- Panel Control -------------------//
LCD_CtrlWrite_LGDP4532(0x0007, 0x0001);
LCD_CtrlWrite_LGDP4532(0x0007, 0x0021);
LCD_CtrlWrite_LGDP4532(0x0007, 0x0023);
LCD_CtrlWrite_LGDP4532(0x0007, 0x0173); // 262K color and display ON
}
void LCD_ExitSleep_LG4532(void)
{
//*************Power On sequence ******************//
LCD_CtrlWrite_LGDP4532(0x0010, 0x0000); // SAP, BT[3:0], AP, DSTB, SLP
LCD_CtrlWrite_LGDP4532(0x0011, 0x0000); // DC1[2:0], DC0[2:0], VC[2:0]
LCD_CtrlWrite_LGDP4532(0x0012, 0x0000); // VREG1OUT voltage
LCD_CtrlWrite_LGDP4532(0x0013, 0x0000); // VDV[4:0] for VCOM amplitude
delay_nms(200); // Dis-charge capacitor power voltage
LCD_CtrlWrite_LGDP4532(0x0010, 0x0000); // SAP, BT[3:0], AP, DSTB, SLP, STB
LCD_CtrlWrite_LGDP4532(0x0011, 0x0000); // DC1[2:0], DC0[2:0], VC[2:0]
LCD_CtrlWrite_LGDP4532(0x0012, 0x0000); // VREG1OUT voltage
LCD_CtrlWrite_LGDP4532(0x0013, 0x0000); // VDV[4:0] for VCOM amplitude
delay_nms(200); // Dis-charge capacitor power voltage
LCD_CtrlWrite_LGDP4532(0x0010, 0x3640); // SAP, BT[3:0], AP, DSTB, SLP, STB
LCD_CtrlWrite_LGDP4532(0x0011, 0x0130); // DC1[2:0], DC0[2:0], VC[2:0]
delay_nms(50); // Delay 50ms
LCD_CtrlWrite_LGDP4532(0x0012, 0x0019); // VREG1OUT voltage
delay_nms(50); // Delay 50ms
LCD_CtrlWrite_LGDP4532(0x0013, 0x3964); // VDV[4:0] for VCOM amplitude VCOMH
delay_nms(50);
LCD_CtrlWrite_LGDP4532(0x0007, 0x0173); // 262K color and display ON
}
void LCD_EnterSleep_LG4532(void)
{
LCD_CtrlWrite_LGDP4532(0x0007, 0x0000); // display OFF
//************* Power OFF sequence **************//
LCD_CtrlWrite_LGDP4532(0x0010, 0x0000); // SAP, BT[3:0], AP, DSTB, SLP, STB
LCD_CtrlWrite_LGDP4532(0x0011, 0x0000); // DC1[2:0], DC0[2:0], VC[2:0]
LCD_CtrlWrite_LGDP4532(0x0012, 0x0000); // VREG1OUT voltage
LCD_CtrlWrite_LGDP4532(0x0013, 0x0000); // VDV[4:0] for VCOM amplitude VCOMH
delay_nms(200); // Dis-charge capacitor power voltage
LCD_CtrlWrite_LGDP4532(0x0010, 0x0002); // SAP, BT[3:0], APE, AP, DSTB, SLP
}
void LCD_Standby_LG4532(void)
{
LCD_CtrlWrite_LGDP4532(0x0007, 0x0000); // display OFF
//************* Power OFF sequence **************//
LCD_CtrlWrite_LGDP4532(0x0010, 0x0000); // SAP, BT[3:0], AP, DSTB, SLP, STB
LCD_CtrlWrite_LGDP4532(0x0011, 0x0000); // DC1[2:0], DC0[2:0], VC[2:0]
LCD_CtrlWrite_LGDP4532(0x0012, 0x0000); // VREG1OUT voltage
LCD_CtrlWrite_LGDP4532(0x0013, 0x0000); // VDV[4:0] for VCOM amplitude VCOMH
delay_nms(200); // Dis-charge capacitor power voltage
LCD_CtrlWrite_LGDP4532(0x0010, 0x0001); // SAP, BT[3:0], APE, AP, DSTB, SLP,STB
}
void Exit_Standby_LG4532(void)
{
//*************Power On sequence ******************//
LCD_CtrlWrite_LGDP4532(0x0000, 0x0001);
LCD_CtrlWrite_LGDP4532(0x0010, 0x0000); // SAP, BT[3:0], AP, DSTB, SLP, STB
LCD_CtrlWrite_LGDP4532(0x0011, 0x0000); // DC1[2:0], DC0[2:0], VC[2:0]
LCD_CtrlWrite_LGDP4532(0x0012, 0x0000); // VREG1OUT voltage
LCD_CtrlWrite_LGDP4532(0x0013, 0x0000); // VDV[4:0] for VCOM amplitude
delay_nms(200); // Dis-charge capacitor power voltage
LCD_CtrlWrite_LGDP4532(0x0010, 0x2620); // SAP, BT[3:0], AP, DSTB, SLP, STB
LCD_CtrlWrite_LGDP4532(0x0011, 0x0110); // DC1[2:0], DC0[2:0], VC[2:0]
delay_nms(50); // Delay 50ms
LCD_CtrlWrite_LGDP4532(0x0012, 0x0013); // VREG1OUT voltage
delay_nms(50); // Delay 50ms
LCD_CtrlWrite_LGDP4532(0x0013, 0x3156); // VDV[4:0] for VCOM amplitude VCOMH
delay_nms(50);
LCD_CtrlWrite_LGDP4532(0x0007, 0x0173); // 262K color and display ON
}
void areaset(unsigned int x,unsigned int y)
{
MAINLCD_CMD(0x0020);
MAINLCD_DATA(x);
MAINLCD_CMD(0x0021);//
MAINLCD_DATA(y);//
MAINLCD_CMD(0x0022);//
}
//========================================================================
//main panel CPT TFT
//show red
void showRed(void)
{
unsigned int i;
areaset(0,0);
for(i=0;i<38400;i++)
{
MAINLCD_DATA(0xf800);
MAINLCD_DATA(0xf800);
//MAINLCD_DATA(0xfc00);
//MAINLCD_DATA(0x0000);
}
}
//show green
void showGreen(void)
{
unsigned int i;
areaset(0,0);
for(i=0;i<38400;i++)
{
MAINLCD_DATA(0x07e0);
MAINLCD_DATA(0x07e0);
//MAINLCD_DATA(0x03f0);
//MAINLCD_DATA(0x0000);
}
}
//show blue
void showBlue(void)
{
unsigned int i;
areaset(0,0);
for(i=0;i<38400;i++)
{
MAINLCD_DATA(0x001f);
MAINLCD_DATA(0x001f);
//MAINLCD_DATA(0x000f);
//MAINLCD_DATA(0xc000);
}
}
//show white
void showWhite(void)
{
unsigned int i;
areaset(0,0);
for(i=0;i<38400;i++)
{
MAINLCD_DATA(0xffff);
MAINLCD_DATA(0xffff);
//MAINLCD_DATA(0xffff);
//MAINLCD_DATA(0xc000);
}
}
//show black
void showBlack(void)
{
unsigned int i;
areaset(0,0);
for(i=0;i<38400;i++)
{
MAINLCD_DATA(0x0000);
MAINLCD_DATA(0x0000);
//MAINLCD_DATA(0x0000);
//MAINLCD_DATA(0x0000);
}
}
/*****************************************/
void showBlack2(void)
{
unsigned char c;
unsigned int a;
areaset(0,0);
for (a=0;a<100;a++)
{
for(c=0;c<240;c++){MAINLCD_DATA(0xffff);}//显示白色
}
for (a=0;a<120;a++)
{
for(c=0;c<70;c++) {MAINLCD_DATA(0xffff);}//显示白色
for(c=0;c<100;c++){MAINLCD_DATA(0x0000);}//中间显示黑色金
for(c=0;c<70;c++) {MAINLCD_DATA(0xffff);}//显示白色
}
for (a=0;a<100;a++)
{
for(c=0;c<240;c++){MAINLCD_DATA(0xffff);}//MAINLCD_DATA(0xc000);}
}
}
/*****************************************/
void showBlackBar(void)
{
unsigned char c;
unsigned int a;
areaset(0,0);
for (a=0;a<160;a++)
{
for(c=0;c<240;c++){MAINLCD_DATA(0xffff);}//MAINLCD_DATA(0xc000);}
for(c=0;c<240;c++){MAINLCD_DATA(0x0000);}//MAINLCD_DATA(0x0000);}
}
}
/*****************************************/
void showCyan (void)
{
unsigned int i;
areaset(0,0);
for(i=0;i<38400;i++)
{
MAINLCD_DATA(0x07ff);
MAINLCD_DATA(0x07ff);
//MAINLCD_DATA(0x03ff);
//MAINLCD_DATA(0xc000);
}
}
/*****************************************/
void showMagent(void)
{
unsigned int i;
areaset(0,0);
for(i=0;i<38400;i++)
{
MAINLCD_DATA(0xf81f);
MAINLCD_DATA(0xf81f);
//MAINLCD_DATA(0xfc0f);
//MAINLCD_DATA(0xc000);
}
}
/*****************************************/
void showYellow (void)
{
unsigned int i;
areaset(0,0);
for(i=0;i<38400;i++)
{
MAINLCD_DATA(0xffe0);
MAINLCD_DATA(0xffe0);
//MAINLCD_DATA(0xfff0);
//MAINLCD_DATA(0x0000);
}
}
/*****************************************/
void showPIC1(void)
{
unsigned int i;
areaset(0,0);
DDRB=0x00;
PORTB=0x00;
CLK_1;
CLR_1;
CLR_0;
EEPROM_0 ;RS_1;WR_0;
for(i=0;i<38400;i++)
{
PORTD=PINB;
CLK_0;CLK_0;CLK_0;
CLK_1;CLK_1;CLK_1;
CS_0;
CS_1;
CLK_0;CLK_0;CLK_0;
CLK_1;CLK_1;CLK_1;
PORTD=PINB;
CLK_0;CLK_0;CLK_0;
CLK_1;CLK_1;CLK_1;
CS_0;
CS_1;
CLK_0;CLK_0;CLK_0;
CLK_1;CLK_1;CLK_1;
}
EEPROM_1 ;
DDRB=0xff;
}
/*****************************************/
void showPIC2(void)
{
unsigned int i;
areaset(0,0);
DDRB=0x00;
PORTB=0x00;
EEPROM_0 ;RS_1;WR_0;
for(i=0;i<38400;i++)
{
PORTD=PINB;
CLK_0;CLK_0;CLK_0;
CLK_1;CLK_1;CLK_1;
CS_0;
CS_1;
CLK_0;CLK_0;CLK_0;
CLK_1;CLK_1;CLK_1;
PORTD=PINB;
CLK_0;CLK_0;CLK_0;
CLK_1;CLK_1;CLK_1;
CS_0;
CS_1;
CLK_0;CLK_0;CLK_0;
CLK_1;CLK_1;CLK_1;
}
EEPROM_1 ;
DDRB=0xff;
}
/*****************************************/
void showPIC3(void)
{
unsigned int i;
areaset(0,0);
DDRB=0x00;
PORTB=0x00;
EEPROM_0 ;RS_1;WR_0;
for(i=0;i<38400;i++)
{
PORTD=PINB;
CLK_0;CLK_0;CLK_0;
CLK_1;CLK_1;CLK_1;
CS_0;
CS_1;
CLK_0;CLK_0;CLK_0;
CLK_1;CLK_1;CLK_1;
PORTD=PINB;
CLK_0;CLK_0;CLK_0;
CLK_1;CLK_1;CLK_1;
CS_0;
CS_1;
CLK_0;CLK_0;CLK_0;
CLK_1;CLK_1;CLK_1;
}
EEPROM_1 ;
DDRB=0xff;
}
/*****************************************/
void showColorBar(void)
{
unsigned char c;
unsigned int a;
areaset(0,0);
for (a=0;a<320;a++)
{
for(c=0;c<34;c++){MAINLCD_DATA(0xffff);}//MAINLCD_DATA(0xc000);}
for(c=0;c<34;c++){MAINLCD_DATA(0xf800);}//MAINLCD_DATA(0x0000);}
for(c=0;c<34;c++){MAINLCD_DATA(0x07e0);}//MAINLCD_DATA(0x0000);}
for(c=0;c<34;c++){MAINLCD_DATA(0x001f);}//MAINLCD_DATA(0xc000);}
for(c=0;c<34;c++){MAINLCD_DATA(0x07ff);}//MAINLCD_DATA(0xc000);}
for(c=0;c<34;c++){MAINLCD_DATA(0xf81f);}//MAINLCD_DATA(0xc000);}
for(c=0;c<34;c++){MAINLCD_DATA(0xffe0);}//MAINLCD_DATA(0x0000);}
MAINLCD_DATA(0xffe0);//MAINLCD_DATA(0x0000);
MAINLCD_DATA(0xffe0);//MAINLCD_DATA(0x0000);
}
}
/*****************************************/
void showTP12(void)
{
unsigned char i,j;
unsigned int c;
areaset(0,0);
for(c=0;c<9600;c++)
{
MAINLCD_DATA(0xffff);
MAINLCD_DATA(0xffff);
//MAINLCD_DATA(0xffff);
//MAINLCD_DATA(0xc000);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -