S5PV210 LCD显示
第一节 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显示的更多相关文章
- 内核启动后,lcd显示logo失败
针对-s5pv210,但对其他平台也使用 lcd显示logo失败,若显示成功默认的logo是一只企鹅,但是串口打印“Start display and show logo”,但是LCD屏没有显示 ...
- LCD显示方向
一.ILI9341内存到显示地址的映射 本文只讨论“正常显示”,不讨论“垂直滚动显示”模式. 可以看到物理内存被两个指针访问,行指针和列指针,行指针范围从000h到013Fh,列指针范围为0000h到 ...
- Raspberry PI Model B+ (LCD显示CPU温度)
Title:Raspberry PI Model B+ (LCD显示CPU温度) --2015-01-29 17:44 买了块连接Raspberry PI Model B+的LCD显示器,上面没写C ...
- mini2440裸试验—计算器(LCD显示,触摸屏突破)
关于Pait_Bmp(x0, y0, x, y, BMPaddr);函数 像素图在屏幕左上角为(0,0),Pait_Bmp中的x0.y0分别像素点初始位置,x,y为BMP图片的X,Y的大小.BMPad ...
- LCD显示GPS时钟[嵌入式系统]
夏任务102:做一个GPS钟 实验要求 用RPi的串口连接一个GPS模块,从GPS得到实时时间,在7段数码管或LCD上显示 实验工具: Raspberry Pi Model B主机, 8G c10 S ...
- 2.数码相框-编码(ASCII/GB2312/Unicode)介绍,并使LCD显示汉字字符(2)
在上章-学习了数码相框的框架分析(1)了 本章主要内容如下: 1)熟悉ASCII/GB2312/Unicode编码 2)写应用程序,使LCD显示汉字和字符 大家都知道,数据传输的是二进制,而字符和汉字 ...
- LCD显示异常分析——撕裂(tear effect)【转】
转自:LCD显示异常分析--撕裂(tear effect) 概述 在上一篇<LCD显示异常分析--开机闪现花屏>中,我们一起分析了开机花屏的问题,在这一篇中,我将对LCD撕裂(tear e ...
- LCD显示异常分析——开机闪现花屏【转】
转自LCD显示异常分析--开机闪现花屏 最近在工作中,有同事遇到LCD开机瞬间会闪现雪花屏的问题,而这类问题都有个共同点,那就是都发生在带GRAM的屏上,同样的问题,在休眠唤醒时也会出现. 其实这类问 ...
- TFT LCD显示原理详解
<什么是液晶> 我们一般认为物体有三态:固态.液态.气态,其实这只是针对水而言,有一些有机化和物 还有介于固态和液态中间的状态 就是液晶态,如下图(一): ...
随机推荐
- 最最最最最基础的SQL Server
--创建数据库(命名不允许为汉字开头.不允许为数字开头.不允许为符号开头) create database Class --执行完成进行下一步点加go go --定位数据库 use Class --创 ...
- MUI 选项卡切换+下拉刷新动态 完整实现一例
前台最终呈现的代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> < ...
- Java:返回当前内存信息
今天有个小程序想获得当前系统可用的内存信息,到百度搜索了一下,看到很多人都在说要采用JNI来做,JAVA本身没办法实现,经过半个多小时的搜索,终于找到了,原来Java本身已经有这个功能了.唉,看来是很 ...
- 织梦DedeCMS信息发布员发布文章阅读权限不用审核自动开放亲测试通过!
文章发布员在织梦dedecms后台添加文章时却要超级管理员审核,这无疑是增加了没必要的工作. 登录该账号发布文章你会发现该文章显示的是待审核稿件,且并没有生成静态文件,在前台是看不到这篇文章的,而多数 ...
- 深入flask中的request
缘起 在使用flask的时候一直比较纳闷request是什么原理,他是如何保证多线程情况下对不同请求参数的隔离的. 准备知识 在讲request之前首先需要先理解一下werkzeug.local中的几 ...
- 设计模式---对象创建模式之抽象工厂模式(Abstract Factory)
一:概念 抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的.抽象工厂模式可以向客户端提供一个接口,使得客户端在不必指定产品的具体类型的情况下,能够创建多个产品族的产品对象 二:动机 在软件系统 ...
- C++面试集锦( 面试被问到的问题 )
1. C 和 C++ 区别 2. const 有什么用途 主要有三点: 1:定义只读变量,即常量 2:修饰函数的参数和函数的返回值 3: 修饰函数的定义体,这里的函数为类的成员函数,被cons ...
- JAVA记录-redis缓存机制介绍(三)
Redis 事务 Redis 事务可以一次执行多个命令, 并且带有以下两个重要的保证: 事务是一个单独的隔离操作:事务中的所有命令都会序列化.按顺序地执行.事务在执行的过程中,不会被其他客户端发送来的 ...
- for、foreach和Iterator区别及ConcurrentModificationException异常
(问:1.for.foreach和Iterator遍历有什么区别 2.遍历删除ConcurrentModificationException异常.) 1.在形式上 for的形式是 for(int ...
- HDU - 4370 0 or 1
0 or 1 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Subm ...