嵌入式学习小组
直播中

毕凯

7年用户 159经验值
私信 关注

请问怎样去设计一种高亮度显示系统?

本文介绍一种基于ARM9的高亮度显示系统设计方案。

回帖(1)

徐晨曦

2021-6-7 10:42:03
  1 引言
  Samsung公司推出的16/32位RISC处理器S3C2410A为手持设备和一般类型应用提供了低功耗、低价格、高性能小型微控制器的解决方案,适用于信息家电、PDA,手持设备、移动终端等领域。LQ104V1DG61是SHARP公司年产的高亮度TFT有源矩阵液品显示器,该模块包括TFT-LCD显示屏、驱动电路和背光源,分辨率为640x480像素,可显示262144种色。本显示系统在工业控制方面有着广泛的应用前景。
  2 TFT-LCD模块的时序要求和时间参数
  2.1 TFT-LCD模块的时序要求
  从控制时序图可以获得电路在任何时刻各信号的状态信息。在控制时序图的帮助下我们可以了解模块的硬件电路是按照什么方式工作的。通过适当的顺序设置系统中的寄存器可以控制模块实现需要的功能。TFT-LCD模块的控制时序如图1所示。
  
  图1 LQ104V1DG61控制时序图
  2.2 TFr-LCD模块的时间参数
  掌握了主要时间参数就知道怎么设置寄存器的值,如何让模块正常工作以及发挥最好的效果。LQ104V1DG61的主要时间参数如表1所示。
  表1 LQ104V1DG61主要时间参数
  
  3 硬件电路设计
  
  图2 S3C2410A与LQ104V1DG61模块连接示意图
  S3C2410A内部自带一个LCD驱动控制器。LQ104V1DG61要求其电源电压Vdd典型值为3.3V/5V,LCD数据和控制信号的高电平输入电压 Vin在2.3-5.5V范围内,低电平输入电压vin则在-0.3-0.9v范围内,可以直接与S3C2410A相连,这也是本电路非常简单的原因,不需要设计许多辅助电路,连接电路图如土2所示。
  4 系统软件设计
  S3C2410A处理器中的LCD控制器内含寄存器LCDCON1、LCDCON2、LCDCON3 LCDCON4和LCDCON5。
  VSYNC和HSYNC脉冲的产生依赖于LCDCON2/LCDCON3寄存器的HOZVAL域和LINEVAL域的配置。HOZVAL和LINEVAL的值由LCD屏的尺寸决定:
  HOZVAL=水平显示尺寸-1 (1)
  LINEVAL=垂直显示尺寸-1 (2)
  VCLK信号的频率取决于LCDCON1寄存器中的CLKVAL域(CLKVAL的最小值是0)
  VCLK(Hz)=HCLK/[(CLKVAL+1)x2] (3)
  一般情况下,帧频率就是VSYNC信号的频率,它与LCDCON1和LCDCON2/LCDCON3/LCDCON4寄存器的VSYNC、VB2PD、VFPD、LINEVAL、HSYNC、HBPD、HFPD、HOZVAL 和CLKVAL都有关系。大多数LCD驱动器都需要与显示器相匹配的帧频率,帧频率计算公式如下:
  FrameRate=1{[(VSPW+1)+(VBPD+1)+(LINEVAL+1)+(VFPD+1)]x[(HSPW+1)+(HBPD+1)+(HFPD+1)+(HOZVAL+1)1 x[2×(CLKVAL+1)/{HCLK)]} (4)
  对于LQ104V1DG61,寄存器的具体设置如下:
  (1)在LCDCON1中,CLKVAL是时钟参数,用于计算VCLK,对于LQ104V1DG61,域值取0。PNRMODE是显尔模式参数,域值取3,表示所用模块是TFT型。BPPMODE足每个象素的数据位数参数,对于LQ104V1DG61模块,设计时可设咒成16bpp,所以域值取12。
  (2)在LCDCON2中,VBPD为Ver Back Porch,取为25。LINEVAL为Ver Pixels,域值取479。VFPD为Ver Front Porch,该域值取2,VSPW为Vertical Sync Time,该域值取2。
  (3)在LCDCON3中,HBPD为Hor Back Parch,域值取40。HOZVAL为ver Pixels,域值取639,HFPD为Hor Front Porch,域值取8。
  (4)在LCDCON4中只需要设置HSPW即可,它为Hor SyncTime,域值取96。
  (5)在LCDCON5中,BPP24BL用于决定24bpp视频存储器的大小端模式,域值取0,代表小端模式。FRM565决定16hpp视频输入数据的格式,取0,代表5:5:5:1模式。INVVLINE决定VSYNC信号的脉冲极性,对于LQl04V1DG61选1。INVVFRAME决定VFRAME信号的脉冲极性,对于LQ104V1DG61选1。
  在基于S3C2410A的硬件平台上安装嵌入式Linux操作系统,为了使LCD能够正常显示,还需要在嵌入式Linux系统下开发LCD的驱动程序。
  Framebuffer是Linux2.4内核的一种显示驱动程序接口。这种接口将显示设备抽象为帧缓冲区,用户可以将它看成是显示内存的一个映象。在使用帧缓冲时,Linux将显卡置于图形模式下。
  根据基于FrameBuffer机制的S3C2410Afb驱动程序进行调试,获得成功,下面是部分代码,可对显示屏幕进行初始化并设置LCD控制寄存器的值:
  staticstructS3C2410Afb_mach_infoxxx_sin_info_initdata={pixclock:39721,
  bpp:16,
  xres:640,
  yres:480,
  hsync_len:96,
  vsync_len:2,
  left_margin:40,
  upper_margin:24,
  right_margin:32,
  lower_margin:11,
  sync:0,
  cmap_static:1,
  reg:{//设置LCD控制寄存器的值
  lcdcon1:LCD1_BPP_16T|LCD1_PNR_TFT|LCD1_CLKVAL(0),
  lcdcon2:LCD2_VBPD(25)|LCD2_VFPD(2)|LCD2_VSPW(2),
  lcdcon3:LCD3_HBPD(40)|LCD3_HFPD(8),
  lcdcon4:LCD4_HSPW(96)|LCD4_MVAL(13),
  lcdcon5:LCD5_FRM565|LCD5_INVVLIEN|LCD5_INVVFRAME|LCD5_HWSWP|LCD5_PWRER, },
  };
  5 实验结果
  
  图3液晶模块显示结果
  从图3可以看到系统显示的静态画面,画面清晰稳定,达到预期效果,从而证明实验的硬件设计和操作系统中的软件设计是成功的,本方案具有可行性。
  6 结论
  本文创新点在于:在显示模块的选取上充分考虑到处理器显示接口的特点,使得硬件设计简单明了,搭建了嵌入式液晶开发底层平台,成功解决液晶模块的控制问题。在现实应用中,对该方案稍加修改就可用于很多不问场合,对于本系统的研究很有意义。
举报

更多回帖

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