zyh_126

C55液晶扩展

0
阅读(2612)

C55作为低功耗处理器,在便携式设备处理中应用比较广泛,但是由于其用途主要是用在数字处理方面,因而其外围接口比较简单,扩展比较麻烦,一般是作为协处理器使用。对外围用户接口的设计就一般交由其他处理器完成。这一节我主要是把C55作为一般的处理器使用,充分勇气EMIF接口扩展一TFT液晶显示屏。

此液晶屏是3.2寸真彩TFT触摸屏, 240*320像素, 26万色;采用8080 16位并行接口。引脚接口定义如下:

 

DB00-DB15是数据总线,和C5509的数据总线D0-D15直连,CS为片选信号,CE2连接,RS为命令数据控制信号与地址总线A1连接;WRRD为读写信号,分别与AWEARE连接。片选地址是ioport *LCD_BASE=0x80000;

EMIF配置结构:

EMIF_Config Config_EMIF={

                         0x281,0xffff,

                         0x100c,0xffff,

                          0x00ff,0x013e,

                          0x0fff,0x00ff,

                         0x1105,0x0105,0x00ff,

                         0x110d,0x010d,

                          0x010d,0x00ff,

0x07ff,0x0fff,

0x07fff,0x03ff  

}

SSD1289的配置程序如下:

void STM3210E_LCD_Init(void)

{

  /* Start Initial Sequence ----------------------------------------------------*/

   LCD_WriteReg(0x0007,0x0021); 

    // set R00h at 0001h (OSCEN=1)

    LCD_WriteReg(0x0000,0x0001); 

    // set R07h at 0023h (GON=1,DTE=0,D[1:0]=11)

    LCD_WriteReg(0x0007,0x0023); 

    // set R10h at 0000h (Exit sleep mode)

    LCD_WriteReg(0x0010,0x0000);

    // Wait 30ms

    Delay(200);

    // set R07h at 0033h (GON=1,DTE=1,D[1:0]=11)

    LCD_WriteReg(0x0007,0x0033); 

    // Entry mode setting (R11h)

    // R11H Entry mode

    // vsmode DFM1 DFM0 TRANS OEDef WMode DMode1 DMode0 TY1 TY0 ID1 ID0 AM LG2 LG2 LG0

    //   0     1    1     0     0     0     0      0     0   1   1   1  *   0   0   0

    LCD_WriteReg(0x0011,0x6070);  

    // LCD driver AC setting (R02h)

    LCD_WriteReg(0x0002,0x0600);  

    // power control 1

    // DCT3 DCT2 DCT1 DCT0 BT2 BT1 BT0 0 DC3 DC2 DC1 DC0 AP2 AP1 AP0 0

    // 1     0    1    0    1   0   0  0  1   0   1   0   0   1   0  0

    // DCT[3:0] fosc/4 BT[2:0]  DC{3:0] fosc/4

    LCD_WriteReg(0x0003,0xa8a4);//0xA8A4

    LCD_WriteReg(0x000C,0x0000);

    LCD_WriteReg(0x000D,0x080c);

    // power control 4

    // 0 0 VCOMG VDV4 VDV3 VDV2 VDV1 VDV0 0 0 0 0 0 0 0 0

    // 0 0   1    0    1    0    1    1   0 0 0 0 0 0 0 0

    LCD_WriteReg(0x000E,0x2b00); 

    LCD_WriteReg(0x001E,0x00B0);

    LCD_WriteReg(0x0001,0x2B3F);//驱动输出控制320*240  0x6B3F

       LCD_WriteReg(0x0002,0x0600);    /////

    LCD_WriteReg(0x0010,0x0000);  

    LCD_WriteReg(0x0005,0x0000); 

    LCD_WriteReg(0x0006,0x0000); 

    LCD_WriteReg(0x0016,0xEF1C);  

    LCD_WriteReg(0x0017,0x0003);  

    LCD_WriteReg(0x0007,0x0233);//0x0233

    LCD_WriteReg(0x000B,0x0000);     

    LCD_WriteReg(0x000F,0x0000);//扫描开始地址

    LCD_WriteReg(0x0041,0x0000);

    LCD_WriteReg(0x0042,0x0000); 

    LCD_WriteReg(0x0048,0x0000);

    LCD_WriteReg(0x0049,0x013F);

    LCD_WriteReg(0x004A,0x0000);

    LCD_WriteReg(0x004B,0x0000);

    LCD_WriteReg(0x0044,0xEF00);

    LCD_WriteReg(0x0045,0x0000);

    LCD_WriteReg(0x0046,0x013F);

    LCD_WriteReg(0x0030,0x0707);

    LCD_WriteReg(0x0031,0x0204);

    LCD_WriteReg(0x0032,0x0204);

    LCD_WriteReg(0x0033,0x0502);

    LCD_WriteReg(0x0034,0x0507);

    LCD_WriteReg(0x0035,0x0204);

    LCD_WriteReg(0x0036,0x0204);

    LCD_WriteReg(0x0037,0x0502);

    LCD_WriteReg(0x003A,0x0302);

    LCD_WriteReg(0x003B,0x0302);

    LCD_WriteReg(0x0023,0x0000);

    LCD_WriteReg(0x0024,0x0000);

    LCD_WriteReg(0x0025,0x8000);   // 65hz

    LCD_WriteReg(0x004f,0);        // 行首址0

    LCD_WriteReg(0x004e,0);        // 列首址0

    LCD_Clear(0x0)      ;

 // LCD_DisplayOn();

 // LCD_Clear(Red);

 // LCD_DisplayOff();

 

}