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

📄 176220-29test.c

📁 单片机下S1D19015的液晶驱动 爱普生近日推出款用于2.5G和3G手机的彩色TFT LCD驱动器IC——S1D19105。该单芯片解决方案同时支持176×RGB×220点(QCIF+)显示和26
💻 C
字号:


#include <reg51.h>
#include <absacc.h>

#define  Uchar unsigned char
int Multiple_Test=0;

#define  DataBus_Low8bit  P0
#define  DataBus_How8bit  P2

sbit  bl_main=P1^3;
sbit  sub_cs=P3^5;
sbit  main_cs=P3^4;
sbit  rst=P3^3;
sbit  rs=P3^2;
sbit  wrb=P3^0;
sbit  e_rd=P3^1;
//
sbit  KEY=P1^7;
sbit  upctra=P1^6;
sbit  downctra=P1^5;
sbit  BL_EN=P3^6;
sbit  A2=P1^2;
sbit  A1=P1^1;
sbit  A0=P1^0;

/*************************function defined declaring**************************/
void Delayus(int value);
void Delayms(int value);
void WaitKey(void);     /*wait to press key for the programm continuing */
void SubLCD_TEST(void);   
void Bypass_InitLCD_SUB_Ssd1788z(void);
void LCDREG_SUB(char cmd_sub);          /*向从屏驱动IC写命令*/
void LCDDATA_SUB(char dat_sub); 
void Sub_Lcd_char(int i);  
void Sub_Lcd(char data1 , char data2);		
//
void LCD_HardwareReset(void);         /*hardware reset*/
void MainLCD_Init(void);	     /*Initialize Main LCD driver IC*/
void MainLCD_WCom(char cmd1);      /*write instruction to Main LCD's driver IC */
void MainLCD_WData(char data1,char data2);      /*write data to GGRAM of Main LCD's driver IC*/
void MainLCD_DisplaySingleColor(char data1,char data2);  /*write single color to defined area*/
void MainLCD_DisplaySingle(char data1,char data2);
void MainLCD_GradualColor(char gradual_color[]);   /*write gradual color*/
void MainLCD_DisplayPicture(char PIC[]);   /*write image data to GGRAM*/
void frame(void);
void ReadEPROM(void);
 void Sub_Lcd(char data1 , char data2); 



/****************************************************************************************/
void main(void)
{
     short i;
  
          LCD_HardwareReset();

     sub_cs=1;
 
      while(1)
      {
                   	
	     MainLCD_Init(); 
	MainLCD_DisplaySingleColor(0xf8,0x00);
	WaitKey();
	MainLCD_DisplaySingleColor(0x07,0xe0); 
	WaitKey();
	MainLCD_DisplaySingleColor(0x00,0x1f); 
	WaitKey();
	MainLCD_DisplaySingleColor(0xff,0xff); 
	WaitKey();
        MainLCD_DisplaySingleColor(0x00 ,0x00); 

       
      	}
        
}




      
******************************************************************************************/

void LCD_HardwareReset(void)
{   
    rst=0;
    Delayms(20);
    rst=1;
    Delayms(20);	
}   

void Delayus(int value)
{   
   while(value)
       { 
	  value--;   /*delay 1us*/  
       }      
}   
     
       
void Delayms(int value)
{  
    while(value)
        {
          Delayus(99);         /*delay 1ms*/
	  value--;
	}
        
}   

void WaitKey(void)
{
   KEY=1;   
   upctra=1;
   downctra=1;
   Delayms(300);
   while(KEY)
    {
       if(!upctra)
          {
             ;   
          }
       if(!downctra)
          {
            ;
          }             
    } 
   
}  
  
/*主屏显示单色 */                                                          /*2byte = 1pixel, RGBRGB... */

void MainLCD_DisplaySingleColor(char data1,char data2)
{
    int i,j;
   
    for(i=0;i<220;i++)
    {
      for(j=0;j<176;j++)
       {
       MainLCD_WData(data1,data2); 
      }
       }
}

void MainLCD_DisplaySingle(char data1,char data2)
{
    int i,j;
   
    for(i=0;i<220;i++)
    {
      for(j=0;j<44;j++)
       {
       MainLCD_WData(data1,data2); 
      }
       }
}
void MainLCD_Init(void)              //Initialize Driver IC: HITACHI HCD66773
{
	unsigned int i;
	
	Delayms( 250 );
	MainLCD_WCom(0x99);		// soft reset
	Delayms( 250);
	MainLCD_WCom(0x96);		// Turns Vosc ON 
	Delayms( 250);
	MainLCD_WCom(0x6F);		// GATE SCAN
	MainLCD_WData(0x08,0x00);			//SET GATE SCAN MODE 
	MainLCD_WData(0x00,0x00);			// 	
	MainLCD_WData(0xDB,0x00);	



	MainLCD_WCom(0xCA);		// SET DISPLAY
	MainLCD_WData(0x00,0x00);			//SET THE DISPLAY CONDITION
	MainLCD_WData(0x49,0x00);			// 	
	MainLCD_WData(0x00,0x00);	
	MainLCD_WData(0x44,0x00);			//48
	MainLCD_WData(0xDB,0x00);			//P5
	MainLCD_WData(0x00,0x00);			// 	
	MainLCD_WData(0x02,0x00);			//02
	MainLCD_WData(0x01,0x00);			//01	
	MainLCD_WData(0x00,0x00);			//P9	

	MainLCD_WCom(0xA1);		// SET DISPLAY TIMING
	MainLCD_WData(0x00,0x00);			//????
	MainLCD_WData(0x46,0x00);			// 	
	MainLCD_WData(0x00,0x00);	
	MainLCD_WData(0x40,0x00);	
	MainLCD_WData(0x0c,0x00);	
	MainLCD_WData(0x13,0x00);			//	
	MainLCD_WData(0x09,0x00);

        MainLCD_WCom(0xBC);		// SET DATA
	MainLCD_WData(0x00,0x00);			//ROW AND COLUMN SCAN DIRECTION

	MainLCD_WCom(0xAB);		
	MainLCD_WData(0x00,0x00);	
	
	MainLCD_WCom(0x31);		// display data interface
	MainLCD_WData(0x10,0x00);			// 16bit 
	MainLCD_WData(0x00,0x00);			// 	
	
	MainLCD_WCom(0x8b);		// COLMOD
	MainLCD_WData(0x00,0x00);			//00
	MainLCD_WData(0x44,0x00);			//01
	MainLCD_WData(0x77,0x00);			//01
	MainLCD_WData(0x74,0x00);			//22	
    
	MainLCD_WCom(0x20);		// SET ELECTRONIC CONTROL  need adjust????
	MainLCD_WData(0x0b,0x00);			//VDDHS  0b
	MainLCD_WData(0x10,0x00);	//25		//VCOMH 12
	MainLCD_WData(0x0f,0x00);			//VCOMW	18 change shandong
	MainLCD_WData(0x12,0x00);			//VONREG 09
	MainLCD_WData(0x0d,0x00);			//VOFREG  0c
	MainLCD_WData(0x0a,0x00);			//VddRH   0e
	MainLCD_WData(0x04,0x00);			//VddRL   2c
	MainLCD_WData(0x00,0x00);			//VLDO		07
	Delayms( 250 );

	MainLCD_WCom(0x22);		// SET ELECTRONIC CONTROL
	MainLCD_WData(0x32,0x00);			//33
	MainLCD_WData(0x00,0x00);			//44
	MainLCD_WData(0x44,0x00);			//33
	MainLCD_WData(0x44,0x00);			//44
	MainLCD_WData(0x44,0x00);			//aa
	MainLCD_WData(0x44,0x00);			//5a
        Delayms( 250);
	
	MainLCD_WCom(0x21);		// SET POWER CONTROL  
	MainLCD_WData(0x10,0x00);			// 10
	MainLCD_WData(0x11,0x00);			// 11
	MainLCD_WData(0x0e,0x00);			//  on booster circuit 0f
	MainLCD_WData(0x1f,0x00);			// p4 1f
	MainLCD_WData(0xaD,0x00);			// p5  ??00  2d
	MainLCD_WData(0xa0,0x00);			// p6 00
	MainLCD_WData(0x44,0x00);			// p7 44
	MainLCD_WData(0xFF,0x00);			// p8 ff
	MainLCD_WData(0x03,0x00);			// p9 ff
	MainLCD_WData(0xFF,0x00);			// pa ff
	MainLCD_WData(0x03,0x00);			// pb 03
	MainLCD_WData(0x11,0x00);			// pc 11
	MainLCD_WData(0x44,0x00);			// pd 44	
	Delayms( 250 );							// WAIT 50MS

	MainLCD_WCom(0x23);		// SET partial POWER CONTROL  
	MainLCD_WData(0x01,0x00);			//
	MainLCD_WData(0x44,0x00);			// 
	MainLCD_WData(0x1f,0x00);			//  ????? on booster circuit
	MainLCD_WData(0xad,0x00);			// p4
	MainLCD_WData(0xa0,0x00);			// p5  ??00  2d
	MainLCD_WData(0x11,0x00);			// p6
	MainLCD_WData(0x44,0x00);			// p7
	Delayms( 250 );							// WAIT 50MS
	
	MainLCD_WCom(0x94);		// SLEEP OUT
	Delayms( 250);	
	

	MainLCD_WCom(0x8c);		// ACDRIVE
	MainLCD_WData(0x00,0x00);			//
	MainLCD_WData(0x00,0x00);			//
	
	MainLCD_WCom(0x92);		// Start oscillation
	
	MainLCD_WCom(0x15);		// START ADDRESS
	MainLCD_WData(0x00,0x00);			//START COLUMN 	
	MainLCD_WData(0x00,0x00);			//START ROW

	MainLCD_WCom(0x75);		// END ADDRESS
	MainLCD_WData(0xAF,0x00);			//END COLUMN	
	MainLCD_WData(0xDB,0x00);			//END ROW

	MainLCD_WCom(0xAF);			// Display ON
	Delayms( 250);
	MainLCD_WCom(0x5c);
	}



void MainLCD_WCom(Uchar cmd1)
{
      
      e_rd=1;
      rs=0;
      wrb=1;
      sub_cs=1;
      main_cs=0;
//      DataBus_Low8bit=cmd2;
      DataBus_How8bit=cmd1;
      wrb=0;     
      ;
      wrb=1;
      
      main_cs=1;
 
}	



void MainLCD_WData(Uchar data1,Uchar data2)
{
     
      e_rd=1;
      rs=1;
      wrb=1;
      sub_cs=1;
      main_cs=0;
      DataBus_Low8bit=data2;
      DataBus_How8bit=data1;
      wrb=0;     
      ;
      wrb=1;
      main_cs=1;
 
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -