关于ssd1963显示控制器的LCD驱动程序

概要

LCD屏显示驱动程序

整体架构流程

熟悉开发屏幕显示的学者应该了解屏幕的开发几个要点,流程不是太复杂,这里我们只用文字介绍下总体框架流程,即根据屏的控制器的时序写好发命令和数据的接口即可。

技术名词解释

  • 时序:广义上即指数据发送的时间顺序,狭义上可以理解为单片机开发中的意义为当主机要发某种数据数据时,需要满足什么样的条件。

技术细节

如本文前文所述,主要是按照屏幕控制器的时序来编写发送指令和数据的接口,一般屏的初始化即对屏的各种参数设置,都是发送屏的指令。
ssd1963并口8080写时序

void LCD_Init(void)
{
      LCD_WriteCommand(0xe2);                        //config PLL to 200MHz
	  LCD_WriteData(0x3B);
	  LCD_WriteData(0x02);
	  LCD_WriteData(0x04);
	  Delay_ms(1);
	  LCD_WriteCommand(0xe0);                    // enable PLL
	  LCD_WriteData(0x01);
	  Delay_ms(10);
	  LCD_WriteCommand(0xe0);                    // switch to use PLL clock
	  LCD_WriteData(0x03);
	  Delay_ms(1);
	  
	  LCD_WriteCommand(0x11);                           // exit_sleep_mode
	  LCD_WriteCommand(0x13);                           // enter_normal_mode (exit_partial_mode)
	  LCD_WriteCommand(0x20);                           // exit_invert_mode
	  LCD_WriteCommand(0x38);                           // exit_idle_mode (using full color)
	  
	  LCD_WriteCommand(0xB8);                           // set_gpio_conf
	  LCD_WriteData(0x0f);                           // GPIO[0~3] controlled by host
	  LCD_WriteData(0x01);                          // GPIO as normal GPIO
	  LCD_WriteCommand(0xba);                        // GPIO[0~3]=0001, TFT /DISPOFF set to Hi
	  LCD_WriteData(0x01);
	  Delay_ms(1);
	  LCD_WriteCommand(0xba);                          // GPIO[0~3]=0011, enable backlight booster
	  LCD_WriteData(0x03);
	  Delay_ms(1);
	  
	  LCD_WriteCommand(0xf0);                      // set_pixel_data_interface (MCU) 16bit(5:6:5)
	  LCD_WriteData(0x03);
	  LCD_WriteCommand(0xb0);                           // set_lcd_mode
	  LCD_WriteData(0x00);
	  LCD_WriteData(0x20);
	  
	  LCD_WriteData(0x03);
	  LCD_WriteData(0x1f);           // panel size 800-1
	  LCD_WriteData(0x01);
	  LCD_WriteData(0xdf);           // panel size 480-1
	  LCD_WriteData(0x00);                        // odd line and even line are in RGB seq
	  
      LCD_WriteCommand(0xb4);                           // set_hori_period

      LCD_WriteData(0x03);
      LCD_WriteData(0x9f);           // total pluse per line, HT=928-1

      LCD_WriteData(0x00);
      LCD_WriteData(0x58);           // horizontal back porch, HPS=88

      LCD_WriteData(0x2f);           // HPW=48-1 (suggested value)
      LCD_WriteData(0x00);
      LCD_WriteData(0x00);           // LPS=0x0000(default), not use
      LCD_WriteData(0x00);           // LPSPP=0x00(default), not use

      LCD_WriteCommand(0xb6);        // set_vert_period
      LCD_WriteData(0x02);
      LCD_WriteData(0x0c);           // total line per frame, VT=525-1


      LCD_WriteData(0x00);
      LCD_WriteData(0x20);           // vertical back porch, VPS=32

      LCD_WriteData(0x02);                        // VPW=3-1(suggest value)
      LCD_WriteData(0x00);
      LCD_WriteData(0x00);
      LCD_WriteData(0x00);           // FPS=0x0000(default),not use

      LCD_WriteCommand(0xe6);        // config PCLK=32ns(PLL@200MHz)
      LCD_WriteData(0x02);
      LCD_WriteData(0x70);
      LCD_WriteData(0x00);

      LCD_WriteCommand(0x36);        // set_address_mode
      LCD_WriteData(0x00);           // top to bottom, left to right, RGB, normal
		
    // 设置显示屏开启
      LCD_WriteCommand(0x29);
}
在这里插入代码片

小结

总的来说程序很简单,一个点屏的小程序,但其中有两个注意点,一是要注意硬件的连接,根据ssd1963的手册说明,当CONF引脚拉低或拉高,对应的时序选择都将不同,二是该控制器支持锁存功能,如果使用锁存功能和并口时序的时候,要注意发送16位数据时先发送高8位,后发送低8位。

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值