⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 as4_drive.c

📁 lcd 驱动程序
💻 C
📖 第 1 页 / 共 2 页
字号:
      #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 + -