热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

S3C6410LCD控制器

S3C6410LCD控制器1、LCD的种类。LCD(LiquidCrystalDisplay),即液晶显示器,是一种采用了液晶控制透光度技术来实现的彩色

S3C6410     LCD 控制器


1、LCD的种类。 LCD(Liquid Crystal Display),即液晶显示器,是一种采用了液晶控制透光度技术来实现的彩色的显示器。LCD有多种类型,如STN、TFT、LTPS TFT、OLED等。


  • STN(Super Twisted Nematic,超扭曲向列)
  • TFT(Thin Film Transistor,薄膜晶体管)
  • LTPS(Low Temperature Polycrystalline Silicon,低温多晶硅)由TFT衍生的新一代技术产品,可以获得更高的分辨率和更丰富的色彩。
  • OLED(Organic Light Emitting Diode,有机发光二极管)

2、LCD的接口


CPU或显卡发出的图像数据是TTL信号。LCD本身接收的也是TTL信号。由于TTL信号在高速率的长距离传输时性能不佳,抗干扰能力也比较差,后来又提出了多种接口,比如LVDS,TDMS,DVI,和DEP等。他们实际上只是将CPU或显卡发出的TTL信号编码成各种信号以便传输,在LCD那边将接收到的信号经行解码得到TTL信号。




TFT LCD的TTL信号 有24跟数据线,对应像素值中的每一位。

  • VSYNC: 垂直同步信号
  • HSYNC: 水平同步信号
  • HCLK: 像素时钟信号
  • VD[0:23]: 数据信号
  • LEND: 行结束信号(这个不是必须的)
  • PWREN: 电源开关信号

3、S3C6410 LCD控制器

结构框图:

                                     

DISPLAY controller supports 4 types of display device. 


  • One type is the conventional RGB-interface, which uses RGB data, Vertical/horizontal sync, data valid signal and data sync clock. 
  • The Second type is I80 Interface which uses address, data, chip select, read/write control and register/status indicating signal. In this type of LCD driver it has a frame buffer and has the function of self-refresh, therefore DISPLAY controller updates one still image by writing only one time to the LCD. 
  • The Third type is ITU-R BT.601 interface. ITU-R BT.601 interface uses YUV data, Vertical/horizontal sync, optional Field signal, data valid signal and data sync clock.
  • The fourth type is FIFO interface with TV Encoder.

4、显示数据的组织格式

    对于屏幕上的一整幅图像,它的数据格式是如何组织的呢?无论是CRT显示器还是LCD显示器,他们都有相同的概念。

    一副图像被称为一帧,每帧有多行组成,每行由多个像素组成,每个像素的颜色使用若干位的数据来表示。对于单色显示器,每个像素使用1位来表示,称为1BPP;对于256色显示器,每个像素使用8位来表示,称为8BPP;

    显示器从屏幕的左上方开始,一行一行地取出每个像素的数据并显示出来,当显示到一行的最右边时,跳到下一行的最左边开始显示下一行;当显示完所有行后,跳到左上方开始下一帧。显示器沿着“Z”字行的路线经行扫描,使用HSYNC,VSYNC信号来控制扫描路线的跳转,HSYNC表示“是跳到最左边的时候了”,VSYNC表示“是跳到最上边的时候了”。

    注:在工作中的显示器上,可以在四周看见黑色的边框。上方的黑框是因为当发出 VSYNC信号时,需要经过若干行之后第一行数据才有效;下方的黑框是因为现实完所有行的数据时,显示器还没有扫描到最下边,这是数据已经无效;左边的黑框是因为当发出HSYNC信号时,需要经过若干像素之后第一列数据才有效;右边的黑框是因为现实完一行的数据时,显示器还没扫描到最右边,这时数据已经无效。

                                                              

                        有效数据的行数、列数,它与VSYNC,HSYNC信号之间的距离等 都是可以设置的,这有显卡来完成。

    

    5、LCD控制器的操作


                                                         

    时序图中各信号的时间参考都可以在LCD控制寄存器中设置,VCLK作为时序图的基准信号,它的频率可以如下计算:


    将VSYNC、HSYNC、VCLK等信号的时间参数设置好之后,并将帧内存地址告诉LCD控制器,它既可自动地发起DMA传输从帧内存中得到图像数据,最终在上述信号的控制下出现在数据总线上。


The following registers are used to configure DISPLAY controller:
1. MOFPCON: SEL_BYPASS[3] value @ 0x7410800C must be set as ‘0’(normal mode) instead of ‘1’(by-pass mode).


2. SPCON: LCD_SEL[1:0] value @ 0x7F0081A0 must be set as ‘00’ to use Host I/F Style or as ‘01’ to use RGB I/F Style

3. VIDCON0(Video control 0 register): configure Video output format and display enable/disable.

4. VIDCON1(Video control 1 register): RGB I/F control signal.

5. I80IFCONx: i80-system I/F control signal.

6. ITUIFCON0 : ITU (BT.601) Interface Control

7. VIDTCONx(Video time control 0 register): configure Video output Timing and determine the size of display.

8. WINCONx(Window control 0 register): each window format setting

9. VIDOSDxA, VIDOSDxB(Video Window 0’s position control register): Window position setting

10. VIDOSDxC(Video Window 0’s size control register): alpha value setting

11. VIDWxxADDx(Window 2’s buffer start address register): source image address setting

12. WxKEYCONx(Color key control register): Color key value register

13. WINxMAP(Window color control): window color control

14. WPALCON(Window Palette control register): Palette controls register

15. WxPDATAxx: Window Palette Data of the each Index.


#include "common.h"
#include "regs.h"/*定义三个初始化函数1.初始化GPI和GPJ为LCD作用2.初始化window0每个液晶屏支持五层的window*/
void gpio_init(void);
void common_init(void);
void window0_init(void); void lcd_init(void)
{gpio_init();common_init();window0_init();
}void gpio_init(void)
{GPICON = 0xaaaaaaaa;GPJCON = 0xaaaaaa;/*给LCD上电,把背光灯打开*//*参考S3C6410手册和母版电路图*/GPFCON &= ~(3 <<28);GPFCON |= 1 <<28;GPFDAT |= 1 <<14;GPECON &= ~(0xf);GPECON |= 1;GPEDAT |= 1;
}void common_init(void)
{/*配置方法参考S3C6410手册P491*/MIFPCON &= ~(1 <<3);SPCON &= ~3;SPCON |= 1;/*配置发送数据时钟,并打开DISPLAYC,参考S3C6410手册P495*/VIDCON0 = (14 <<6) | (1 <<4) | (3 <<0);/*配置时钟是否翻转,参考S3C6410手册P495*//*参考S3C6410手册P485*//*参考日立LCD手册P14*//* HSYNC高电平有效, VSYNC高电平有效, */VIDCON1 = (1 <<6) | (1 <<5);/*配置时序,参考S3C6410手册P497和P485,日立LCD手册P14*/VIDTCON0 = (1 <<16) | (1 <<8) | (9 <<0);VIDTCON1 = (1 <<16) | (1 <<8) | (40 <<0);/*配置LCD的分辨率大小,参考S3C6410手册P498*/VIDTCON2 = (271 <<11) | (479);
}void window0_init(void)
{
#ifdef BPP565/*注意:这两个寄存器与图片格式相关*//*配置输出数据格式和传送方法以并使能数据发送*//*参考S3C6410手册P499*/WINCON0 = (1 <<16) | (5 <<2) | (1 <<0);/*设置一屏的数据量,参考S3C6410手册P506*/VIDOSD0C = (480 * 272) >> 1;
#elseWINCON0 = (0xb <<2) | (1 <<0);VIDOSD0C = 480 * 272;
#endif/*设置LCD的最大和最小坐标,参考S3C6410手册P506*/VIDOSD0A = 0;VIDOSD0B = (479 <<11) | (271 <<0);/*设置frambuf的首地址*/VIDW00ADD0B0 = FRAM_BUFF;
}/*画点函数:在LCD上画一个点其实就是在这个坐标对应的frambuf内存空间中写入一个合适的值,x代表横坐标,y代表列坐标,后三个参数代表RGB三原色,可根据需要进行配置*/
void draw_point(int x, int y, int red, int green, int blue)
{/*注意:565格式和888格式的区别:一个word的空间可以存放两个565格式的像素点数据一个word的空间可以存放一个888格式的像素点数据*/
#ifdef BPP565short *buf = (void *)FRAM_BUFF;*(buf + y * 480 + x) = (red <<11) | (green <<5) | (blue <<0);
#elseint *buf = (void *)FRAM_BUFF;*(buf + y * 480 + x) = (red <<16) | (green <<8) | (blue <<0);
#endif
}








推荐阅读
  • 本教程涵盖OpenGL基础操作及直线光栅化技术,包括点的绘制、简单图形绘制、直线绘制以及DDA和中点画线算法。通过逐步实践,帮助读者掌握OpenGL的基本使用方法。 ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • DNN Community 和 Professional 版本的主要差异
    本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
  • ImmutableX Poised to Pioneer Web3 Gaming Revolution
    ImmutableX is set to spearhead the evolution of Web3 gaming, with its innovative technologies and strategic partnerships driving significant advancements in the industry. ... [详细]
  • 本文详细解析了Python中的os和sys模块,介绍了它们的功能、常用方法及其在实际编程中的应用。 ... [详细]
  • 获取计算机硬盘序列号的方法与实现
    本文介绍了如何通过编程方法获取计算机硬盘的唯一标识符(序列号),并提供了详细的代码示例和解释。此外,还涵盖了如何使用这些信息进行身份验证或注册保护。 ... [详细]
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • Explore how Matterverse is redefining the metaverse experience, creating immersive and meaningful virtual environments that foster genuine connections and economic opportunities. ... [详细]
  • 本文深入探讨了如何通过调整InnoDB的关键配置参数来优化MySQL的随机IO性能,涵盖了缓存、日志文件、预读机制等多个方面,帮助读者全面提升数据库系统的性能。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • RecyclerView初步学习(一)
    RecyclerView初步学习(一)ReCyclerView提供了一种插件式的编程模式,除了提供ViewHolder缓存模式,还可以自定义动画,分割符,布局样式,相比于传统的ListVi ... [详细]
  • 本文详细介绍了macOS系统的核心组件,包括如何管理其安全特性——系统完整性保护(SIP),并探讨了不同版本的更新亮点。对于使用macOS系统的用户来说,了解这些信息有助于更好地管理和优化系统性能。 ... [详细]
  • 本文详细介绍了 Apache Jena 库中的 Txn.executeWrite 方法,通过多个实际代码示例展示了其在不同场景下的应用,帮助开发者更好地理解和使用该方法。 ... [详细]
  • Scala 实现 UTF-8 编码属性文件读取与克隆
    本文介绍如何使用 Scala 以 UTF-8 编码方式读取属性文件,并实现属性文件的克隆功能。通过这种方式,可以确保配置文件在多线程环境下的一致性和高效性。 ... [详细]
  • 本文详细探讨了JDBC(Java数据库连接)的内部机制,重点分析其作为服务提供者接口(SPI)框架的应用。通过类图和代码示例,展示了JDBC如何注册驱动程序、建立数据库连接以及执行SQL查询的过程。 ... [详细]
author-avatar
大眼睁睁
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有