|
发表于 2011-2-19 15:54:07
|
显示全部楼层
问一下您的SSD1963的版本是多少的。。我用0.2的初始化不行,用V1.1的也不行不知道是不是我的屏坏了、。
我的初始化代码
/**************************************************************************************
函数功能:初始化SSD1963
输入: 无
输出: 无
注意: 无
**************************************************************************************/
void InitSSD1963(void)
{
//GPIOB->BSRR = GPIO_Pin_0;//禁止芯片操作
LCD_RST_H();
LCD_CS_H();
LCD_RD_H();
LCD_WR_H();
LCD_RST_L();
DelayMs(100);
LCD_RST_H();
DelayMs(100);
WriteCommand(0x01); //软复位
WriteCommand(0xE2); //Set PLL with OSC = 10MHz (hardware), Multiplier N = 35, 250MHz < VCO < 800MHz = OSC*(N+1), VCO = 360MHz
LCD_CS_L();
WriteData(0x35); //参数1
WriteData(0x02); //参数2 Divider M = 2, PLL = 360/(M+1) = 120MHz
WriteData(0x04); //参数3 Validate M and N values
LCD_CS_H();
WriteCommand(0xE0); // Start PLL command
LCD_CS_L();
WriteData(0x01); // enable PLL
LCD_CS_H();
DelayMs(1);
WriteCommand(0xE0); // Start PLL command again
LCD_CS_L();
WriteData(0x03); // now, use PLL output as system clock
LCD_CS_H();
DelayMs(5);
WriteCommand(0x01); //软复位
DelayMs(10);
/*****************************************************************
* 7" TFT model # TY700TFT800480
*****************************************************************/
//Set LSHIFT freq, i.e. the DCLK with PLL freq 120MHz set previously
//Typical DCLK for TY700TFT800480 is 33.3MHz(datasheet), experiment shows 30MHz gives a stable result
//30MHz = 120MHz*(LCDC_FPR+1)/2^20
//LCDC_FPR = 262143 (0x3FFFF)
//Time per line = (DISP_HOR_RESOLUTION+DISP_HOR_PULSE_WIDTH+DISP_HOR_BACK_PORCH+DISP_HOR_FRONT_PORCH)/30 us = 1056/30 = 35.2us
WriteCommand(0xE6);
LCD_CS_L();
WriteData((LCD_FPR >> 16) & 0xFF);
WriteData((LCD_FPR >> 8) & 0xFF);
WriteData(LCD_FPR & 0xFF);
LCD_CS_H();
//Set LCD mode, varies from individual manufacturer
WriteCommand(0xB0);
LCD_CS_L();
WriteData(0x03);//0x10 // set 18-bit for 7" panel TY700TFT800480
WriteData(0x00); // set Hsync+Vsync mode
WriteData(mHIGH((TFT_WIDTH-1))); // Set LCD panel size(DISP_HOR_RESOLUTION = 800) H
WriteData(mLOW((TFT_WIDTH-1))); // Set LCD panel size(DISP_HOR_RESOLUTION = 800) L
WriteData(mHIGH((TFT_HEIGHT-1))); // Set LCD panel size(DISP_VER_RESOLUTION = 480) H
WriteData(mLOW((TFT_HEIGHT-1))); // Set LCD panel size(DISP_VER_RESOLUTION = 480) L
WriteData(0x00);//0x00 // RGB sequence
LCD_CS_H();
//Set horizontal period
WriteCommand(0xB4);
LCD_CS_L();
WriteData(mHIGH(TFT_HSYNC_PERIOD));
WriteData(mLOW(TFT_HSYNC_PERIOD));
WriteData(mHIGH((TFT_HSYNC_PULSE + TFT_HSYNC_BACK_PORCH)));
WriteData(mLOW((TFT_HSYNC_PULSE + TFT_HSYNC_BACK_PORCH)));
WriteData(TFT_HSYNC_PULSE-1);
WriteData(0x00);
WriteData(0x00);
WriteData(0x00);
LCD_CS_H();
//Set vertical period
WriteCommand(0xB6);
LCD_CS_L();
WriteData(mHIGH(TFT_VSYNC_PERIOD));
WriteData(mLOW(TFT_VSYNC_PERIOD));
WriteData(mHIGH((TFT_VSYNC_PULSE + TFT_VSYNC_BACK_PORCH)));
WriteData(mLOW((TFT_VSYNC_PULSE + TFT_VSYNC_BACK_PORCH)));
WriteData(TFT_VSYNC_PULSE-1);
WriteData(0x00);
WriteData(0x00);
LCD_CS_H();
// WriteCommand(0x3A); //Set pixel format, i.e. the bpp
// LCD_CS_L();
// WriteData(0x55); //set 16bpp
// LCD_CS_H();
WriteCommand(0x36); //Set pixel format, i.e. the bpp
LCD_CS_L();
WriteData(0x00); //set 16bpp
LCD_CS_H();
WriteCommand(0xF0); //设置SSD1963同CPU接口为16bit Set pixel data interface
LCD_CS_L();
WriteData(0x03); //16-bit(565 format) data for 16bpp PIC32MX only
LCD_CS_H();
//WriteCommand(0x21); //进入图形颜色翻转模式
// WriteCommand(0xBC);//重要
//
// LCD_CS_L();
// WriteData(brightness);//亮度值
// WriteData(contrast);//对比度值
// WriteData(saturation);//饱和度值
// WriteData(0x01);//处理机允许
// LCD_CS_H();
WriteCommand(0x29); // Turn on display; show the image on display
WriteCommand(0xB8); //设置GPIO配置
LCD_CS_L();
WriteData(0x0F); //GPIO is controlled by host; 4个IO设置成输出
WriteData(0x01); //GPIO0 使用正常的IO功能
LCD_CS_H();
//
// WriteCommand(0xBA); //设置GPIO配置
// LCD_CS_L();
// WriteData(0x02); //GPIO0 使用正常的IO功能
// LCD_CS_H();
s1963gpio = Down2Up2Left2Right;//LCD方向设置
SetS1963GpioOut(); //设置固定的输出值
} |
|