第一节 S5PV210 LCD控制器
要使一块LCD正常显示文字或图像,不仅需要LCD驱动器,还需要相应的LCD控制器。
LCD控制器的主要作用是将在系统存储器中的显示缓冲区中的LCD图像数据传送到外部LCD驱动器,
并产生必要的控制信号,例如VSYNC、HSYSNC、VCLK。S5PV210内部集成了LCD控制器,它结构图如下:

主要有VSFR,VDMA,VPRCS,VTIME和视频时钟产生器几个模块组成:
1) VSFR由121个可编程寄存器组,一套gamma LUT寄存器组(包括64个寄存器),一套i80命令寄存器组(包括12个寄存器)和5块256*32的调色板存储器组成,主要用于lcd控制器的配置;
2) VDMA是LCD专用的DMA传输通道,可以自动从系统总线上获取视频数据传输到VPRCS,无需CPU干涉;
3) VPRCS收到数据后组成特定的格式(如16bpp或24bpp),然后通过数据接口传送到外部LCD;
4) VTIME模块又可编程逻辑组成,负责不同的LCD驱动器的接口时序控制需求,VTIME模块产生VSYNC、HSYNC、VCLK等信号;
S5PV210的LCD控制器的主要特性如下:
1) 支持3种接口:RGB/i80/YUV;
2) 支持可编程的DMA;
3) 5个256*32 bit调色板
4) 虚拟屏最大可达16MB
5) 支持透明叠加(overlay)
6) 支持多种规格和分辨率的LCD

第二节 程序详细讲解
完整代码见目录详细代码下载链接。
1. main.c
共3个步骤:
第一步: 初始化串口;
第二步: 调用lcd_init()初始化LCD;
第三步: 调用lcd_draw_bmp()在LCD上描绘图片。图片的数据保存在一个数组中,我们只需要把数组中的值一个个的读出来并写到FrameBuffer中即可;
第四步: 画字符,具体是调用了printf()打印“FriendlyARM”。因为我们在printf()里不仅调用了putc(),还调用了字符描绘函数lcd_draw_char(),所以打印信息即会显示在串口终端也会显示在LCD上。
2. lcd.c
函数lcd_draw_char()用于描绘字符,其主要步骤如下:
第一步 获得字模。以传进来的参数为下标,从字模数组fontdata_8x16里取出对应的字模,数组fontdata_8x16的定义位于font_8x16.c中,这个文件时从linux内核中抽出来的;
第二步 检查是否需要回车换行。当遇到’\n’时表示换行,当遇到’\r’表示回车;
第三步 在8x16个像素里描绘一个字符。font_8x16.c里定义的每一个字模都是由8x16bit组成,每1bit对应一个像素,如果某bit为1则调用lcd_draw_pixel()将该像素描蓝,为0则不描;
第四步 光标移动到下一个8x16像素的位置;
函数lcd_draw_bmp()用于描绘图片,其主要步骤如下:
第一步: 从数组中获取像素的颜色值;
第二步: 调用lcd_draw_pixel()将数组中的值一个个地在LCD上描绘出来,最后组成一张图片;
第三节 实验现象
LCD上会显示绚丽的图片,并且会有“FriendlyARM”的字样,效果如下:

详细代码下载链接:http://download.csdn.net/detail/klcf0220/6045023

S5PV210 LCD显示的更多相关文章

  1. 内核启动后,lcd显示logo失败

    针对-s5pv210,但对其他平台也使用 lcd显示logo失败,若显示成功默认的logo是一只企鹅,但是串口打印“Start display and show logo”,但是LCD屏没有显示    ...

  2. LCD显示方向

    一.ILI9341内存到显示地址的映射 本文只讨论“正常显示”,不讨论“垂直滚动显示”模式. 可以看到物理内存被两个指针访问,行指针和列指针,行指针范围从000h到013Fh,列指针范围为0000h到 ...

  3. Raspberry PI Model B+ (LCD显示CPU温度)

    Title:Raspberry PI Model B+ (LCD显示CPU温度)  --2015-01-29 17:44 买了块连接Raspberry PI Model B+的LCD显示器,上面没写C ...

  4. mini2440裸试验—计算器(LCD显示,触摸屏突破)

    关于Pait_Bmp(x0, y0, x, y, BMPaddr);函数 像素图在屏幕左上角为(0,0),Pait_Bmp中的x0.y0分别像素点初始位置,x,y为BMP图片的X,Y的大小.BMPad ...

  5. LCD显示GPS时钟[嵌入式系统]

    夏任务102:做一个GPS钟 实验要求 用RPi的串口连接一个GPS模块,从GPS得到实时时间,在7段数码管或LCD上显示 实验工具: Raspberry Pi Model B主机, 8G c10 S ...

  6. 2.数码相框-编码(ASCII/GB2312/Unicode)介绍,并使LCD显示汉字字符(2)

    在上章-学习了数码相框的框架分析(1)了 本章主要内容如下: 1)熟悉ASCII/GB2312/Unicode编码 2)写应用程序,使LCD显示汉字和字符 大家都知道,数据传输的是二进制,而字符和汉字 ...

  7. LCD显示异常分析——撕裂(tear effect)【转】

    转自:LCD显示异常分析--撕裂(tear effect) 概述 在上一篇<LCD显示异常分析--开机闪现花屏>中,我们一起分析了开机花屏的问题,在这一篇中,我将对LCD撕裂(tear e ...

  8. LCD显示异常分析——开机闪现花屏【转】

    转自LCD显示异常分析--开机闪现花屏 最近在工作中,有同事遇到LCD开机瞬间会闪现雪花屏的问题,而这类问题都有个共同点,那就是都发生在带GRAM的屏上,同样的问题,在休眠唤醒时也会出现. 其实这类问 ...

  9. TFT LCD显示原理详解

    <什么是液晶> 我们一般认为物体有三态:固态.液态.气态,其实这只是针对水而言,有一些有机化和物 还有介于固态和液态中间的状态 就是液晶态,如下图(一):                 ...

随机推荐

  1. [IOI2018] seats 排座位

    [IOI2018] seats 排座位 IOI2018题解 压缩状态思想很不错的 每次把原来的贡献减掉,新来的再加上 最多涉及10个点 注意: 1.去重 2.下标从0开始 3.线段树初始的最小值个数都 ...

  2. C# ADO.NET与面向对象

    软件开发的三层:界面层,业务逻辑层,数据访问层: 数据访问层:项目添加App_Code文件夹: 实体类:根据数据库表结构,类名和数据库表名一致: 每个成员变量要与数据库表的列相对应,对象正好可以列为一 ...

  3. C# 推箱子游戏&对战游戏

    推箱子游戏提纲,只有向右向上的操作,向左向下同理,后期需完善. namespace 推箱子 { class Program { static void Main(string[] args) { // ...

  4. 在 CentOS 6.x 上安装最新版本的 git

    在 CentOS 的默认仓库中有git,所以最简单的方法是: $ sudo yum install git 这种方法虽然简单,但是一般仓库里的版本更新不及时,比如 CentOS 仓库中的 git 最新 ...

  5. 精确度量Linux下进程占用多少内存的方法

    背景 在Linux中,要了解进程的信息,莫过于从 proc 文件系统中入手去看. proc的详细介绍,可以参考内核文档的解读,里面有很多内容 yum install -y kernel-doc cat ...

  6. 基于pycaffe的网络训练和结果分析(mnist数据集)

    该工作的主要目的是为了练习运用pycaffe来进行神经网络一站式训练,并从多个角度来分析对应的结果. 目标: python的运用训练 pycaffe的接口熟悉 卷积网络(CNN)和全连接网络(DNN) ...

  7. mysql表备份的一种方式

    前提: 最近测试环境shop表经常出现表损坏不能正常查询,通过mysql的修复方法,暂时有效.故做该表的迁移操作. 思路是: 停止数据库的操作 1.备份老表.  2.创建一个结构一样的表. 3.将老表 ...

  8. MYCAT扩容

    一.原架构图: 二.扩容 在HOST1上新增节点db_user2 在HOST2上新增节点db_user2 三.操作步骤 1.mycat 所在环境安装 mysql 客户端程序 2.mycat 的 lib ...

  9. Swift学习笔记8--Optional Chaining

    Optional Chaining 自判断链接(Optional Chaining)是一种可以请求和调用属性.方法及子脚本的过程,它的自判断性体现于请求或调用的目标当前可能为空(  nil ).如果自 ...

  10. 愉快且方便的处理时间-- LocalDate

    java中做时间处理时一般会采用java.util.Date,但是相比于Date来说,还有更好的选择 -- java.time.LocalDate. 这是jdk8中新增的日期处理类,同时新增的还有ja ...