以下是本人对ID号为4535的液晶初始化程序(板子上带的)的部分注释和理解,如有错误与不当之处肯请您批评指正。希望大家多多交流!
void LCD_Init(void)
{
RCC->APB2ENR |= 1 << 3;
RCC->APB2ENR |= 1 << 4; //使能时钟一定要用或
JTAG_ModeSet(2); //JTAG全关
GPIOC->CRH &= 0xfffff000;//液晶IO口初始化
GPIOC->CRH |= 0x00000333;
GPIOC->CRL &= 0x00ffffff;
GPIOC->CRL |= 0x33000000;
GPIOC->ODR |= 0x07c0;
GPIOB->CRH = 0x33333333;
GPIOB->CRL = 0x33333333;
GPIOB->ODR = 0xffff;
//-----------LCD相关初始化--------------------
Delay_ms(50);
LCD_WriteReg(0x0000,0x0001);//启动液晶内部晶振
Delay_ms(50);
//电源配置部分(电源部分整体疲软,不甚明白)
LCD_WriteReg(0X15,0X0030);//(RegualControl)
LCD_WriteReg(0X9A,0X0010);//(FramRataControl)OSC frequency的系数为1.69
LCD_WriteReg(0X11,0X0020);//(PowerControl2)DC0的启动频率64分频
LCD_WriteReg(0X10,0X3428);//(PowerControl1)
LCD_WriteReg(0X12,0X0002);//(PowerControl3)某某系数设为1.37
LCD_WriteReg(0X13,0X1038);//(PowerControl4)也是设置了系数
Delay_ms(40);
LCD_WriteReg(0X12,0X0012);//(PowerControl3)
Delay_ms(40);
LCD_WriteReg(0X10,0X3420);//(PowerControl1)
LCD_WriteReg(0X13,0X3038);//(PowerControl4)
Delay_ms(70);
//伽马校正部分(目前还没有深入了解,附件里有相关资料。同时发现用其它ID号初始化的相应部分替换也可正常工作)
LCD_WriteReg(0X30,0X0000);//
LCD_WriteReg(0X31,0X0402);//
LCD_WriteReg(0X32,0X0307);//
LCD_WriteReg(0X33,0X0304);//
LCD_WriteReg(0X34,0X0004);//
LCD_WriteReg(0X35,0X0401);//
LCD_WriteReg(0X36,0X0707);//
LCD_WriteReg(0X37,0X0305);//
LCD_WriteReg(0X38,0X0610);//
LCD_WriteReg(0X39,0X0610);//
//显示控制部分
LCD_WriteReg(0X01,0X0100);//(DriverOutputControl)SS位置位,源极驱动由S720到S1(当SS清0时会使显示左右颠倒)
LCD_WriteReg(0X02,0X0300);//(LCD DrivingWaveControl)B/C、EOR置1,线反转(目前小尺寸液晶用的方法,大尺寸用点反转)
LCD_WriteReg(0X03,0X1030);//***(EntryMode)TRI位为1,80总线26万色;AM位为0,水平扫描;ID[0、1]为11,从左到右(该寄存器可控制显示方向)
LCD_WriteReg(0X08,0X0808);//(DisplayControl2)选择前沿后沿的线数都是8条 (?不太懂)
LCD_WriteReg(0X0A,0X0008);//开启Fmark功能(我试验时,有没有此功能没有影响,不知Fmark线有没有连)
LCD_WriteReg(0X60,0X2700);//(DriverOutputControl)NL[5:0]决定显示的行数,如0x27对应320行,0x04对应40行,有兴趣可以试一下
LCD_WriteReg(0X61,0X0001);//(BaseImageDisplayContor)REV位置1,正常颜色显示(当该位清0时会显示反色)
LCD_WriteReg(0X90,0X013d);//(Panel InterfaceControl1)TRNI[7:0](对应低两位),要求设值大于0x3c;DIVI[1:0]为1,分频比例为2,好像和计算频率有关。
LCD_WriteReg(0X92,0X0100);//(Panel InterfaceControl2)
LCD_WriteReg(0X93,0X0100);//(Panel InterfaceControl3)以上两句都是设置某某period (?不太懂)
LCD_WriteReg(0XA0,0X3000);//(TestRegister1)设为VCOMH模式(?不太懂)
LCD_WriteReg(0XA3,0X0010);//(TestRegister2)以上两句为调试寄存器,把它们屏蔽掉后也不影响正常工作
// LCD_WriteReg(0X07,0X0001);//(DisplayControl1)
// LCD_WriteReg(0X07,0X0021);//(DisplayControl1)
// LCD_WriteReg(0X07,0X0023);//(DisplayControl1)
// LCD_WriteReg(0X07,0X0033);//(DisplayControl1)
LCD_WriteReg(0X07,0X0133);//***(DisplayControl1)(试验时R7只写这一句也行,为什么要有前几次写入呢?)BASEE位置1,base image模式;GON、DTE行线、列线开启;D[1、0]开显示
LCD_LED_SET;//开背光
} |