Exemplo n.º 1
0
void Lcd_Init(void)
{

//调用一次这些函数,免得编译的时候提示警告
    LCD_CS =1;
    if(LCD_CS==0)
    {
        LCD_WR_REG_DATA(0,0);
        LCD_ShowString(0,0," ");
        LCD_ShowNum(0,0,0,0);
        LCD_Show2Num(0,0,0,0);
        LCD_DrawPoint_big(0,0);
        LCD_DrawRectangle(0,0,0,0);
        Draw_Circle(0,0,0);
    }
    LCD_REST=0;
    delayms(20);
    LCD_REST=1;
    delayms(20);
    LCD_CS =0;  //打开片选使能

    LCD_WR_REG(0xCB);
    LCD_WR_DATA8(0x39);
    LCD_WR_DATA8(0x2C);
    LCD_WR_DATA8(0x00);
    LCD_WR_DATA8(0x34);
    LCD_WR_DATA8(0x02);

    LCD_WR_REG(0xCF);
    LCD_WR_DATA8(0x00);
    LCD_WR_DATA8(0XC1);
    LCD_WR_DATA8(0X30);

    LCD_WR_REG(0xE8);
    LCD_WR_DATA8(0x85);
    LCD_WR_DATA8(0x00);
    LCD_WR_DATA8(0x78);

    LCD_WR_REG(0xEA);
    LCD_WR_DATA8(0x00);
    LCD_WR_DATA8(0x00);

    LCD_WR_REG(0xED);
    LCD_WR_DATA8(0x64);
    LCD_WR_DATA8(0x03);
    LCD_WR_DATA8(0X12);
    LCD_WR_DATA8(0X81);

    LCD_WR_REG(0xF7);
    LCD_WR_DATA8(0x20);

    LCD_WR_REG(0xC0);    //Power control
    LCD_WR_DATA8(0x23);   //VRH[5:0]

    LCD_WR_REG(0xC1);    //Power control
    LCD_WR_DATA8(0x10);   //SAP[2:0];BT[3:0]

    LCD_WR_REG(0xC5);    //VCM control
    LCD_WR_DATA8(0x3e); //对比度调节
    LCD_WR_DATA8(0x28);

    LCD_WR_REG(0xC7);    //VCM control2
    LCD_WR_DATA8(0x86);  //--

    LCD_WR_REG(0x36);    // Memory Access Control
    LCD_WR_DATA8(0x48); //	   //48 68竖屏//28 E8 横屏

    LCD_WR_REG(0x3A);
    LCD_WR_DATA8(0x55);

    LCD_WR_REG(0xB1);
    LCD_WR_DATA8(0x00);
    LCD_WR_DATA8(0x18);

    LCD_WR_REG(0xB6);    // Display Function Control
    LCD_WR_DATA8(0x08);
    LCD_WR_DATA8(0x82);
    LCD_WR_DATA8(0x27);

    LCD_WR_REG(0xF2);    // 3Gamma Function Disable
    LCD_WR_DATA8(0x00);

    LCD_WR_REG(0x26);    //Gamma curve selected
    LCD_WR_DATA8(0x01);

    LCD_WR_REG(0xE0);    //Set Gamma
    LCD_WR_DATA8(0x0F);
    LCD_WR_DATA8(0x31);
    LCD_WR_DATA8(0x2B);
    LCD_WR_DATA8(0x0C);
    LCD_WR_DATA8(0x0E);
    LCD_WR_DATA8(0x08);
    LCD_WR_DATA8(0x4E);
    LCD_WR_DATA8(0xF1);
    LCD_WR_DATA8(0x37);
    LCD_WR_DATA8(0x07);
    LCD_WR_DATA8(0x10);
    LCD_WR_DATA8(0x03);
    LCD_WR_DATA8(0x0E);
    LCD_WR_DATA8(0x09);
    LCD_WR_DATA8(0x00);

    LCD_WR_REG(0XE1);    //Set Gamma
    LCD_WR_DATA8(0x00);
    LCD_WR_DATA8(0x0E);
    LCD_WR_DATA8(0x14);
    LCD_WR_DATA8(0x03);
    LCD_WR_DATA8(0x11);
    LCD_WR_DATA8(0x07);
    LCD_WR_DATA8(0x31);
    LCD_WR_DATA8(0xC1);
    LCD_WR_DATA8(0x48);
    LCD_WR_DATA8(0x08);
    LCD_WR_DATA8(0x0F);
    LCD_WR_DATA8(0x0C);
    LCD_WR_DATA8(0x31);
    LCD_WR_DATA8(0x36);
    LCD_WR_DATA8(0x0F);

    LCD_WR_REG(0x2A);
    LCD_WR_DATA8(0x00);
    LCD_WR_DATA8(0x00);
    LCD_WR_DATA8(0x00);
    LCD_WR_DATA8(0xEF);

    LCD_WR_REG(0x2B);
    LCD_WR_DATA8(0x00);
    LCD_WR_DATA8(0x00);
    LCD_WR_DATA8(0x01);
    LCD_WR_DATA8(0x3F);
    LCD_WR_REG(0x11);    //Exit Sleep
    delayms(120);

    LCD_WR_REG(0x29);    //Display on
    LCD_WR_REG(0x2c);

}
Exemplo n.º 2
0
void LCD_Init(void)
{
  P3OUT|=(BIT1+BIT2+BIT3+BIT6+BIT7);
  P4OUT=0xFF;
  P2OUT=0xFF;
  P1OUT|=BIT2;
  P3DIR|=(BIT1+BIT2+BIT3+BIT6+BIT7);
  P4DIR=0xFF;
  P2DIR=0xFF;
  P1DIR|=BIT2;
  P1OUT|=BIT2;
  
  SET_LCD_CS;
  if(GET_LCD_CS==0)
  {
      LCD_WR_REG_DATA(0,0);
      LCD_ShowString(0,0," ");
      LCD_ShowNum(0,0,0,0);
      LCD_Show2Num(0,0,0,0);
      LCD_DrawPoint_big(0,0);
      LCD_DrawRectangle(0,0,0,0);
      Draw_Circle(0,0,0);
  }

  SET_LCD_REST;
  delay_ms(5);	
  CLR_LCD_REST;
  delay_ms(5);
  SET_LCD_REST;
  SET_LCD_CS;
  SET_LCD_RD;
  SET_LCD_WR;
  delay_ms(5);
  CLR_LCD_CS ;  //打开片选使能

  LCD_WR_REG(0x00E2);	//PLL multiplier, set PLL clock to 120M
  LCD_WR_DATA(0x002d);	//N=0x36 for 6.5M, 0x23 for 10M crystal
  LCD_WR_DATA(0x0002);
  LCD_WR_DATA(0x0004);
  LCD_WR_REG(0x00E0);  // PLL enable
  LCD_WR_DATA(0x0001);
  delay_ms(1);
  LCD_WR_REG(0x00E0);
  LCD_WR_DATA(0x0003);
  delay_ms(5);
  LCD_WR_REG(0x0001);  // software reset
  delay_ms(5);
  LCD_WR_REG(0x00E6);	//PLL setting for PCLK, depends on resolution
  LCD_WR_DATA(0x0000);
  LCD_WR_DATA(0x00ff);
  LCD_WR_DATA(0x00be);

  LCD_WR_REG(0x00B0);	//LCD SPECIFICATION
  LCD_WR_DATA(0x0020);
  LCD_WR_DATA(0x0000);
  LCD_WR_DATA((HDP>>8)&0X00FF);  //Set HDP
  LCD_WR_DATA(HDP&0X00FF);
  LCD_WR_DATA((VDP>>8)&0X00FF);  //Set VDP
  LCD_WR_DATA(VDP&0X00FF);
  LCD_WR_DATA(0x0000);
  delay_ms(5);
  LCD_WR_REG(0x00B4);	//HSYNC
  LCD_WR_DATA((HT>>8)&0X00FF);  //Set HT
  LCD_WR_DATA(HT&0X00FF);
  LCD_WR_DATA((HPS>>8)&0X00FF);  //Set HPS
  LCD_WR_DATA(HPS&0X00FF);
  LCD_WR_DATA(HPW);			   //Set HPW
  LCD_WR_DATA((LPS>>8)&0X00FF);  //SetLPS
  LCD_WR_DATA(LPS&0X00FF);
  LCD_WR_DATA(0x0000);

  LCD_WR_REG(0x00B6);	//VSYNC
  LCD_WR_DATA((VT>>8)&0X00FF);   //Set VT
  LCD_WR_DATA(VT&0X00FF);
  LCD_WR_DATA((VPS>>8)&0X00FF);  //Set VPS
  LCD_WR_DATA(VPS&0X00FF);
  LCD_WR_DATA(VPW);			   //Set VPW
  LCD_WR_DATA((FPS>>8)&0X00FF);  //Set FPS
  LCD_WR_DATA(FPS&0X00FF);

  LCD_WR_REG(0x0036); //rotation
  LCD_WR_DATA(0x0000);
  LCD_WR_REG(0x00F0); //pixel data interface
  LCD_WR_DATA(0x0003);
  
  delay_ms(5);
  LCD_WR_REG(0x0029); //display on
  LCD_WR_REG(0x00BE); //set PWM for B/L
  LCD_WR_DATA(0x0006);
  LCD_WR_DATA(0x00f0);
  LCD_WR_DATA(0x0001);
  LCD_WR_DATA(0x00f0);
  LCD_WR_DATA(0x0000);
  LCD_WR_DATA(0x0000);

  LCD_WR_REG(0x00d0); 
  LCD_WR_DATA(0x000d);
  //----------LCD RESET---GPIO0-------------------//
  LCD_WR_REG(0x00B8);
  LCD_WR_DATA(0x0000);    //GPIO3=input, GPIO[2:0]=output
  LCD_WR_DATA(0x0001);    //GPIO0 normal
  LCD_WR_REG(0x00BA);
  LCD_WR_DATA(0x0000);  
}