华秋商城
直播中

王耀昱

7年用户 246经验值
私信 关注
[经验]

SSD1963 LCD驱动开发总结

这几个月来,学了不少东西,菜鸟要学习也要略作总结,免得忘得太快。
4.3寸的480*272 TFT显示。
  TFT就是 薄膜场效应晶体管。液晶显示屏的一种。驱动芯片选用的是SSD1963,MCU是STM32103VET6。是在奋斗的V3板上实现的。
  关于LCD显示,不得不说下LCD的初始化,也算是液晶屏的驱动吧。修改自奋斗板上的例程。
  初始化分为几个步骤:
  首先,先上电复位一下,奋斗板是用E1脚来控制的,代码如下:
  GPIO_ResetBits(GPIOE, GPIO_Pin_1); //先置零
  Delay(0xAFFF);                        //延时(我的延时函数是没有循环的,所以时间不久几微秒就可以了,)                  
  GPIO_SetBits(GPIOE, GPIO_Pin_1 );//上电开启                          
  Delay(0xAFFF);                        //再来一次
  第二步,当然是PLL设置啦。代码如下:
  LCD_WR_REG(0x00E2);            //0XE2是设置PLL 的寄存器。
  LCD_WR_Data(0x002c);            //设置倍频数 M   0x2c for 8M
  LCD_WR_Data(0x0002);           //设置分频数 N
  LCD_WR_Data(0x0004);        //使能MN   PLL = INCLK*(M+1) / (N+1)  PLL 倍频到120M PLL=8*44/3=120M
  设置完之后,还有使能PLL作为LCD的时钟,别忘记了
  LCD_WR_REG(0x00E0);         //0XE0是PLL使能寄存器
  LCD_WR_Data(0x0001);          //先开启PLL
  Delay(0xAFFF);                  //略作延时
  LCD_WR_REG(0x00E0);         //还要一次
  LCD_WR_Data(0x0003);          // 使用 PLL作为时钟
  Delay(0xAFFF);                //嗯,这里需要休息一下
  LCD_WR_REG(0x0001);         // 软件复位
  第三步,设置PCLK,也就是像素时钟,很重要哦。
  LCD_WR_REG(0xE6);        //嗯,没错 0XE6是设置像素时钟的寄存器  
  LCD_WR_Data(0x01);       //我的屏幕是4.3寸,这个频率就可以了,如果屏幕比较大,有闪烁的话,可以再加大
  LCD_WR_Data(0x93);
  LCD_WR_Data(0xE0);       //忘记说了,寄存器指令都是8位传输的,这里的像素时钟需要3个字节来设置,高位在前
  第四步,设置LCD的显示模式,需要根据屏幕大小和LCD的电路控制方法相匹配,
  这个要自己去看data sheet 了,备注不方便详细描叙
  LCD_WR_REG(0x00B0);        //设置LCD显示模式及分辨率
  LCD_WR_Data(0x0018);        // 使能FRC 0X0018 18bit LCD控制
  LCD_WR_Data(0x0000);     //TFT模式
  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);                        //RGB顺序串行TFT接口
  LCD_WR_REG(0x00B4);        //设置  水平显示时间参数
  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);  //Set LPS 显示开始位
  LCD_WR_Data(LPS&0X00FF);
  LCD_WR_Data(0x0000);         //TFT mode下,如此设置
  LCD_WR_REG(0x00B6);        //设置        垂直显示时间参数
  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);    //设置从主机读取指令顺序,可以省略,上电默认为0
  LCD_WR_Data(0X000);
  LCD_WR_REG(0x00F0); //pixel data interface  设置像素数据接口为16位
  LCD_WR_Data(0x003); //03为 565 的16位通讯。
  第五步,可选。设置图形后处理。
  LCD_WR_REG(0x0021);        //进入图形颜色翻转模式        
  LCD_WR_REG(0x00BC);//设置图像后处理
  LCD_WR_Data(0x0080);//对比度
  LCD_WR_Data(0x0080);//亮度
  LCD_WR_Data(0x0080);//饱和度值  //
  LCD_WR_Data(0x0001);//处理机允许
  最后一步,背光设置,也是屏幕亮起来的一步。
   
  在设置之前呢,要记得先清理屏幕。不然显示出来的就是以前残留在LCD的像素数据。
  TFT_CLEAR(0X00); //清屏函数,参数是颜色数值
  背光设置
  LCD_WR_REG(0x00BE); //set PWM控制
  LCD_WR_Data(0x0006);        //PWM频率 = PLL / (256* 0x06) /256        
  LCD_WR_Data(0x00ff); // PWM占空比设置
  LCD_WR_Data(0x09); //DBC 控制PWM 使能
  LCD_WR_Data(0xFF); //DBC手动亮度设置
  LCD_WR_Data(0x00); //DBC 最小亮度设置
  LCD_WR_Data(0x00); //Brightness prescaler :off
        
  LCD_WR_REG(0xD4); //设置每个等级的电源阀值
  //TH1 = display width * display height * 3 * 0.1 /16
  //480*272 * 3 * 0.1 /16 =990H
  LCD_WR_Data(0x00); //
  LCD_WR_Data(0x09); //
  LCD_WR_Data(0x90); //
  
  //TH2 = display width * display height * 3 * 0.25 /16
  //480*272 * 3 * 0.25 /16 =17E8H
  LCD_WR_Data(0x00); //
  LCD_WR_Data(0x17); //
  LCD_WR_Data(0xE8); //
  //TH3 = display width * display height * 3 * 0.6 /16
  //480*272 * 3 * 0.6 /16 =3960H
  LCD_WR_Data(0x00); //
  LCD_WR_Data(0x39); //
  LCD_WR_Data(0x60); //
                 
  LCD_WR_REG(0x00d0);//设置动态背光控制配置
  LCD_WR_Data(0x000d);         //使能
  LCD到了这里就亮起来了,显示模块就可以正常工作了。

回帖(4)

潘斯凯

2019-10-14 09:32:35
留个脚印在这里。
举报

李林臻

2019-10-14 09:39:16
谢谢楼主的分享
举报

张丽

2019-10-14 09:54:41
    我来学习的;
举报

俞敏东

2019-10-14 10:08:40
你好,有没有关于DSP方面的程序
举报

更多回帖

发帖
×
20
完善资料,
赚取积分